我正在尝试创建一个xpath来查找一个元素,该元素在公共父元素下面没有任何'p','li'或'span'元素。例如,我有这样的结构:
<a>
<div>
<div/>
<div>
<div>
<div>
</p>
</div>
<img/>
</div>
<div>
<ci/>
</div>
</div>
</div>
</a>
我感兴趣的节点是<img>
元素。到目前为止,我有这个xpath:
count(/a/div[1]/div[position() = last()]//img[(count(preceding::*[name() = 'p' or name() = 'li' or name() = 'span']) = 0)]) > 0
我不关心任何不需要的元素是否在/ a / div [1] / div [1] /只在/ a / div [1] / div [2]下。话虽如此,前面将无法工作,因为它将在/ a / div [1] / div [1]下看,我不在乎。上例中的'p'元素可以是任意数量的div。
编辑:
我添加了包含元素<ci/>
的div。
答案 0 :(得分:0)
我能够使用以下内容实现此目的:
count(/a/div[1]/div[position() = last()]//img[(count(preceding::*[(name() = 'p' or name() = 'li' or name() = 'span']) and ancestor::div[parent::div[parent::a] and descendant::ci]]) = 0)]) > 0