2

XSLT 1.0 を使用して HTML に変換された XML ファイルがありますが、ユーザーの選択に従ってデータを並べ替えたいと考えています。選択のためにPHPで変数を設定しましたが、動作しますが、この条件付きソートを行う方法がわかりません。

ここで、変数 $sort_by を使用した私のコード:

        <xsl:for-each select="gpx:gpx/gpx:wpt">
         <xsl:choose>
          <xsl:when test="$sort_by = 'name'">
              <xsl:sort select="grdspk:cache/grdspk:name"/>
          </xsl:when>
          <xsl:when test="$sort_by = 'owner'">
              <xsl:sort select="grdspk:cache/grdspk:owner"/>
          </xsl:when>
          <xsl:when test="$sort_by = 'difficulty'">
              <xsl:sort select="grdspk:cache/grdspk:difficulty"/>
          </xsl:when>
        </xsl:choose>

このコードは機能しません。「そのコンテキスト内では要素の並べ替えは許可されていません」というコンパイル エラーが発生します。

ご協力いただきありがとうございます!

4

1 に答える 1

5

xsl:sort選択基準の XPath の一部として変数を使用する

<xsl:for-each select="gpx:gpx/gpx:wpt">
    <xsl:sort select="grdspk:cache/grdspk:*[local-name()=$sort_by]"/>
    <!--additional logic goes here-->
</xsl:for-each>
于 2013-06-07T22:44:01.267 に答える