Xpath to search for a node that has ANY attribute containing a specific string?
I can search for a String contained in an specific attribute if I use th开发者_Go百科e following XPath
/xs:schema/node()/descendant::node()[starts-with(@my-specific-attribute-name-here, 'my-search-string')]
However, I'd like to search for ANY attribute containing* a String
Sample XML:
<root>
<element1 a="hello" b="world"/>
<element2 c="world" d="hello"/>
<element3 e="world" f="world"/>
</root>
Suppose, we need to select elements which have any attribute containing h
. In this sample: element1
, element2
. We can use this XPath:
//*[@*[starts-with(., 'h')]]
In your sample:
/xs:schema/node()/descendant::node()
[@*[starts-with(@my-specific-attribute-name-here, 'my-search-string')]]
The general pattern you're looking for is:
@*[contains(., 'string')]
which will match any attribute on the context element that contains string
. So if you simply want to search the whole document for attributes containing string
, you'd use:
//@*[contains(., 'string')]
This is what you are looking for:
//*[@*[starts-with(., 'h')]]
精彩评论