Что должно выбрать выражение XPath элементы с
type="application/rss+xml"
ИЛИ type="application/atom+xml"
(RSS и Atom-ленты)
link[@rel='alternate'][@type='application/rss+xml']
выбирает каналы RSSlink[@rel='alternate'][@type='application/atom+xml']
выбирает Atom-лентыНо каково единственное выражение XPath для выбора их обоих?
Спасибо.
использование:
link[@rel='alternate'][@type='application/rss+xml' or @type='application/atom+xml']
см. http://www.w3.org/TR/xpath/#NT-OrExpr
Вы можете также используйте для этого union
link[@rel='alternate'][@type='application/rss+xml']|link[@rel='alternate'][@type='application/atom+xml']
, но или
подойдут.
если вы хотите пофантазировать и использовать XPath 2.0, то более элегантно (но потенциально запутанно, в зависимости от того, кто будет читать код) написать это так:
link[@rel='alternate'][@type = ('application/rss+xml', 'application/atom+xml')]
причина этого в том, что XPath 2.0 переопределяет '=' для применения к последовательностям, что означает, что приведенное выше сравнение возвращает true, если есть одно совпадение при сравнении элементов из левой последовательности с элементами из правой последовательности. это может быть очень полезно, если список вещей, с которыми вы хотите сравнить, является динамическим.