XPath:选择不在A节点内的所有A节点和所有B节点

bar*_*rry 1 c# vb.net xpath

在一个XPath表达式中是否可以使用以下内容(请参阅下面的示例):

选择所有(类msg的span标签) AND all ((具有非空alt属性的img标签) AND (不位于类msg的span标签内))

简化样本:

<span class="msg">Message text A</span>
<img alt="" />
<span class="msg">Message text B <img alt="text A" /></span>
<span class="err">Error text C <img alt="text B" /></span>
<img alt="text C" />
<span class="err">Error text D</span>
Run Code Online (Sandbox Code Playgroud)

生成的节点集应包含:

<span class="msg">Message text A</span>
<span class="msg">Message text B <img alt="text A" /></span>
<img alt="text B" />    
<img alt="text C" />
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 7

没经过测试,但有类似的东西?

//span[@class='msg'] | //img[@alt!='' and not(ancestor::span[@class='msg'])]
Run Code Online (Sandbox Code Playgroud)