我的 xsl:sort 按预期进行排序,但没有提供所需的输出。
这是我的示例输入 xml
<ns3:ASC858_004010 xmlns:ns3="http://sap.com">
<root>
<name1/>
<name2/>
<loops>
<name3/>
<loop mode="2">
<counter>2</counter>
</loop>
<loop mode="1">
<counter>1</counter>
</loop>
<name4/>
</loops>
<name5/>
</root>
</ns3:ASC858_004010>
我的 xslt 是:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="loops">
<xsl:copy>
<xsl:apply-templates select="loop">
<xsl:sort select="counter"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
我正在
<ns3:ASC858_004010 xmlns:ns3="http://sap.com">
<root>
<name1/>
<name2/>
<loops>
<loop mode="1">
<counter>1</counter>
</loop>
<loop mode="2">
<counter>2</counter>
</loop>
</loops>
<name5/>
</root>
</ns3:ASC858_004010>
我想要的输出是
<ns3:ASC858_004010 xmlns:ns3="http://sap.com">
<root>
<name1/>
<name2/>
<loops>
<name3/>
<loop mode="1">
<counter>1</counter>
</loop>
<loop mode="2">
<counter>2</counter>
</loop>
<name4/>
</loops>
<name5/>
</root>
</ns3:ASC858_004010>
name3 和 name4 缺失了。我仅以 name3 和 name4 为例,但在“循环”内的“循环”结构之前和之后可以有更多的元素。
我错过了什么?