代码之家  ›  专栏  ›  技术社区  ›  user123444555621

从xpath中的选择中排除某些元素

  •  31
  • user123444555621  · 技术社区  · 15 年前

    我知道这是个简单的问题,但我想不出来。 考虑以下简单的XML文档:

    <root>
      <a></a>
      <b></b>
      <c></c>
      <a></a>
      <d></d>
      <e></e>
      <a></a>
      <a></a>
    </root>
    

    选择节点的最佳方法是什么 <b> 通过 <e> 使用XPath?

    我在找类似的东西

    /root/*[not(a)]
    

    (这不起作用)

    4 回复  |  直到 5 年前
        1
  •  53
  •   Tomalak    15 年前
    /root/*[not(self::a)]
    
        2
  •  8
  •   Louis    10 年前

    回答以添加到xpath 2.0中,您可以使用 except :

    /root/(* except a)
    

    对于xpath 1.0,tomalak指出,这是实现它的标准方法:

    /root/*[not(self::a)]
    

    顺便说一句,如果有人想在XSLT2.0中 xsl:template/@match 认为它不起作用是因为 @match 采用的模式 像xpath表达式一样, xpath表达式。在这种情况下,xpath 1.0的解决方案可以工作。

        3
  •  6
  •   BVH    14 年前

    我意识到这是一个老问题,但最近我遇到了一个类似的问题,并使用以下XPath来解决它:

    /root/*[not(name()='a')]
    
        4
  •  -2
  •   chinna    15 年前

    你试过了吗?

    /根/b/根/c根/d/根/e