2

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

2 回答 2

3

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

/a/*[self::b1 or self::b2]/c
/a/*[self::b1 | self::b2]/c
于 2013-02-02T01:26:08.707 回答
2

在 XPath 2 中,您可以使用:

  /a/(b1|b2)/c

  /a/(b1,b2)/c
于 2013-02-02T01:02:36.530 回答