我想问如何使用XSLT转换以下XML:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="UTF-8"
omit-xml-declaration="no" indent="no" />
<xsl:template match="/" />
</xsl:stylesheet>
源XML:
<root>
<header>
<version>1</version>
</header>
<line>
<id> 1 </id>
</line>
<line>
<id> 2 </id>
</line>
<subline>
<id> 1 </id>
</subline>
<subline>
<id> 2 </id>
</subline>
</root>
目标:
<root>
<header>
<version>1</version>
</header>
<line>
<id> 1 </id>
</line>
<subline>
<id> 1 </id>
</subline>
<line>
<id> 2 </id>
</line>
<subline>
<id> 2 </id>
</subline>
</root>
等...
感谢您的支持
使用:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/root">
<xsl:copy>
<xsl:apply-templates select="*[not(self::line or self::subline)]"/>
<xsl:apply-templates select="line | subline">
<xsl:sort select="id"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>