我有一个像
这样的xml文件<tests>
<test>
<categoryname>A</categoryname>
<region>EU</region>
</test>
<test>
<categoryname>B</categoryname>
<region>EU</region>
</test>
<test>
<categoryname>C</categoryname>
<region>USA</region>
</test>
<test>
<categoryname>C</categoryname>
<region>EU</region>
</test>
</tests>
按字母顺序排序,显示如下:
A
B
C
但我希望通过我的自定义排序来看待它:
C
A
B
我已经看到了类似的问题,并为我应用了给定的答案(xsl代码),但遗憾的是没有帮助,如果你能帮助我,我会很高兴的! 我可以添加额外的属性/标签/值等。
答案 0 :(得分:1)
这是怎么回事:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/*">
<xsl:copy>
<xsl:apply-templates select="test">
<xsl:sort select="string-length(substring-before('|C|A|B|',
concat('|', categoryname, '|')
))"
data-type="number"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
应用于样本输入时,结果为:
<tests>
<test>
<categoryname>C</categoryname>
<region>USA</region>
</test>
<test>
<categoryname>C</categoryname>
<region>EU</region>
</test>
<test>
<categoryname>A</categoryname>
<region>EU</region>
</test>
<test>
<categoryname>B</categoryname>
<region>EU</region>
</test>
</tests>