性格悪い人が優勝

初めて、質問させていただきます。よろしくお願いします。
早速ですが、xslの中で、

<xsl:variable name="hensu">名前</xsl:variable>

のように、変数を宣言し、その変数を、xpathとして以下のように使いたいのですが
このままでは、文字列(名前)で表示されてしまいます。

<xsl:value-of select="$hensu" />

変数をxpathに変換する方法はありますでしょうか?

A 回答 (2件)

同様の問題に突き当たり、解決策をひとつ見つけましたので報告いたします。



> <xsl:value-of select="リスト/$変数" />
上記のような指定をしようとするときは
<xsl:value-of select="リスト/*[local-name() = $変数" />
とします。
これは"リスト"の子要素の中で名前が"$変数"であるものを指定するということだと理解しています。
いかがでしょうか。
    • good
    • 0
この回答へのお礼

ずいぶん昔の質問にお答えいただきありがとうございます!

近々、また組み直さなければいけなかったので助かります。
まだ、検証できていないのですが、できましたら結果報告いたします。

取り急ぎ、御礼まで。

お礼日時:2008/01/09 00:24

http://www.asahi-net.or.jp/~ps8a-okzk/xml/xpath1 …

>まず、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では、結構不便なところが多いみたいですね。

何か良いアイディアがあれば教えてください。

補足日時:2006/12/24 13:53
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!