如何在xpath表达式上执行“OR”而不必使用“|”连接两个xpath或使用xpath函数?

时间:2013-02-01 23:52:17

标签: xml xpath xmlnode

如果我想选择/ 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

2 个答案:

答案 0 :(得分:3)

两个比原来短一点的XPath 1.0解决方案,并且不依赖于local-name()将是:

/a/*[self::b1 or self::b2]/c
/a/*[self::b1 | self::b2]/c

答案 1 :(得分:2)

在XPath 2中,您可以使用:

  /a/(b1|b2)/c

以及

  /a/(b1,b2)/c