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"/>

不,这不是“提取值”——变量的值是一节点,也就是nodeset

另外,请注意这个节点集通常有多个节点。

 <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']"/>

即使撇号被删除,上面输出的第一个元素document('price_list.xml')/im_prices/row/UPC_Code的字符串值具有文本节点子节点,其字符串值等于变量中包含的一个$UPC节点的字符串值。

于 2012-06-18T12:47:33.087 回答