Reputation: 28218
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 feedsBut what is the single XPath expression for selecting them both?
Thank you.
Upvotes: 28
Views: 33311
Reputation: 211
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.
Upvotes: 12
Reputation: 57187
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.
Upvotes: 54