2010-08-16 85 views
1

我不確定這是否是錯誤,或者這只是XSLT排序的工作原理。需要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()可以將字符串轉換爲數字,但我不知道在這種情況下如何使用它。

的我能做些什麼來解決這個任何建議,將不勝感激:)

回答

3

默認xsl:sort元素會按字母順序排序。

你需要用的number一個增值的data-type屬性來指定數字的排序順序:

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

謝謝!我已經使用了這個,但沒有遇到數據類型。 – developer 2010-08-16 16:53:05

+0

@iHeartGreek - 總是看看規格或教程網站。他們將擁有所有的屬性和含義。 – Oded 2010-08-16 16:55:20