<a id ="1">
...<c>
......<b/>
......<f/>
......<b/>
......<f/>
...</c>
</a>
<a id="2">
...<c>
......<b/>
......<f/>
......<f/>
...</c>
</a>
如果任何elem b按顺序后跟两个或多个f元素,则返回节点a。如果可能的话,我更喜欢直接的XPath 2.0解决方案。什么xpath会得到我a2而不是a1?我试过跟随兄弟姐妹,位置等等,但无济于事。
答案 0 :(得分:1)
使用XPath 1.0:
a[.//b[following-sibling::*[1]/self::f and following-sibling::*[2]/self::f]]
答案 1 :(得分:1)
你可以这样做:
//a[.//b/following-sibling::*[1][self::f]/following-sibling::*[1][self::f]]
这就是找到一个包含b元素的元素,后面紧跟一个f元素,后面跟着一个f元素。
答案 2 :(得分:0)
以下内容可以使用 XPATH 1.0 :
//b[following-sibling::*[
position()=1 and self::f
and
./following-sibling::*[
position()= 1 and self::f
]
]
]/ancestor::a[1]
<强>输出强>
<a id="2">
...<c>
......<b/>
......<f/>
......<f/>
...</c>
</a>
答案 3 :(得分:-1)
你可以用这个获得a2:
//a[@id=2]
只需使用id属性即可。
答案 4 :(得分:-1)
我想出了这个:
/a//c[f/following-sibling::*[1] = f]