XPath谓词中的'OR'运算符?

时间:2010-02-06 02:03:12

标签: xpath rss atom-feed

使用<link> OR type="application/rss+xml"(RSS和Atom供稿)选择type="application/atom+xml"元素的XPath表达式是什么

  • link[@rel='alternate'][@type='application/rss+xml']选择RSS Feed
  • link[@rel='alternate'][@type='application/atom+xml']选择Atom供稿

但是选择它们的单个XPath表达式是什么?

谢谢。

2 个答案:

答案 0 :(得分:47)

使用:

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']

or会这样做。

答案 1 :(得分:12)

如果你想获得幻想并使用XPath 2.0,它会更优雅(但可能令人困惑,取决于谁可能正在阅读代码)来写这样:

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

原因是XPath 2.0重新定义'='以应用于序列,这意味着如果在比较左手序列中的项目与比较右手项目时存在一个匹配,则上述比较返回true序列。如果要与之比较的事物列表是动态的,这可能非常有用。