16

これは Google にとっては簡単なことだと思っていたのですが、うまくいきませんでした。

属性の値を変数に割り当てて (これまでのところ簡単です)、その変数を使用して、その属性の値に基づいて別のノードを選択します。

例:

<xsl:variable name="myId" select="@id" />
<xsl value-of select="//Root/Some/Other/Path/Where[@id='{@myId}']/@Name />

それはうまくいきません。{@myId} を変数内の値に置き換えると、正しいノードが見つかりますが、この方法では何も生成されません。私は何かが欠けていると確信しているか、それを行う別の方法があると確信しています。

コンテキストは、同じ id 値を共有するさまざまな最上位ノードの下に関連データがあるため、テンプレートで関連ノードを取得する必要があるということです。

4

2 に答える 2

17

わかりました、私はついにそれを理解しました。愚かな問題は本当に、私は単に引用符と中括弧を省く必要がありました。すでにやってみたと思った時のひとつ。:Dああ、最初の例で@myIdと間違って入力したのですが、コードは実際には$myIdでした。

<xsl:variable name="myId" select="@id" />
<xsl value-of select="//Root/Some/Other/Path/Where[@id=$myId]/@Name" />
于 2008-08-07T23:16:07.947 に答える
5

変数 (単なる $variable) と属性値テンプレートの使用に混乱しているようです。これにより、XPath 式をいくつかの属性に入れることができます。

<newElement Id="{@Id}"/>

それらは明らかに組み合わせることができるため、次のような変数を属性値テンプレートに含めることができます。

<newElement Id="{$myId}"/>
于 2008-08-19T15:19:25.887 に答える