我有一些数据,我在xslt的for-each循环中输出。我在列表上进行了分页处理,但没有排序选择器。
用户应该能够对2个值(创建的数据和每个项目上的数字字段)进行排序。默认排序方法是创建日期,但是当用户单击“按编号排序”时,列表应该按数字值排序。
但是在select语句中似乎不接受varialbe($ mySort) - 关于我将如何处理这个问题的任何想法?
答案 0 :(得分:2)
<xsl:sort select="*[name() = $mySort]" order="{$myOrder}" />
select表达式必须是有效的文字XPath表达式。无法在XSLT中动态评估XPath,这意味着包含 XPath字符串的变量将无效。
但是,sort属性接受一个字符串,这就是为什么你可以在这里使用一个属性值模板(花括号表达式)。
答案 1 :(得分: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>