对我来说,编写XSLT以获得我想要的输出是一个很大的挑战。
这是我正在测试的 XML输入 .. ..
<aaa id="1">
<bbb id="2">text1</bbb>
<ccc>text2</ccc>
<ddd id="3">
<eee att="4d">text3</eee>
<fff>
<ggg att="3d">
<yyy>text4</yyy>
<iii attr="jj"/>
</ggg>
</fff>
<sss>
<ttt info="Y">
<nnn delete="N">
<mmm>text5</mmm>
</nnn>
</ttt>
</sss>
</ddd>
</aaa>
所需的输出:
<root>
<aaa id="1"/>
<bbb id="2">text1</bbb>
<ccc>text2</ccc>
<ddd id="3"/>
<eee att="4d">text3</eee>
<fff/>
<ggg att="3d"/>
<yyy>text4</yyy>
<iii attr="jj"/>
<sss/>
<ttt info="Y"/>
<nnn delete="N"/>
<mmm>text5</mmm>
</root>
我无法编写通用代码。我的意思是,我的代码必须能够为具有不同标记名称的不同XML文件提供类似的输出。
答案 0 :(得分:5)
这样的东西?
<xsl:template match="/">
<root>
<xsl:apply-templates select="*"/>
</root>
</xsl:template>
<xsl:template match="*">
<xsl:copy>
<xsl:copy-of select="@*|text()"/>
</xsl:copy>
<xsl:apply-templates select="*"/>
</xsl:template>