- 締切済み
xslで変数をxpathに使いたい
初めて、質問させていただきます。よろしくお願いします。 早速ですが、xslの中で、 <xsl:variable name="hensu">名前</xsl:variable> のように、変数を宣言し、その変数を、xpathとして以下のように使いたいのですが このままでは、文字列(名前)で表示されてしまいます。 <xsl:value-of select="$hensu" /> 変数をxpathに変換する方法はありますでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- nor_miya
- ベストアンサー率0% (0/0)
同様の問題に突き当たり、解決策をひとつ見つけましたので報告いたします。 > <xsl:value-of select="リスト/$変数" /> 上記のような指定をしようとするときは <xsl:value-of select="リスト/*[local-name() = $変数" /> とします。 これは"リスト"の子要素の中で名前が"$変数"であるものを指定するということだと理解しています。 いかがでしょうか。
- himajin100000
- ベストアンサー率54% (1660/3060)
http://www.asahi-net.or.jp/~ps8a-okzk/xml/xpath10/type_conversion.html >まず、node-setへの変換については、 他の型からnode-setに変換することはできない と定められています。 らしいです。知らなかったけどw。 http://oshiete1.goo.ne.jp/qa2593455.html で書いた <xsl:variable name="c" select="document('c.xml')/d"/> が動作したんで、動作するものだと思ってました。 この記述のケースはおそらく$cにstringではなく、node-setが入ったんでしょうね・・・ <xsl:value-of select="./$hensu" /> とかやっても刎ねられました。 ギブアップです。 ☆ところで、その記述の想定する動作が必要になる状況ってどんな状況ですか?今後の参考のために是非とも聞いておきたいです。なので【補足要求】で。
補足
回答ありがとうございます。 できないとわかっただけでもすっきりしました。 さて、どのような場面で使いたいかということですが、 【category.xml】 <カテゴリ> <項目>住所</項目> </カテゴリ> <カテゴリ> <項目>電話</項目> </カテゴリ> <カテゴリ> <項目>メール</項目> </カテゴリ> 【list.xml】 <リスト> <名前>A</名前> <住所>東京都</住所> <電話>03-0000-0000</電話> <メール>mail@mail.jp</メール> </リスト> <リスト> <名前>B</名前> <住所>北海道</住所> <電話>03-1111-1111</電話> <メール>mail2@mail.jp</メール> </リスト> <リスト> <名前>B</名前> <住所>秋田県</住所> <電話>03-2222-2222</電話> <メール>mail3@mail.jp</メール> </リスト> このような2つのxmlファイルがあったとして(実際にはもっと複雑でファイル数も多いです) VBScriptを使ってカテゴリごとのHTMLページを作っています。 (xsl,VBScriptどちらも素人です) 例えば、住所一覧のページを作るxslでは、 <カテゴリ> <項目>住所</項目> </カテゴリ> このノードに、上記【list.xml】を読み込み、処理をしています。 この時、項目にある「住所」を変数にしてxpathに使えると、 <xsl:value-of select="リスト/$変数" /> のような形で、すべての一覧ページでひとつのxslで済んでしまうと思ったのですが 残念ながらできなかったので、力技で項目名によるif文での振り分けをしています。 他の言語などでは、文字列を変数名に使ったりできると思うのですが xslでは、結構不便なところが多いみたいですね。 何か良いアイディアがあれば教えてください。
お礼
ずいぶん昔の質問にお答えいただきありがとうございます! 近々、また組み直さなければいけなかったので助かります。 まだ、検証できていないのですが、できましたら結果報告いたします。 取り急ぎ、御礼まで。