需要XSLT排序将某些字符串视为数字

时间:2010-08-16 16:40:21

标签: xslt sorting

我不确定这是否是错误,或者这只是XSLT排序的工作原理。

当我执行以下操作时:

<xsl:apply-templates select="//*[@id&lt;=50000]">
  <xsl:sort select="@id" />
</xsl:apply-templates>

结果不会被分类,就好像它们是数字一样。

例如,我会得到以下结果:

@id 0
@id 1
@id -1
@id 100
@id -100
@id 12345
@id 2
@id -2
@id 200

etc..

但我希望结果如下:

@id -100
@id -2
@id -1
@id 0
@id 1
@id 2
@id 100
@id 200
@id 12345

etc..

如何以数字方式处理结果?

我知道number()可以将字符串转换为数字,但我不知道在这种情况下如何使用它。

对于我可以采取哪些措施来解决这个问题,我们将不胜感激:)

1 个答案:

答案 0 :(得分:3)

xsl:sort元素默认按字母顺序排序。

您需要通过添加值为data-type的{​​{1}}属性来指定数字排序顺序:

number