XPath: comment sélectionner des nœuds qui n'ont pas d'attributs?
En utilisant XPath, comment sélectionner les nœuds qui n'ont pas d'attributs ( où nombre d'attributs = 0)?
Par exemple:
<nodes>
<node attribute1="aaaa"></node>
<node attribute1="bbbb"></node>
<node></node> <- FIND THIS
</nodes>
75
demandé sur
FabienB
2009-08-24 21:44:40
3 réponses
//node[not(@*)]
C'est le XPath pour sélectionner tous les nœuds nommés "node" dans le document sans aucun attribut.
122
répondu
48klocs
2009-08-24 18:04:43
Pour répondre au commentaire de Marek Czaplicki et développer la réponse
//node[not(@*) or not(string-length(@*))]
....sélectionnera tous les éléments de nœud avec zéro attribut ou qui ont des attributs qui sont tous vides. Si c'était juste un attribut particulier qui vous intéresse, plutôt que tous les autres, alors vous pouvez utiliser
//node[not(@attribute1) or not(string-length(@attribute1))]
...et cela sélectionnerait tous les éléments de nœud qui n'ont pas d'attribut appelé attribute1
ou qui ont un attribut attribute1
vide.
C'est-à-dire que les éléments suivants seraient choisi par l'une de ces expressions xpath
<nodes>
<node attribute1="aaaa"></node>
<node attribute1=""></node> <!--This one -->
<node attribute1="bbbb"></node>
<node></node> <!--...and this one -->
</nodes>
4
répondu
phil
2017-07-27 09:54:55