XPath: выберите все узлы A и все узлы B, которые не находятся внутри узла A - PullRequest
1 голос
/ 28 марта 2009

Возможно ли следующее в одном выражении XPath (см. Пример ниже):

Выбрать все (теги span класса msg) AND all ((теги img с непустым атрибутом alt) AND (НЕ расположены внутри диапазона тег класса msg))

Упрощенный образец:

<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>

Результирующий набор узлов должен содержать:

<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" />

1 Ответ

7 голосов
/ 28 марта 2009

Не проверено, но что-то вроде?

//span[@class='msg'] | //img[@alt!='' and not(ancestor::span[@class='msg'])]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...