2010-02-04 79 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