誕生日にもらった意外なもの

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がパスのつもり

A 回答 (2件)

<xsl:variable name="bbb" select="$aaa/*[name() = $ccc]/ccc"/>


で、取得できませんか?

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

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



要素名や属性名だけなら、式が凄く長くなるのを飲めばそう難しくはない。
http://cid-b89cb784f5346675.office.live.com/brow …

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

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