XPath - 获取仅具有具有特定属性的子节点的节点

时间:2015-07-10 15:19:17

标签: xpath

我有一个SVG文档,其中包含类似于以下内容的节点:

<item>
    <g>
        <path fill="#FFFFFF" ... ></path>
        <path fill="none" ... ></path>
        <ellipse fill="none" ... ></path>
    </g>
    <g>
        <path fill="none" ... ></path>
        <path fill="none" ... ></path>
        <ellipse fill="none" ... ></path>
    </g>
    <g>
       <path fill="#FFFFFF" ... ></path>
       <path fill="#FFFFFF" ... ></path>
       <ellipse fill="#FFFFFF" ... ></path>
    </g>
</item>

我要做的只是选择仅包含具有<g>属性的子项的fill="none"个节点。所以我试图找到一个只与我的例子中的第二个<g>节点匹配的XPath。

我已经完成了谷歌搜索和搜索堆栈溢出的份额,似乎没有任何工作。

我认为应该最接近的一个就是给我一个错误,说明它不是使用$x()帮助器的Google Chrome开发人员工具中的有效XPath表达式。

*[name()="g" and descendants::*[@fill="none"]]

感谢任何帮助

由于

1 个答案:

答案 0 :(得分:3)

尝试:

*[    name()="g"
  and descendant::*[@fill="none"]
  and count(descendant::*[@fill="none"]) = count(descendant::*)
 ]