自定义XML排序顺序?
问题描述:
我有这样自定义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>
一个XML文件,它按字母顺序排序,并像显示:
A
B
C
但我想用我的自定义排序喜欢看到它:
C
A
B
我看到过类似的问题,并为我提供了答案(xsl代码),但不幸的是没有帮助,如果你能帮助我,我会很高兴! 我可以添加额外的属性/标签/值等
答
这个怎么样:
<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>
我试着在http您的解决方案: //www.w3schools.com/xsl/tryxslt.asp?xmlfile=cdcatalog&xsltfile=tryxsl_sort,它的工作原理,但不是在我的,因为我的文件被馈送到另一个大的报告文件,这是在BIRT设计的许多功能和650行代码:(但是,谢谢你! – Anarkie 2013-03-20 16:29:12
那么,你能向我们展示将执行分类的XSLT部分?应该可以修改它以使用上述方法。 – JLRishe 2013-03-20 16:42:11
没有任何其他XSLT,我添加的唯一一个是你的,我试图将它添加到大的XML文件,但没有被接受,显然我需要更多的练习与XML ... 前3行:' Eclipse BIRT Designer版本2.6.0.v20100531内部版本< 2.6.0.v20100609-1613> ' –
Anarkie
2013-03-20 17:08:07