【发布时间】:2018-08-30 06:43:25
【问题描述】:
我选择了所有属性id,一切顺利,然后有一天需求发生了变化,现在我必须选择除一个之外的所有属性!
举个例子:
<root>
<structs id="123">
<struct>
<comp>
<data id="asd"/>
</comp>
</struct>
</structs>
</root>
我想选择除/root/structs/struct/comp/data 之外的所有属性id
请注意,Xml 可能不同。
意思是,我真正想要的是:给定任何 Xml 树,我想选择所有属性 id 除了元素上的属性 /root/structs/struct/comp/data
我尝试了以下方法:
//@id[not(ancestor::struct)] 有点用,但我想为祖先轴提供完整的 xpath,但我无法
//@id[not(contains(name(), 'data'))] 它不起作用,因为名称选择器返回底层节点的名称,该名称是属性而不是其父元素
【问题讨论】:
标签: xpath