xpath                
            Recherche d'éléments contenant un texte spécifique
        
        
            
    Recherche…
Trouver tous les éléments avec un certain texte
Imaginez le XML suivant:
<root>
    <element>hello</element>
    <another>
        hello
    </another>
    <example>Hello, <nested> I am an example </nested>.</example>
</root>
L'expression XPath suivante:
//*[text() = 'hello']
 renverra l' <element>hello</element> , mais pas l'élément <another> . C'est parce que l'élément <another> contient des espaces blancs entourant le texte hello . 
 Pour récupérer à la fois <element> et <another> , on pourrait utiliser: 
//*[normalize-space(text()) = 'hello']
ou
//*[normalize-space() = 'hello']
 qui va couper les espaces blancs avant de faire la comparaison. Ici, nous pouvons voir que le spécificateur de noeud text() est facultatif lors de l'utilisation normalize-space . 
 Pour trouver un élément contenant un texte spécifique, vous pouvez utiliser la fonction contains . L'expression suivante retournera l'élément <example> : 
//example[contains(text(), 'Hello')]
 Si vous souhaitez rechercher du texte couvrant plusieurs enfants / noeuds de texte, vous pouvez utiliser . au lieu de text() . . fait référence à l'intégralité du contenu textuel de l'élément et à ses enfants. 
//example[. = 'Hello,  I am an example .']
Pour voir les différents nœuds de texte, vous pouvez utiliser:
//example//text()
qui reviendra:
- "Bonjour, "
 - "Je suis un exemple"
 - "."
 
 Et pour voir plus clairement tout le contenu textuel d'un élément, on peut utiliser la fonction string : 
string(//example[1])
ou juste
string(//example)
Bonjour, je suis un exemple.
 Ce dernier fonctionne car, si un ensemble de nœuds est passé dans des fonctions telles que des string , XPath 1.0 se contente d'examiner le premier nœud (dans l'ordre des documents) dans cet ensemble de nœuds et ignore le reste. 
alors:
string(/root/*)
retournerais:
Bonjour