属性从一种元素转移到另一种元素

时间:2019-10-30 07:38:37

标签: xml xslt

需要一些决策模式帮助。无法为简单的目标汇编代码。

我需要什么。

-1在基本XML文件中,我有一个具有唯一ID(非数字,例如'd124914-a402-ab72-949a“)的父元素

-2,然后我有10多个子元素

-3(做什么)

------>获取(通过变量?)此属性值

------>将此ID唯一属性插入到其他10个以上的元素中,除了它们已经存在的属性之外

感谢!

1 个答案:

答案 0 :(得分:0)

考虑以下示例:

XML

<root>
    <parent id="100">
        <child id="1">alpha</child>
        <child id="2">bravo</child>
        <child id="3">charlie</child>
    </parent>
    <parent id="200">
        <child id="4">red</child>
        <child id="5">green</child>
    </parent>
</root>

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>

<!-- identity transform -->
<xsl:template match="@*|node()">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
</xsl:template>

<xsl:template match="child">
    <child parent-id="{../@id}">
        <xsl:apply-templates select="@*|node()"/>
    </child>
</xsl:template>

</xsl:stylesheet>

结果

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <parent id="100">
    <child parent-id="100" id="1">alpha</child>
    <child parent-id="100" id="2">bravo</child>
    <child parent-id="100" id="3">charlie</child>
  </parent>
  <parent id="200">
    <child parent-id="200" id="4">red</child>
    <child parent-id="200" id="5">green</child>
  </parent>
</root>

要更好地理解这一点,请阅读有关attribute value templates的信息。

相关问题