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" />
これは機能しません。アイテムは並べ替えられませんが、selectを次のような値のいずれかにハードコーディングすると機能します。
<xsl:sort data-type="number" order="ascending" select="onenightavg" />
ドロップダウンで選択したオプションの値に基づいて動的に並べ替えることができるようにしたいと思います。