使用XPath 1.0
<div id="master">
<div someAttr id="1">
<div someAttr id="1-1">
<div someAttr id="1-1-1">
<div someAttr id="1-1-1-1">innermost child</div>
</div>
</div>
</div>
<div someAttr id="2">
<div someAttr id="2-1">
<div someAttr id="2-1-1">
<div someAttr id="2-1-1-1">innermost child</div>
</div>
</div>
</div>
</div>
我正在使用此查询选择所有具有以&#39;某些&#39;
开头的属性的节点//*[@*[starts-with(name(), 'some')]]
我只需要最上面的节点。例如,带有id 1和2的元素。如果我对id为1的元素使用相同的查询,那么我应该得到id为1-1的元素。
如何使用xpath实现此目的?
答案 0 :(得分:0)
要获取最外层节点,您可以尝试过滤出具有属性的祖先的节点以&#34; name&#34; :
//*[.... and not(ancestor::*[@*[starts-with(name(), 'some')]])]
所以整个Xpath表达式如下所示:
//*[
@*[starts-with(name(), 'some')]
and
not(ancestor::*[@*[starts-with(name(), 'some')]])
]