こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

XSLTでtest.xmlファイルのccc要素の値を取得する場合は以下

XSLTでtest.xmlファイルのccc要素の値を取得する場合は以下(1)、(2)のようにやればいいのですが、(2)の箇所のパス(testを)動的(可変)にすることはできるのでしょうか?

(1)document関数によりxmlファイルを変数に格納
 <xsl:variable name="aaa" select="document('test.xml')"/>
(2)上記変数からパスを指定して値を取得
 <xsl:variable name="bbb" select="$aaa/test/ccc"/>

test.xml
<test>
<ccc>bbb</ccc>
</test>

例)以下は間違ってると思いますがパスに変数を使用して値を取得することは可能でしょうか?
  <xsl:variable name="ccc" select="'test'"/> // 変数cccにtestという文字列を格納
  <xsl:variable name="bbb" select="$aaa/$ccc/ccc"/> //test/cccがパスのつもり

投稿日時 - 2010-08-03 22:02:05

QNo.6085010

困ってます

このQ&Aは役に立ちましたか?

25人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

<xsl:variable name="bbb" select="$aaa/*[name() = $ccc]/ccc"/>
で、取得できませんか?

ちなみに変数cccに格納されているがエレメント名の場合のみになります。

投稿日時 - 2010-09-01 10:17:59

標準のXSLT 1.0の関数には文字列をXPathとして評価する関数はないと思う。

要素名や属性名だけなら、式が凄く長くなるのを飲めばそう難しくはない。
http://cid-b89cb784f5346675.office.live.com/browse.aspx/TestCase/Q6085010?uc=2

#XSLT 2.0対応している環境がどれだけあるやら(.NETは対応しないことを表明)とは思うものの、これ使えるのかなぁ…?
http://www.w3.org/TR/xpath-functions/#func-collection

投稿日時 - 2010-08-04 00:09:12

あなたにオススメの質問