How to use "not" in XPath?

I want to write something of the sort:

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

(meaning all the links that there 'id' attribute doesn't contain the string 'xx')

I can't find the right syntax.


Solution 1:

not() is a function in XPath (as opposed to an operator), so

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

Solution 2:

you can use not(expression) function

or

expression != true()

Solution 3:

None of these answers worked for me for python. I solved by this

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

Also you can use or condition in your xpath by | operator. Such as

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

Sometimes we want element which has no class. So you can do like

a[not(@class)]