- ベストアンサー
xsl:variableでの抽出条件の変更
こんにちは、Khazadと申します。 xsl:variableで、xsl:apply-templates の抽出条件を変更したくて 下記のようなXSLを作成したのですが、うまくいきません。 原因がわかる方。または別の方法があればご教授お願いできないでしょうか? パーサーはMSXML3.0です。 (試したこと) 1 テンプレート内に<xsl:value-of select='$frid'/>を挿入すると、 ちゃんと1が表示されます。 2 [@rid='{$frid}']の部分を[@rid='$frid']に変更しても抽出は 行われません。 3 [@rid='{$frid}']の部分を[@rid='1']にすると抽出されます。 以下XSLのソースです -------------------------------------------------------- <xsl:variable name = 'frid' select='1' ></xsl:variable> <xsl:template match="/"> <xsl:apply-templates select="ROOT//*[@rid='{$frid}']"/> </xsl:template> <xsl:template match="*[@rid='{$frid}']"> <xsl:apply-templates select="*"/> </xsl:template> --------------------------------------------------------
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (3)
- kaihou100
- ベストアンサー率83% (10/12)
回答No.4
- kaihou100
- ベストアンサー率83% (10/12)
回答No.2
- FlossenEngel
- ベストアンサー率77% (132/170)
回答No.1
お礼
ありがとうございます。 それを見本にテストしたのですが、 "Attribute 'name' is invalid on 'xsl:apply-templates'" だそうです。(上記はエラーメッセージです。) ただ、kaihou100さんの回答をヒントにW3C勧告のページをもう一度よく 見てみると、xsl:apply-templatesには、modeという属性があり、 それを用いると、意図した処理(テンプレートの切り替え)が可能に なりました。 このあたりは単純にパーサーの実装の違いということでしょうね…。