XPath utilizza espressioni di percorso per selezionare nodi o nodo-set in un documento XML. Il nodo è selezionato seguendo un percorso o passaggi.
L'esempio documento XML
Useremo il seguente documento XML negli esempi che seguono.
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book>
<title lang="en">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="en">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
Selezione nodi
XPath utilizza espressioni di percorso per selezionare i nodi in un documento XML. Il nodo è selezionato seguendo un percorso o passaggi. Le espressioni di percorso più utili sono elencati di seguito:
Espressione | Descrizione |
---|---|
nodename | Seleziona tutti i nodi con il nome " nodename " |
/ | Seleziona dal nodo radice |
// | Seleziona nodi del documento dal nodo corrente che corrisponde alla selezione non importa dove sono |
. | Seleziona il nodo corrente |
.. | Seleziona il genitore del nodo corrente |
@ | Seleziona attributi |
Nella tabella di seguito abbiamo elencato alcune espressioni di percorso e il risultato delle espressioni:
Path Expression | Risultato |
---|---|
libreria | Seleziona tutti i nodi con il nome di "bookstore" |
/libreria | Seleziona l'elemento radice libreria Note: Se il percorso inizia con una barra ( / ) rappresenta sempre un percorso assoluto a un elemento! |
bookstore / book | Seleziona tutti gli elementi del libro che sono figli di libreria |
//libro | Seleziona tutti gli elementi del libro, non importa dove essi sono nel documento |
bookstore // libro | Seleziona tutti gli elementi del libro che sono discendente dell'elemento libreria, non importa dove essi sono sotto l'elemento libreria |
// @ Lang | Seleziona tutti gli attributi che sono denominati Lang |
predicati
I predicati vengono utilizzati per trovare un nodo specifico o un nodo che contiene un valore specifico.
I predicati vengono sempre inseriti tra parentesi quadre.
Nella tabella di seguito abbiamo elencato alcune espressioni di percorso con predicati e il risultato delle espressioni:
Path Expression | Risultato |
---|---|
/ Libreria / libro [1] | Seleziona il primo elemento libro che è il figlio dell'elemento libreria. Note: In IE 5,6,7,8,9 primo nodo è [0], ma secondo W3C, è [1]. Per risolvere questo problema in IE, impostare il SelectionLanguage a XPath: In JavaScript: xml . setProperty("SelectionLanguage","XPath") ; |
/ libreria / book [ last() ] | Seleziona l'ultimo elemento di libro che è il figlio dell'elemento libreria |
/ libreria / book [ last() -1] | Seleziona il penultimo libro elemento che è il figlio dell'elemento libreria |
/ libreria / book [ position() <3] | Seleziona i primi due elementi del libro che sono figli dell'elemento libreria |
// titolo [@lang] | Seleziona tutti gli elementi del titolo che hanno un attributo denominato lang |
// titolo [@ lang = 'it'] | Seleziona tutti gli elementi del titolo che hanno un attributo "lang" con un valore di "en" |
/bookstore/book[price>35.00] | Seleziona tutti gli elementi telefonico dell'elemento libreria che hanno un elemento di prezzo con un valore maggiore di 35.00 |
/bookstore/book[price>35.00]/title | Seleziona tutti gli elementi titolo del libro elementi dell'elemento libreria che hanno un elemento di prezzo con un valore superiore a 35,00 |
Selezione sconosciuto Nodi
jolly XPath possono essere utilizzate per selezionare i nodi XML sconosciuti.
jolly | Descrizione |
---|---|
* | Corrisponde a qualsiasi nodo elemento |
@* | Corrisponde a qualsiasi nodo attributo |
node() | Corrisponde a qualsiasi nodo di qualsiasi tipo |
Nella tabella di seguito abbiamo elencato alcune espressioni di percorso e il risultato delle espressioni:
Path Expression | Risultato |
---|---|
/libreria/* | Seleziona tutti i nodi elemento figlio dell'elemento libreria |
// * | Seleziona tutti gli elementi del documento |
//titolo[@*] | Seleziona tutti gli elementi del titolo che hanno almeno un attributo di qualsiasi tipo |
La selezione di diversi percorsi
Usando il | operatore in un'espressione XPath è possibile selezionare diversi percorsi.
Nella tabella di seguito abbiamo elencato alcune espressioni di percorso e il risultato delle espressioni:
Path Expression | Risultato |
---|---|
// libro / title | // libro / prezzo | Seleziona tutti gli elementi del titolo e dei prezzi di tutti gli elementi del libro |
// titolo | //prezzo | Seleziona tutti gli elementi del titolo e dei prezzi nel documento |
/ Libreria / libro / title | //prezzo | Seleziona tutti gli elementi del titolo dell'elemento libro dell'elemento libreria e tutti gli elementi di prezzo nel documento |