【问题标题】:how can an "OR" be performed on an xpath expression without having to join two xpaths with a "|" or using an xpath function?如何在 xpath 表达式上执行“或”而不用“|”连接两个 xpath还是使用 xpath 函数?
【发布时间】: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

【问题讨论】:

    标签: xml xpath xmlnode


    【解决方案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
      

      【讨论】:

        猜你喜欢
        • 2011-05-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-26
        相关资源
        最近更新 更多