attribute - XPath: ¿cómo seleccionar nodos que no tienen atributos?
xpath php (3)
Para abordar el comentario de Marek Czaplicki y ampliar la respuesta
//node[not(@*) or not(string-length(@*))]
.... seleccionará todos los elementos de nodo con cero atributos O que tengan atributos que estén todos vacíos. Si solo le interesaba un atributo en particular, en lugar de todos, podría usarlo
//node[not(@attribute1) or not(string-length(@attribute1))]
... y esto seleccionaría todos los elementos de nodo que no tienen un atributo llamado attribute1
O que tienen un attribute1
atributo1 que está vacío.
Es decir, los siguientes elementos serían seleccionados por cualquiera de estas expresiones xpath
<nodes>
<node attribute1="aaaa"></node>
<node attribute1=""></node> <!--This one -->
<node attribute1="bbbb"></node>
<node></node> <!--...and this one -->
</nodes>
Usando XPath, ¿cómo seleccionar nodos que no tienen atributos (donde el recuento de atributos = 0)?
Por ejemplo:
<nodes>
<node attribute1="aaaa"></node>
<node attribute1="bbbb"></node>
<node></node> <- FIND THIS
</nodes>
//node[count(@*)=0]
Seleccionará todo <nodo> con cero atributos
//node[not(@*)]
Ese es el XPath para seleccionar todos los nodos llamados "nodo" en el documento sin ningún atributo.