<a> <b/> <c/> <d/> <b/> <e/> </a>
How to choose those children from "a" who are not "b"?
/a/*[not(self::b)]
With XPath 2.0 you can even do
/a/(* except b)
Xpath will look like:
a/*[name(.) !='b']
So select the children of 'a' whose name is not equal to 'b'