xpath                
            Trovare elementi contenenti testo specifico
        
        
            
    Ricerca…
Trova tutti gli elementi con un determinato testo
Immagina il seguente XML:
<root>
    <element>hello</element>
    <another>
        hello
    </another>
    <example>Hello, <nested> I am an example </nested>.</example>
</root>
 La seguente espressione XPath:
//*[text() = 'hello']
  restituirà l' <element>hello</element> , ma non l'elemento <another> . Questo perché l'elemento <another> contiene spazi bianchi che circondano il testo hello . 
 Per recuperare sia <element> che <another> , si potrebbe usare: 
//*[normalize-space(text()) = 'hello']
 o
//*[normalize-space() = 'hello']
  che taglierà lo spazio circostante circostante prima di fare il confronto. Qui possiamo vedere che lo specificatore del nodo text() è opzionale quando si usa lo normalize-space . 
 Per trovare un elemento contenente testo specifico, puoi utilizzare la funzione contains . La seguente espressione restituirà l'elemento <example> : 
//example[contains(text(), 'Hello')]
  Se vuoi trovare un testo che si estende su più bambini / nodi di testo, puoi utilizzarlo . invece di text() . . si riferisce all'intero contenuto testuale dell'elemento ed è figlio. 
//example[. = 'Hello,  I am an example .']
 Per vedere i diversi nodi di testo, puoi usare:
//example//text()
 che restituirà:
- "Ciao, "
 - "Sono un esempio"
 - ""
 
 E per vedere più chiaramente l'intero contenuto del testo di un elemento, si può usare la funzione string : 
string(//example[1])
 o semplicemente
string(//example)
 Ciao, sono un esempio.
 Quest'ultimo funziona perché, se un set di nodi viene passato in funzioni come string , XPath 1.0 guarda solo il primo nodo (nell'ordine del documento) in quel set di nodi e ignora il resto. 
così:
string(/root/*)
 ritornerebbe:
Ciao