首页 文章

XPath:查找属性节点(只有一个)

提问于
浏览
4

什么是XPath只能找到一个具有特定属性的节点(无论哪个)(实际上我对属性感兴趣,而不是节点) . 例如,在我的XML中,我有几个具有lang属性的标签 . 我知道所有这些都必须具有相同的 Value . 我只想得到他们中的任何一个 .

现在,我这样做: //*[1][@lang]/@lang ,但似乎没有正常工作,原因不明 .

我的尝试让我得到了各种各样的东西,从所有@lang值('en en en en ...')连接到没有,有时在我想要的内容之间,而不是在所有XML上 .


EDIT :

实际上 //@lang[1] 无法工作,因为函数 position()lang 属性存在的测试之前被调用 . 所以它始终需要在XML中找到第一个元素 . 它在当时效果最好,因为很多次,lang属性是根元素 .

3 回答

  • 2

    经过一番处理,这是一个有效的解决方案:

    (//@lang)[1]
    

    需要使用括号将 [1] 与属性名称分开,否则 position() 函数将应用于属性的父元素中(这是无用的,因为标记中只能有一个特定名称的属性:这就是为什么 //@lang[2] 总是不选择任何内容) .

  • 7

    你试过这个吗?

    //@lang[1]
    

    here你可以看到一个例子 .

  • 1

    以下XPath似乎做你想要的:

    //*[@lang][1]/attribute::lang
    

相关问题