我正在尝试使用xslt转换xml代码。 以下是我的XML结构:
<Response>
<Case>
<CaseID>...</CaseID>
...
<BillStatusCode typecode="1">type description</BillStatusCode>
</Case>
</Response>
我想把它转换成这样的东西:
...
<BillStatusCode>
<BillStatusCode>type description</BillStatusCode>
<typecode>1</typecode>
</BillStatusCode>
XSLT代码:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@*">
<xsl:element name="{name()}">
<xsl:value-of select="."/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
它给了我这个输出:
<Response>
<BillStatusCode>
<typecode>1</typecode>type description</BillStatusCode>
</Response>
感谢任何有关此事的帮助。谢谢!
答案 0 :(得分:1)
我并不完全清楚你想要达到的目标。
以下代码可能指向您需要的方向:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="BillStatusCode">
<xsl:copy>
<xsl:element name="{name()}">
<xsl:apply-templates select="node()"/>
</xsl:element>
<xsl:apply-templates select="@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@*">
<xsl:element name="{name()}">
<xsl:value-of select="."/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>