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