web-dev-qa-db-ja.com

XPath述語の「OR」演算子?

_<link>_[〜#〜]または[〜#〜で_type="application/rss+xml"_要素を選択するための XPath 式とは何ですか]_type="application/atom+xml"_(RSSおよびAtomフィード)

  • _link[@rel='alternate'][@type='application/rss+xml']_はRSSフィードを選択します
  • _link[@rel='alternate'][@type='application/atom+xml']_選択Atomフィード

しかし、両方を選択するための単一のXPath式は何ですか?

ありがとうございました。

25
abernier

使用する:

link[@rel='alternate'][@type='application/rss+xml' or @type='application/atom+xml'] 

http://www.w3.org/TR/xpath/#NT-OrExpr を参照してください

これを達成するためにユニオンを使用することもできます

link[@rel='alternate'][@type='application/rss+xml']|link[@rel='alternate'][@type='application/atom+xml']

しかし、orで十分です。

51

xPath 2.0を使いこなして使いたい場合は、次のように書く方がエレガントです(ただし、コードを読んでいる人によっては混乱する可能性があります)。

link[@rel='alternate'][@type = ('application/rss+xml', 'application/atom+xml')] 

これは、XPath 2.0がシーケンスに適用するために「=」を再定義するためです。つまり、左側のシーケンスのアイテムと右側のシーケンスのアイテムを比較するときに一致するものが1つあれば、上記の比較はtrueを返します。これは、比較したいもののリストが動的である場合に非常に役立ちます。

12
dret