我有一个类似于以下内容的XML:
我需要那些只有 son 元素作为其祖先的标记元素。唯一允许的 son 祖先是根元素< em> parent 。 parent 后, tag 的祖先不能是 son 以外的任何东西。因此,此xpath将返回&lt; tag id =“t1”/&gt;和&lt; tag id =“t2”/&gt;
答案 0 :(得分:0)
//son//tag
将是一个解决方案。另一个是//tag[ancestor::son]
您可以使用/descendent::
代替//
;报告结果的顺序有所不同。还有其他变种;哪一个最好取决于你这样做的确切背景。
答案 1 :(得分:0)
我应该早点发布这个或者可能没关系。这是我写的解决这个问题的令人讨厌的xpath:
/parent/(descendant::tag except(descendant::element() except descendant::son)/descendant::tag)
希望有人会建议一个更好看的替代品。