Gli ultimi tutorial di sviluppo web
 

XPath Sintassi


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