我有一个看起来像这样的 XML 结构 -
<Root>
<name rank = "1">ABC
<name rank ="1">BCD</name>
</name>
<name rank ="0">XYZ
<name rank ="1">BCD</name>
<name rank ="3">YYZ</name>
<name rank ="0">FEG</name>
<name rank ="0">DEG</name>
</name>
</Root>
我想通过制作它的副本来转换这个 XML,保留层次结构,并按顺序对其进行排序 (1) 按等级 (升序) (2) 如果等级相等,则按名称排序(升序)
改造后的结构应该是这样的。
<Root>
<name rank ="0">XYZ
<name rank ="0">DEG</name>
<name rank ="0">FEG</name>
<name rank ="1">BCD</name>
<name rank ="3">YYZ</name>
</name>
<name rank = "1">ABC
<name rank ="1">BCD</name>
</name>
</Root>
我有以下 XSL,它不保留层次结构或给我正确的排序。有人可以帮我吗?这是我第一次使用 XSL,如果有任何帮助或正确方向的指示,我将不胜感激。
<xsl:template match="/*">
<xsl:copy>
<xsl:for-each select="//name">
<xsl:sort select="@rank" data-type="number" order="ascending"/>
<xsl:sort select="name" order="ascending" />
<xsl:copy-of select="."/>
</xsl:for-each>
</xsl:copy>
</xsl:template>