只查找具有某一属性的一个节点(以任一节点为准)的 XPath 是什么(实际上我对属性感兴趣,而不是节点)。例如,在我的 XML 中,我有几个具有 lang 属性的标签。我知道它们都必须具有相同的值。我只想得到其中任何一个。
现在,我这样做://*[1][@lang]/@lang
,但由于未知原因,它似乎无法正常工作。
我的尝试导致我遇到了从所有 @lang 值的串联('en en en en...')到什么都没有,有时介于我想要的但不是所有 XML 之间的事情。
EDIT :
实际上//@lang[1]
无法工作,因为该功能position()
在测试之前调用lang
属性存在。因此它总是采用 XML 中找到的第一个元素。它当时效果最好,因为很多时候,lang 属性位于根元素上。
经过更多处理后,这是一个可行的解决方案:
(//@lang)[1]
需要用括号来分隔[1]
来自属性名称,否则position()
函数应用于属性的父元素内(这是无用的,因为标签内只能有一个特定名称的属性:这就是为什么//@lang[2]
始终不选择任何内容)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)