如何在 xpath 表达式上执行“或”而不用“|”连接两个 xpath还是使用 xpath 函数?
Posted
技术标签:
【中文标题】如何在 xpath 表达式上执行“或”而不用“|”连接两个 xpath还是使用 xpath 函数?【英文标题】:how can an "OR" be performed on an xpath expression without having to join two xpaths with a "|" or using an xpath function? 【发布时间】:2013-02-01 23:52:17 【问题描述】:如果我想选择 /a/b1/c 和 /a/b2/c 我可以使用以下选项之一:
/a/*[local-name()='b1' or local-name()='b2']/c
/a/b1/c | /a/b2/c
但我想知道是否有更优雅的方式来指定“b1 或 b2”,而无需重新输入几乎整个表达式,也无需使用 local-name 函数。
很遗憾,这些表达式不起作用:
/a/b1 or b2/c
/a/[b1 or b2]/c
/a/b1 | b2/c
/a/[b1 | b2]/c
【问题讨论】:
【参考方案1】:两个 XPath 1.0 解决方案比您的原始解决方案短一点,并且不依赖 local-name() 将是:
/a/*[self::b1 or self::b2]/c
/a/*[self::b1 | self::b2]/c
【讨论】:
【参考方案2】:在 XPath 2 中,您可以使用:
/a/(b1|b2)/c
还有
/a/(b1,b2)/c
【讨论】:
以上是关于如何在 xpath 表达式上执行“或”而不用“|”连接两个 xpath还是使用 xpath 函数?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Chrome 开发者工具或 Firefox 的 Firebug 中验证 XPath 表达式?
如何使用 xpath 表达式在 PostgreSQL 中的 XML 列上创建索引?