假设我有以下xml:
<one>
<two>
<three>
<three>
foo
</three>
<four />
<three>
bar
<four />
</three>
</three>
</two>
</one>
我可以编写哪些XPath查询只返回这些节点:
<three>
foo
</three>
和
<three>
bar
<four />
</three>
但不是这一个:
<three>
<three>
foo
</three>
<four />
<three>
bar
<four />
</three>
</three>
我试过这个:
//three/descendant-or-self::*/text()/ancestor::three
但它返回了我不想要的那个。我也不能假设这是xml的确切结构,所以我不认为..运算符会起作用。基本上,我想要three
类型的文本节点中最年轻的祖先。
有什么建议吗?
答案 0 :(得分:1)
我认为//three[text() and not (descendant::three)]
会做你想做的事。