Xpath是否仅选择存在子元素的节点?

Xpath是否仅选择存在子元素的节点?,xpath,Xpath,这应该很容易,但它给我带来了麻烦。鉴于这种结构: <root> <a> <b/> </a> <a/> </root> 我试图构造一个xpath表达式,它只提供非空的“a”元素,即具有子元素的元素。因此,我希望返回“a”的第一个实例,而不是第二个 到目前为止,我有“/root/a/self::*”,但这将返回我两个a /root/a[count(*)&gt;0] 将为任何“a”节点提供任何类

这应该很容易,但它给我带来了麻烦。鉴于这种结构:

<root>
  <a>
    <b/>
  </a>
  <a/>
</root>

我试图构造一个xpath表达式,它只提供非空的“a”元素,即具有子元素的元素。因此,我希望返回“a”的第一个实例,而不是第二个

到目前为止,我有“/root/a/self::*”,但这将返回我两个a

/root/a[count(*)&gt;0]
将为任何“a”节点提供任何类型的子节点

此节点有效

/root/a[count(*)>0]
/root/a[*]
甚至

//a[*]

我还发现这是可行的:/root/a[child::*],但我会相信Adrian的回答也是可行的!:)仅当您希望将其放入XML文件(例如XSLT脚本)中时。不过,这只是一个存储细节,我很确定XPath规范使用“>”:)作为额外的一点,您可以使用count(b)来指定要计算哪些子节点。或者如果您只关心名为“b”的子元素:
/root/a[b]