XPath 谓词中的“或”运算符?
Posted
技术标签:
【中文标题】XPath 谓词中的“或”运算符?【英文标题】:'OR' operator in XPath predicate? 【发布时间】:2011-01-13 18:40:42 【问题描述】:用type="application/rss+xml"
选择<link>
元素的XPath 表达式是什么OR type="application/atom+xml"
(RSS 和Atom 提要)
link[@rel='alternate'][@type='application/rss+xml']
选择 RSS 源
link[@rel='alternate'][@type='application/atom+xml']
选择 Atom 提要
但是选择它们的单个 XPath 表达式是什么?
谢谢。
【问题讨论】:
【参考方案1】:使用:
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
可以。
【讨论】:
【参考方案2】:如果您想花哨并使用 XPath 2.0,这样写会更优雅(但可能会令人困惑,具体取决于可能正在阅读代码的人):
link[@rel='alternate'][@type = ('application/rss+xml', 'application/atom+xml')]
原因是 XPath 2.0 重新定义了 '=' 以应用于序列,这意味着在比较左侧序列中的项目与比较右侧的项目时,如果有一个匹配项,则上述比较返回 true顺序。如果您要比较的事物列表是动态的,这将非常有用。
【讨论】:
以上是关于XPath 谓词中的“或”运算符?的主要内容,如果未能解决你的问题,请参考以下文章