1

我有一个 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 的变量并测试查询字符串是否存在。如果它确实存在,则将变量设置为其值。如果它不存在,则默认为“onenightavg”。

然后我在排序中使用该变量:

<xsl:sort data-type="number" order="ascending" select="$sortby" />

这行不通。它不会对我的项目进行排序,但是当我将选择硬编码为这样的任何一个值时,它可以工作:

<xsl:sort data-type="number" order="ascending" select="onenightavg" />

我希望能够根据下拉列表中所选选项的值动态排序。

4

1 回答 1

2

这个怎么样:

<xsl:sort data-type="number" order="ascending" select="*[local-name() = $sortby]" />
于 2013-01-08T18:55:46.900 回答