XPath可以对结点进行排序嘛?
我需要实现对一个结点下的所有子结点按照一个属性进行排序
比如:
<a>
<b c= "1 " />
<b c= "4 " />
<b c= "3 " />
<b c= "2 " />
</a>
希望得到结果为
<a>
<b c= "1 " />
<b c= "2 " />
<b c= "3 " />
<b c= "4 " />
</a>
使用XSLT输出的时候我知道可以使用 <xsl:sort /> 进行排序输出
但是这个文件中需要排序的结点非常多(几千个吧),我只需要输出前10个而已,而且这个文档需要再很多地方用到,所以保存全部结果用xsl输出消耗很多.
我自己写了个函数进行排序,不过效率不高,不知道有没有好点解决办法.
[解决办法]
xpath无法实现排序.
以下XSL实现你要的功能,性能方面,你测试一下。
<?xml version= "1.0 "?>
<xsl:stylesheet version= "1.0 " xmlns:xsl= "http://www.w3.org/1999/XSL/Transform ">
<xsl:template match= "/ ">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match= "a ">
<xsl:apply-templates select= "b ">
<xsl:sort select= "@c "/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match= "b ">
<xsl:variable name= "count " select= "10 "/>
<xsl:if test= "position()<$count ">
<xsl:value-of select= "@c "/> <br />
</xsl:if>
</xsl:template>
</xsl:stylesheet>