如何将XML标记数据复制到同一XML中的另一个分支中

时间:2015-09-21 20:55:55

标签: xml xslt transformation

我有这样的XML,如下所示:

    <xs:VehicleData>
      <xdd:myData>1234</xdd:myData>
      <xdd:SrcUsrAge>34</xdd:SrcUsrAge>
      <xdd:array>
       ....
       .......
        .....
         <xdd:SrcAge></xdd:SrcAge>
      </xdd:array>
    .....
    </xs:vehicleData>

我尝试使用XSLT将年龄34复制到SrcAge标记中。我无法做到。新手到XSLT。你能帮我吗?真的很感激。这不是作业。

非常感谢。

1 个答案:

答案 0 :(得分:1)

不幸的是,您需要复制所有现有节点,使用XSLT只向该XML添加一个节点,这里是您提出的示例XSL:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://xs.example.com/"
    xmlns:xdd="http://xdd.example.com/" version="2.0">
    <xsl:output indent="yes"/>

    <xsl:template match="/">
        <xsl:element name="xs:vehicleData">
            <xsl:variable name="srcUsrAge" select="//xdd:SrcUsrAge/text()"/>
            <xsl:element name="xdd:myData">
                <xsl:value-of select="//xdd:myData/text()"/>
            </xsl:element>
            <xsl:element name="xdd:SrcUsrAge">
                <xsl:value-of select="$srcUsrAge"/>
            </xsl:element>
            <xsl:element name="xdd:array">
                <xsl:element name="xdd:SrcAge">
                    <xsl:value-of select="$srcUsrAge"/>
                </xsl:element>
            </xsl:element>
        </xsl:element>
    </xsl:template>

</xsl:stylesheet>

我必须声明测试命名空间以使用XML:

xmlns:xs="http://xs.example.com/"
xmlns:xdd="http://xdd.example.com/"

随时改变它们。