Xml 使用变量select进行XSLT排序

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

我有一个HTML选择下拉列表:

                <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]" />