I’m trying to use XPath to find all elements that have an element in a given namespace.
For example, in the following document I want to find the foo:bar and doodah elements:
<?xml version='1.0' encoding='UTF-8'?> <root xmlns:foo='http://foo.example.com'> <foo:bar quux='value'>Content</foo:bar> <widget>Content</widget> <doodah foo:quux='value'>Content</doodah> </root>
I know I can use the following XPath expression to load all attributes from a given namespace:
'//@*[namespace-uri()='http://foo.example.com']'
However:
- This doesn’t give me the elements, just the attributes.
- Where elements contain multiple attributes from that namespace, this selector will return a result per-attribute rather than per-element
Is it possible to get what I want, or do I have to gather the attributes and calculate the unique set of elements they correspond to?
Use:
the predicate two conditions are or-ed with the XPath
oroperator.The XPath expression thus selects any element that either: