2010-02-04 80 views
2

我有一些數據,我輸出在for-each循環在xslt。我有分頁工作在列表上,但不是排序選擇器。XSLT中的動態排序?

用戶應該能夠對2個值(每個項目上創建的數據和一個數字字段)進行排序。默認排序方法是創建日期,但是當用戶單擊「按數字排序」時,列表應該按數字值排序。

但似乎並沒有在select語句中接受varialbe($ mySort) - 關於如何去做這件事的任何想法?

回答

2
<xsl:sort select="*[name() = $mySort]" order="{$myOrder}" /> 

選擇表達式必須是有效的,文字的XPath表達式。 XPath不能在XSLT中動態評估,這意味着包含 XPath字符串的變量將不起作用。

但是,sort屬性接受一個字符串,這就是爲什麼您可以在這裏使用屬性值模板(花括號表達式)的原因。

1

如果你不能得到一個變量爲order屬性工作,你可能不得不這麼做。喜歡的東西:

<xsl:when test="$mySort = 'ascending'"> 
    <xsl:apply-templates> 
    <xsl:sort order="ascending"/> 
    </xsl:apply-templates> 
</xsl:when> 
<xsl:otherwise> 
    <xsl:apply-templates> 
    <xsl:sort order="descending"/> 
    </xsl:apply-templates> 
</xsl:when> 
</xsl:otherwise> 
+0

yeh,我在其他地方看到了這個解決方案 - 問題在於它會讓我的分頁腳本變得糟糕:-( 應該爲排序工作的變量還是? – cJockey 2010-02-04 07:15:17