Ответ 1
Следующий xpath должен работать
/root/*[not(self::terminate)]
Кроме того, я думаю, вы также можете сделать это с этим
/root/*[not(name()='terminate')]
Как настроить таргетинг на все элементы документа кроме определенного имени элемента?
Например, я хочу исключить элементы terminate
. Они могут встречаться во всем документе.
<root>
<terminate attr="1" />
<other>
The brown fox jumps over the fence.
<terminate>
<b>stuff</b>
</terminate>
</other>
</root>
Я попытался использовать оператор not(..)
без успеха, потому что я неправильно его использую.
И, честно говоря, попытка Google "не" жесткая!
Следующий xpath должен работать
/root/*[not(self::terminate)]
Кроме того, я думаю, вы также можете сделать это с этим
/root/*[not(name()='terminate')]
Если вы используете XPath 2.0, вы можете использовать
/root/* except /root/terminate
Что делает то, что вы ожидаете. Он соответствует узлам, которые существуют в первой последовательности, но не второй.