<?xml version="1.0"?> <XPath xmlns:bar="http://example.org/bar" xmlns:baz="http://example.org/baz" xmlns:foo="http://example.org/foo" xml:lang="en-ie"> (//. | //@* | //namespace::*) [ <!-- only text, elements, or directly-used namespace nodes but not foo:Something --> ancestor-or-self::bar:Something and not (self::foo:Something) and (self::text() or (namespace-uri() != "") or (string(self::node()) = namespace-uri(parent::node()))) ] </XPath>