Sintassi XPath

XPath utilizza espressioni di percorso per selezionare nodi o insiemi di nodi in un documento XML. I nodi vengono selezionati seguendo il percorso (path) o i passi (steps).

Documento di esempio XML

Utilizzeremo questo documento XML negli esempi seguenti.

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>
<book>
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>
</bookstore>

Selezione di nodi

XPath utilizza espressioni di percorso per selezionare nodi in un documento XML. I nodi vengono selezionati seguendo il percorso o i passi (steps).

Di seguito sono elencate alcune delle espressioni di percorso più utili:

Espressione Descrizione
nodename Seleziona tutti i nodi figli di questo nodo.
/ Seleziona dal nodo radice.
// Dalla nodo corrente seleziona i nodi del documento che corrispondono alla selezione, indipendentemente dalla loro posizione.
. Seleziona il nodo corrente.
.. Seleziona il nodo genitore del nodo corrente.
@ Seleziona l'attributo.

Esempio

Nella tabella sottostante, abbiamo elencato alcune espressioni di percorso e i risultati delle espressioni:

Espressione di percorso Risultato
bookstore Seleziona tutti i nodi figli dell'elemento bookstore.
/bookstore

Seleziona l'elemento radice bookstore.

Nota: Se il percorso inizia con due slash ( / ), tale percorso rappresenta sempre il percorso assoluto fino a un elemento!

bookstore/book Seleziona tutti gli elementi book che sono figli dell'elemento bookstore.
//book Seleziona tutti gli elementi book che sono figli, indipendentemente dalla loro posizione nel documento.
bookstore//book Seleziona tutti gli elementi book che sono discendenti dell'elemento bookstore, indipendentemente dalla loro posizione.
//@lang Seleziona tutte le proprietà con nome lang.

Predicati (Predicates)

Il predicato viene utilizzato per trovare un nodo specifico o un nodo che contiene un valore specifico.

Il predicato è incluso tra parentesi quadre.

Esempio

Nella tabella sottostante, elenchiamo alcune espressioni di percorso con predicati e i risultati delle espressioni:

Espressione di percorso Risultato
/bookstore/book[1] Seleziona il primo elemento book che è figlio dell'elemento bookstore.
/bookstore/book[last()] Seleziona l'ultimo elemento book che è figlio dell'elemento bookstore.
/bookstore/book[last()-1] Seleziona il secondo elemento book figlio dell'elemento bookstore, partendo da destra.
/bookstore/book[position()<3] Seleziona i primi due elementi book che sono figli dell'elemento bookstore.
//title[@lang] Seleziona tutti gli elementi title che hanno un attributo con nome lang.
//title[@lang='eng'] Seleziona tutti gli elementi title che hanno l'attributo lang con valore eng.
/bookstore/book[price>35.00] Seleziona tutti gli elementi book all'interno dell'elemento bookstore, e il valore dell'elemento price deve essere maggiore di 35.00.
/bookstore/book[price>35.00]/title Seleziona tutti gli elementi title degli elementi book dell'elemento bookstore, e il valore dell'elemento price deve essere maggiore di 35.00.

Seleziona nodi sconosciuti

I simboli jolly XPath possono essere utilizzati per selezionare elementi XML sconosciuti.

Simbolo jolly Descrizione
* Corrisponde a qualsiasi nodo di elemento.
@* Corrisponde a qualsiasi nodo di attributo.
node() Corrisponde a qualsiasi tipo di nodo.

Esempio

Nella seguente tabella, elenchiamo alcune espressioni di percorso e i risultati di queste espressioni:

Espressione di percorso Risultato
/bookstore/* Seleziona tutti i sottoelementi dell'elemento bookstore.
//* Seleziona tutti gli elementi del documento.
//title[@*] Seleziona tutti gli elementi title con attributi.

Seleziona più percorsi

Utilizzando l'operatore "|" negli espressioni di percorso, è possibile selezionare più percorsi.

Esempio

Nella seguente tabella, elenchiamo alcune espressioni di percorso e i risultati di queste espressioni:

Espressione di percorso Risultato
//book/title | //book/price Seleziona tutti gli elementi title e price degli elementi book.
//title | //price Seleziona tutti gli elementi title e price del documento.
/bookstore/book/title | //price Seleziona tutti gli elementi title appartenenti agli elementi book dell'elemento bookstore, nonché tutti gli elementi price del documento.