'OR' operator in XPath predicate?
What is the XPath expression to select <link>
elements with type="application/rss+xml"
OR type="application/atom+xml"
(RSS and Atom feeds)
link[@rel='alternate'][@type='application/rss+xml']
selects RSS feedslink[@rel='alternate'][@type='application/atom+xml']
selects Atom feeds
But what is the single XPath expr开发者_如何学运维ession for selecting them both?
Thank you.
use:
link[@rel='alternate'][@type='application/rss+xml' or @type='application/atom+xml']
see http://www.w3.org/TR/xpath/#NT-OrExpr
You could also use union to accomplish this
link[@rel='alternate'][@type='application/rss+xml']|link[@rel='alternate'][@type='application/atom+xml']
but or
will do.
if you want to get fancy and use XPath 2.0, it is more elegant (but potentially confusing, depending who might be reading the code) to write it like this:
link[@rel='alternate'][@type = ('application/rss+xml', 'application/atom+xml')]
the reason for this is that XPath 2.0 redefines '=' to apply to sequences, which means that the above comparison returns true if there is one match when comparing items from the left-hand sequence with comparing items from the right-hand sequence. this can be very useful if the list of things you want to compare with is dynamic.
精彩评论