Xml 使用变量select进行XSLT排序
我有一个HTML选择下拉列表:Xml 使用变量select进行XSLT排序,xml,sorting,xslt,Xml,Sorting,Xslt,我有一个HTML选择下拉列表: <select name="sortby"> <option value=""></option> <option value="onenightavg">Price: High to Low</option> <option value="numb
<select name="sortby">
<option value=""></option>
<option value="onenightavg">Price: High to Low</option>
<option value="number_bedrooms">Bedrooms: High to Low</option>
<option value="number_bathrooms">Bathrooms: High to Low</option>
<option value="max_sleeps">Sleeps: High to Low</option>
</select>
价格:从高到低
卧室:从高到低
浴室:从高到低
睡眠:从高到低
当用户提交时,它会向页面发送URL查询字符串,并将其添加到页面的XML中:
<querystring>
<sortby>number_bathrooms</sortby>
</querystring>
浴室数量
然后在XSLT中设置一个XSL变量:
<xsl:variable name="sortby">
<xsl:choose>
<xsl:when test="/querystring/sortby != ''">
<xsl:value-of select="/querystring/sortby" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="'onenightavg'" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
在上面的XST中,我设置了一个名为$sortby的变量,并测试querystring是否存在。如果确实存在,则将变量设置为其值。如果不存在,则默认为“onenightavg”
然后我在排序中使用该变量:
<xsl:sort data-type="number" order="ascending" select="$sortby" />
这不管用。它不会对我的项目进行排序,但当我将select硬编码为以下任何一个值时,它会起作用:
<xsl:sort data-type="number" order="ascending" select="onenightavg" />
我希望能够根据下拉列表中所选选项的值进行动态排序。这样如何:
<xsl:sort data-type="number" order="ascending" select="*[local-name() = $sortby]" />