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

28

如何使用 XPath 表达式选择具有类型为 type="application/rss+xml" 或者 type="application/atom+xml" (RSS和Atom订阅)的<link>元素?

下面两个XPath表达式可以分别选择RSS和Atom订阅:

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

但是,如何编写单个XPath表达式以同时选择它们呢?

谢谢。

2个回答

54

使用:

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也可以。


12

如果你想使用XPath 2.0并更加高级的话,可以这样写会更加优雅(但有可能会令代码阅读者感到困惑):

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

这是因为XPath 2.0将“=”重新定义为适用于序列,这意味着当比较左侧序列中的项目和右侧序列中的项目时,如果存在一次匹配,则上述比较返回true。如果您要比较的事物列表是动态的,这将非常有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接