XPath – Sélection d’éléments correspondant à une valeur

Dans Xpath, je souhaite sélectionner des éléments correspondant à une valeur spécifique.

Exemple de données XML:

       qwerty      qwerty       qwerty   

Maintenant, en utilisant le XPath:

 //ccc[.='qwerty'] 

Je reçois les bons résultats attendus :

 Name Value ccc qwerty 

Maintenant, en utilisant le XPath:

 //aaa[.='qwerty'] 

J’ai des résultats inattendus :

 Name Value aaa aaa qwerty 

Et ce qui m’intéresse particulièrement, c’est comment sélectionner un élément avec cette valeur

XPath:

 //*[.='qwerty'] 

J’ai des résultats inattendus très étranges:

 Name Value aaa bbb ddd qwerty bbb qwerty aaa qwerty ccc qwerty 

Quelqu’un peut-il expliquer ces résultats et comment réparer mes expressions XPath pour obtenir plus de résultats attendus?

La spécification XPath. définit la valeur de chaîne d’un élément comme la concaténation (dans l’ordre des documents) de tous ses descendants de nœud de texte .

Ceci explique les “résultats étranges”.

Les “meilleurs” résultats peuvent être obtenus en utilisant les expressions ci-dessous:

 //*[text() = 'qwerty'] 

Ce qui précède sélectionne tous les éléments du document qui ont au moins un enfant de noeud de texte avec la valeur ‘qwerty’.

 //*[text() = 'qwerty' and not(text()[2])] 

Ce qui précède sélectionne chaque élément du document qui n’a qu’un seul enfant de noeud de texte et sa valeur est: «qwerty».

Essayer

//*[text()='qwerty'] car . est votre élément actuel