使用变量查找xpath元素

时间:2011-08-18 13:15:06

标签: xslt xpath

我希望在一个模式中找到一个基于变量值的元素(每次迭代时都会改变)。 catch是元素可以在模式内的任何位置。

例如:

<...
  <foo>
    <bar>
       <bar1>BB</bar1>
       <bar2>CC</bar2>
    </bar>
    <rab>
       <rab1>DD</rab1> 
    </rab>
  </foo>
/...>

$ attribute = bar1 (然后下一次迭代,$属性可能等于rab1)

我将如何编写一个可以找到我的表达式:.../foo/bar/$attribute

我能找到的最接近的是...//*[name()=$attribute],但它不起作用。还有其他办法吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

虽然问题遗漏了许多可能很重要的细节,但您可以尝试将name()更改为local-name()

...//*[local-name()='bar1']

并查看是否可以解决问题。 name()的返回值包括元素名称具有的任何前缀,这可能导致它与$attribute的值不匹配。 (@Kirill暗示这一点。)

如果这不能解决问题,请提供更多上下文:完整的XPath表达式是什么?它是如何在XSLT中使用的?你怎么知道它“不起作用”? (给出预期结果和实际结果。)