Xpath: Как найти узел, который не является потомком определенного узла - PullRequest
0 голосов
/ 28 апреля 2011

Например, у меня есть XML-документ, подобный этому

a[@class="wrong]
 ...
   b
    c 
d
 ...
   b
    c <= this one

Я хотел бы выбрать второй // b / c без взятия // b / c из первой части с помощью @class = "неправильный". И есть некоторый неизвестный узел между нежелательным узлом и // b / c.И я не знаю, какова точная разметка с нежелательным классом.

Поэтому я пытаюсь //*[not(contains(@class,'wrong'))]/b/c, но это не работает, потому что если в «...» есть хотя бы один узел без этого класса, первый ч / б также возвращается.

1 Ответ

1 голос
/ 28 апреля 2011

Использование:

//b[not(ancestor::*[contains(@class,'wrong')])]/c
...