例如:
<...
<foo>
<bar>
<bar1>BB</bar1>
<bar2>CC</bar2>
</bar>
<rab>
<rab1>DD</rab1>
</rab>
</foo>
/...>
$ attribute = bar1 (然后下一次迭代,$属性可能等于rab1)
我将如何编写一个可以找到我的表达式:.../foo/bar/$attribute
我能找到的最接近的是...//*[name()=$attribute]
,但它不起作用。还有其他办法吗?
感谢您的帮助!
答案 0 :(得分:2)
虽然问题遗漏了许多可能很重要的细节,但您可以尝试将name()
更改为local-name()
:
...//*[local-name()='bar1']
并查看是否可以解决问题。 name()
的返回值包括元素名称具有的任何前缀,这可能导致它与$attribute
的值不匹配。 (@Kirill暗示这一点。)
如果这不能解决问题,请提供更多上下文:完整的XPath表达式是什么?它是如何在XSLT中使用的?你怎么知道它“不起作用”? (给出预期结果和实际结果。)