祖先属性不等于字符串的Xpath测试

祖先属性不等于字符串的Xpath测试,xpath,attributes,Xpath,Attributes,我试图测试元素的祖先上的属性是否不等于字符串 这是我的XML <aaa att="xyz"> <bbb> <ccc/> </bbb> </aaa> <aaa att="mno"> <bbb> <ccc/> </bbb> </aaa> 谢谢 假设说元素的祖先是指包含子元素的元素,那么这个XPath表达式应该: //*[*/ccc][@att != 'xyz'] 它选择 所有节

我试图测试元素的祖先上的属性是否不等于字符串

这是我的XML

<aaa att="xyz">
<bbb>
<ccc/>
</bbb>
</aaa>
<aaa att="mno">
<bbb>
<ccc/>
</bbb>
</aaa>
谢谢

假设说元素的祖先是指包含子元素的元素,那么这个XPath表达式应该:

//*[*/ccc][@att != 'xyz']
它选择

  • 所有节点
  • 至少有一个
    孙子节点的
  • 并且具有一个
    att
    属性,其值不是
    xyz
  • 更新:
    祖父母的限制测试

    更新2:根据您的修订问题进行调整:

    //ccc[../parent::aaa/@att != 'xyz']
    
    挑选

  • 所有
    元素
  • 其属性
    att
    设置为非
    xyz

  • 什么元素的祖先?您是指至少有一个子元素的元素吗?对不起,在所讨论的元素周围有括号。在示例XML之后查看我的新行。感谢您的回复。然而,我只想测试ccc的祖父母aaa。根据您的解释,这测试了文档中的所有aaa节点。@Jeff:您的问题并不是很清楚;我现在更新了我的回答。@杰夫:我添加了一个替代解决方案,以演示如何实际使用
    元素作为结果节点,如您问题中所述。
    //ccc[../parent::aaa/@att != 'xyz']