什么是XPath只能找到一个具有特定属性的节点(无论哪个)(实际上我对属性感兴趣,而不是节点).例如,在我的XML中,我有几个具有lang属性的标签.我知道所有这些都必须具有相同的价值.我只想得到他们中的任何一个.
现在,我这样做://*[1][@lang]/@lang,但似乎没有正常工作,原因不明.
我的尝试让我得到了各种各样的东西,从所有@lang值('en en en en ...')连接到没有,有时在我想要的内容之间,而不是在所有XML上.
编辑:
实际上//@lang[1]无法工作,因为函数position()是在lang属性存在的测试之前调用的.所以它始终需要在XML中找到第一个元素.它在当时效果最好,因为很多次,lang属性是根元素.
经过一番处理,这是一个有效的解决方案:
(//@lang)[1]
Run Code Online (Sandbox Code Playgroud)
需要使用括号来分隔[1]属性名称,否则该position()函数将应用于属性的父元素中(这是无用的,因为标记中只能有一个特定名称的属性:这就是为什么//@lang[2]总是不选择任何内容).