XPath:如何select没有属性的节点?

使用XPath,如何select没有属性的节点(其中属性count = 0)?

例如:

<nodes> <node attribute1="aaaa"></node> <node attribute1="bbbb"></node> <node></node> <- FIND THIS </nodes> 
 //node[not(@*)] 

这是XPathselect文档中名为“node”的所有节点,而不具有任何属性。

 //node[count(@*)=0] 

将select具有零属性的所有<节点>

解决Marek Czaplicki的评论并扩大答案

 //node[not(@*) or not(string-length(@*))] 

….将select所有具有零属性或具有全部属性的节点元素。 如果它只是你感兴趣的特定属性,而不是全部,那么你可以使用

 //node[not(@attribute1) or not(string-length(@attribute1))] 

…这将select所有的节点元素,或者没有一个attribute1属性为空的attribute1

也就是说,下面的元素将被这些xpathexpression式中的任何一个选出

 <nodes> <node attribute1="aaaa"></node> <node attribute1=""></node> <!--This one --> <node attribute1="bbbb"></node> <node></node> <!--...and this one --> </nodes>