对我来说,编写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文件提供类似的输出。
最佳答案
像这样的?
<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>