Как использовать "не" в xpath?

Я хочу написать что-то вроде:

//a[not contains(@id, 'xx')]

(что означает, что все ссылки, в которых атрибут 'id' не содержит строку 'xx')

Я не могу найти правильный синтаксис.

Ответ 1

not() - это функция в xpath (в отличие от оператора), поэтому

//a[not(contains(@id, 'xx'))]

Ответ 2

вы можете использовать функцию not(expression)

или

expression != true()

Ответ 3

Ни один из этих ответов не работал у меня для python. Я решил этим

a[not(@id='XX')]

Также вы можете использовать или условие в вашем xpath оператором |. Например,

a[not(@id='XX')]|a[not(@class='YY')]

Иногда нам нужен элемент, который не имеет класса. Таким образом, вы можете сделать как

a[not(@class)]