• 締切済み

xslで変数をxpathに使いたい

nor_miyaの回答

  • nor_miya
  • ベストアンサー率0% (0/0)
回答No.2

同様の問題に突き当たり、解決策をひとつ見つけましたので報告いたします。 > <xsl:value-of select="リスト/$変数" /> 上記のような指定をしようとするときは <xsl:value-of select="リスト/*[local-name() = $変数" /> とします。 これは"リスト"の子要素の中で名前が"$変数"であるものを指定するということだと理解しています。 いかがでしょうか。

参考URL:
<http://msdn2.microsoft.com/ja-jp/library/ms190650.aspx>MSDN"local-name関数(XQuery)"2008/01/08
mmmmmms
質問者

お礼

ずいぶん昔の質問にお答えいただきありがとうございます! 近々、また組み直さなければいけなかったので助かります。 まだ、検証できていないのですが、できましたら結果報告いたします。 取り急ぎ、御礼まで。

関連するQ&A

  • XSL : 変数について

    XSL : 変数について 初めて質問致します。 ご教示宜しくお願い致します。 ****** XML文書 ****** <root> <A>1</A> <B> <B_1>2</B_1> <B_2>3</B_2> </B> </root> ****** 質問 ****** xsl で、上記xml文書の<B>タグ配下 <B_1>2</B_1> <B_2>3</B_2> を変数に代入するにはどのようにすれば いいでしょうか?(タグ名も含めて) 下記の2つを試してみましたが、 いずれも 「2 3」となります。 ・ <xsl:variable name="hoo" select="B"/> ・<xsl:variable name="hoo"> <xsl:copy-of select="B"> </xsl:variable> 質問に不明瞭な点がありましたら ご指摘下さい。 宜しくお願い致します。

    • 締切済み
    • XML
  • 違う階層のテンプレートの変数を参照する方法を教えてください。

    以下のようにテンプレートAAAにある$naをテンプレートBBBから参照し、変数$nbをつくりたいと思っております。 いろいろと試して四苦八苦しております。 XSL初心者です、どなたかご教示願います。 ----------------------------------------------- <xsl:template match="AAA">  <xsl:variable name="na"><xsl:value-of select='@value' /></xsl:variable> </xsl:template> <xsl:template match="BBB"> <xsl:variable name="nb"><xsl:value-of select="$na" /></xsl:variable> </xsl:template>

    • ベストアンサー
    • XML
  • xsl:variableについて

    お世話になります。xsl:variableについて質問です。 xsl:elementのnameを動的に指定したく、次のようにしました。 FireFox3 Beta 5にて、innerHTMLをtextareaに貼り付けて確認しました。 xml <testNode>aaa</testNode> xsl <xsl:variable name="el"><xsl:value-of select="name(.)"/></xsl:variable> <xsl:element name="$el">aiueo</xsl:element> こうすると、 aiueo のみ出力されました。希望する出力は <testNode>aiueo<testNode> です。 xsl:variableの使い方が間違っているのでしょうか?先程からずっとこれに悩んでいます。。。 よろしくお願いします。

    • ベストアンサー
    • XML
  • タグの内容をxsl:variableのname属性に使いたい

    立て続けに2つめの質問してしまい恐縮ですがよろしくお願い 致します。 やりたい事をストレートに記述しますと <work> <name>hoge</name> <x>0.5</x> </work> というwork要素があった場合に <xsl:template match="work"> <xsl:variable name="<xsl:value-of select="x"/>"> <xsl:value-of select="name"> </xsl:variable> </xsl:template> ということがしたいのですが、これではxsl:variableのnameの 箇所で当然エラーが出てしまい出来ません。 上記のように任意のタグの内容をxsl:variableのnameに使用 することは出来ないのでしょうか? よろしくお願い致します。

    • 締切済み
    • XML
  • xsl、xpath式の書き方について

    xslで質問させてください。 以下のようなxmlとxslを作っているのですが、xslの最後のほうで、 sample.xmlの/empList/emp/type/@idの値に応じて、typeList.xmlの/typeList/type/titleの値を取得したくて、 xsl:value-of select="document('typeList.xml')/typeList/type[@id = type/@id]/title/text()" /> と書いていますが、うまくいきません。どうすればいいでしょうか? -----[sample.xml] <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet href="a.xsl" type="text/xsl"?> <empList> <emp> <type id="1" /> <name>鈴木</name> <desc>あああ</desc> </emp> <emp> <type id="2" /> <name>田中</name> <desc>いいい</desc> </emp> </empList> -----[typeList.xml] <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet href="a.xsl" type="text/xsl"?> <typeList> <type id="1"> <title>タイプ1</title> </type> <type id="2"> <title>タイプ2</title> </type> </typeList> -----[a.xsl] <?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet version="1.0" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" encoding="UTF-8" omit-xml-declaration="yes" doctype-public="-//W3C//DTD XHTML 1.1//EN" doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" media-type="text/html" /> <xsl:template match="/"> <html> <head><title>サンプル</title></head> <body> <xsl:apply-templates select="empList/emp" /> </body> </html> </xsl:template> <xsl:template match="emp"> <h2><xsl:value-of select="name/text()" /></h2> <p>タイプ:<xsl:value-of select="document('typeList.xml')/typeList/type[@id = type/@id]/title/text()" /></p> <p>メモ:<xsl:value-of select="desc/text()" /></p> </xsl:template> </xsl:stylesheet>

    • ベストアンサー
    • XML
  • 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> --------------------------------------------------------

    • ベストアンサー
    • XML
  • xpathでノードのポジションを得る

    position()でポジションを取得したいのですが、 <xsl:apply-templates select="//test[position()]" /> のようなかんじにしてtestノードのposition()リストを 取得するようなことはできないのでしょうか。 まあ、 <xsl:template match="test"> <xsl:value-of select="position()" /> </xsl:template> こういうテンプレートつくれば結果的に取れると思うんですが、 今回はこれはなしでお願いします。 xpathだけでpositionをしゅとくできないものでしょうか。

    • ベストアンサー
    • XML
  • xsl positionで…

    <goo> <name> <first>太郎</first> <last>田中</last> </name> <name> <first>次郎</first> <last>佐藤</last> </name> </goo> このような xml より、 <xsl:value-of select="//name[position() = 2]" /> とすると、"次郎 佐藤" となるのですが、個別に"次郎"だけを取得出来る方法はありますか? <xsl:template match="name"> <xsl:if test="position() = 2"> <xsl:value-of select="first"/> </xsl:if> </xsl:template> この方法を使用しないで解決したいと思っています。 いろいろ試してるのですが、うまく行きません…。 回答、よろしくお願いします。

    • ベストアンサー
    • XML
  • XSLのifがいまいち理解ができなく。

    if文をどうやればいいのかで悩んでしまいに詰まっている状態です。 URLがない場合は何も表示しないにしたいのですが、参考ページを見ても全くわからない状態。 test.xsl <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet> <xsl:template match="/"> <xsl:apply-templates select="page/message"/> </xsl:template> <xsl:template match="page/message"> <table> <tr> <td>名前</td> <td><xsl:value-of select="name"/></td> </tr> <tr> <td>URL</td> <td><a><xsl:attribute name="href"><xsl:value-of select="@url" /></xsl:attribute><xsl:attribute name="target">_blank</xsl:attribute><xsl:value-of select="@url" /></a></td> </tr> </table> </xsl:template> </xsl:stylesheet> xml <?xml version="1.0" encoding="utf-8"?> <page> <message url="http://yahoo.co.jp"><name>山田太郎</name></message> <message url=""><name>山田花子</name></message> </page>

    • ベストアンサー
    • XML
  • XSLの中でHTMLタグが使えない

    XMLとXSLTを使って、Formの中のListのオプションを、XML から取ってきたいと思ってます。イメージ的には、下記 の○○○の中に、<xsl:value-of select="."/>を入れる ことによって、<option value="<xsl:value-of select="."/>"><xsl:value-of select="."/></option> の様にしたいのですが、<や>を&lt;や&gt;に変えても、 うまく表示されません。また、Selectタグの属性の Multipleも=サインが無いとかで使えませし,Inputタグ も、終了タグが無いため使えませんでした。どのように 対処したら良いのでしょうか?よろしくお願いしま す。 <select name="list1" size="10" id="select5"> <xsl:apply-templates/> </select> <xsl:template match="//name"> <option value="○○○">○○○</option> </xsl:template>

    • 締切済み
    • XML