2

ノードの値を変数に抽出しています。

<xsl:variable name="UPC" select="//x:input[@name='field-keywords']/@value"/>
<xsl:value-of select="$UPC" />  <!-- This works! -->

次に、同じ値を持つノードの別の XML ドキュメントをクエリします。

<xsl:value-of select="document('price_list.xml')/im_prices/row/UPC_Code[text()='$UPC']"/>

$UPC を実際の値に置き換えると、ノードは正常に動作することがわかりますが、$UPC を使用すると機能しません。

値を変数に抽出し、将来の xpath クエリで使用する方法を見つけることができませんでした。

4

1 に答える 1

4

アポストロフィを削除するだけです。式では、文字通りの「$UPC」と比較します。

 <xsl:value-of select=
   "document('price_list.xml')
        /im_prices/row/UPC_Code[text()=$UPC]"/>

この質問については、さらに言いたいことがあります

ノードの値を変数に抽出しています:

 <xsl:variable name="UPC" select="//x:input[@name='field-keywords']/@value"/>

いいえ、これは「値を抽出」しません。変数の値はノードのセット、別名ノードセットです。

また、このノードセットには通常、複数のノードがあることに注意してください。

 <xsl:value-of select="$UPC"/>  <!-- This works! -->

これにより、変数に含まれる最初のノードの文字列値が出力されます$UPC

Then I want to query another XML document for a node with the same value:

     <xsl:value-of select="document('price_list.xml')/im_prices/row/UPC_Code[text()='$UPC']"/>

アポストロフィが削除された場合でも、上記は、変数に含まれるノードの1つの文字列値と等しい文字列値を持つテキストノードの子を持つ最初の要素の文字列値を出力します。document('price_list.xml')/im_prices/row/UPC_Code$UPC

于 2012-06-18T12:47:33.087 に答える