在XPath中(仅限1.0)可以找到所有' foo' ' bar'的后代没有' quux'在任何级别之间?也就是说,例如,这些“foo”应匹配:
<bar><foo/></bar>
<bar><a><foo/></a></bar>
<bar><a><b><c><d><e><f><g><foo/></g></f></e></d></c></b></a></bar>
但这些不应该:
<bar><quux><foo/></quux></bar>
<bar><a><quux><foo/></quux></a></bar>
<bar><quux><a><foo/></a></quux></bar>
<bar><a><quux><b><foo/></b></quux></a></bar>
高于quux
或低于bar
的{{1}}实例应该不阻止匹配,即这些&#39; foo&#39; s 应匹配:
foo
<bar><foo><quux/></foo></bar>
<quux><bar><foo/></bar></quux>
不起作用,因为它只接受三级结构。任何包含bar/not(quux)/foo
的东西都会让quux在此时滑过。 //
几乎可以正常工作,但当quux是bar的祖先时会失败。
答案 0 :(得分:3)
表达您想要的内容的一种方式是quux
的{{1}}祖先的数量与foo
的{{1}}个祖先的数量相同quux
{1}}祖先,以便所有foo
都是bar
和quux
的祖先。
以下表达式将选择此类bar
s:
foo