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