• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:スタイルシートのfor-each select=に変数を使用したい)

スタイルシートのfor-each selectに変数を使用する方法

このQ&Aのポイント
  • スタイルシートのfor-each select属性で変数を使用したい場合、xsl:paramを宣言して変数を定義します。
  • 変数を使用するためには、select属性の値をconcat関数で結合する方法があります。
  • 要素名の代わりに変数を使用するためには、xsl:template内で変数を置換する必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • nadera
  • ベストアンサー率83% (5/6)
回答No.1

<xsl:for-each select=".//1000"> -(1) これでは,変数にする以前の問題として,まともに動かないのでは? 要素名の一文字目は数字にはできません。xpathも大丈夫でしょうか? まず,変数にする前にきちんと動くようにしたとして,次に変数にするには,環境によって難易度が異なります。 xalanのようにdyn:evaluate()が使えるものは,要素名を変数に文字列として入れて,これをevaluate関数でノードセットに戻します。 概念的には,  <xsl:variable name="hensu" select="'s1000'"/> として,要素名を''で囲んで,文字列としてhensuに格納します。 これを使うときは,  <xsl:for-each select="dyn:evaluate($hensu)"> などとしますが,evaluateの引数は,パーサによって異なります。 なお,msxmlは,そのまんまではevaluateを使えません。 次に,<xsl:template match="1000"> -(2)ですが,これを変数化するのは不可能だと思います。 match内のxpath表現をランタイムで変更できる仕様はないと思います(多分)。 variableもparamも,xsltの変数は,通常のプログラム言語の変数と異なり,とても制限が多く,使いづらいものなのです。