使用xslt进行xml特定标记转换

时间:2014-03-25 11:19:58

标签: xml xslt

我输入的xml文件:

    <?xml version='1.0' encoding='utf-8'?>
     <document form='def'>
    <item name="aaa">
        <text>value1</text>
      </item>
     <item name="bbb">
        <text>value2</text>
      </item>
    </document>

所需的xml文件作为输出:

<?xml version='1.0' encoding='utf-8'?>
<document form='def'>             
    <CRSCINPUT>
        <aaa>
            value1
        </aaa>
    </CRSCINPUT>
</document>

请提供xslt文件进行转换。

我只想更改名称为&#34; aaa&#34;的特定标签。其他标签将保持不变。

1 个答案:

答案 0 :(得分:0)

如果是这种情况,请尝试以下样式表:

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

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

            <!-- then match the node that you want to change -->
    <xsl:template match="item[@name='aaa']">
        <CRSCINPUT>
            <xsl:element name="{@name}">
                <xsl:value-of select="."/>
            </xsl:element>
        </CRSCINPUT>
    </xsl:template>
</xsl:stylesheet>

这导致:

<?xml version="1.0" encoding="utf-8"?>
<document form="def">
   <CRSCINPUT>
      <aaa>value1</aaa>
   </CRSCINPUT>
   <item name="bbb">
      <text>value2</text>
   </item>
</document>