Esempi XPath

In questo argomento vengono riportati gli esempi di sintassi disponibili in Riferimenti di XPath. Tutti gli esempi si basano sul File XML di esempio per la sintassi di XPath (inventory.xml). Per un esempio di utilizzo di un'espressione XPath in un file di verifica, vedere "Esempio di union ( | )", alla fine di questo argomento.

Espressione Si riferisce a

./author

Tutti gli elementi <author> nel contesto corrente. Notare che è equivalente all'espressione nella riga successiva.

author

Tutti gli elementi <author> nel contesto corrente.

first.name

Tutti gli elementi <first.name> nel contesto corrente.

/bookstore

L'elemento documento (<bookstore>) di questo documento.

//author

Tutti gli elementi <author> nel documento.

book[/bookstore/@specialty=@style]

Tutti gli elementi <book> per cui il valore dell'attributo style è uguale al valore dell'attributo specialty dell'elemento <bookstore> al livello radice del documento.

author/first-name

Tutti gli elementi <first-name> che sono elementi figlio di un elemento <author>.

bookstore//title

Tutti gli elementi <title> presenti a diversi livelli all'interno dell'elemento <bookstore> (discendenti arbitrari). Notare che differisce dall'espressione nella riga successiva.

bookstore/*/title

Tutti gli elementi <title> che sono elementi nipote degli elementi <bookstore>.

bookstore//book/excerpt//emph

Tutti gli elementi <emph> all'interno degli elementi figlio <excerpt> degli elementi <book>, all'interno dell'elemento <bookstore>.

.//title

Tutti gli elementi <title> presenti a diversi livelli nel contesto corrente. Questa situazione è essenzialmente l'unica in cui è richiesto il punto.

author/*

Tutti gli elementi che sono elementi figlio di elementi <author>.

book/*/last-name

Tutti gli elementi <last-name> che sono elementi nipote degli elementi <book>.

*/*

Tutti gli elementi nipote del contesto corrente.

*[@specialty]

Tutti gli elementi con l'attributo specialty.

@style

L'attributo style nel contesto corrente.

price/@exchange

L'attributo exchange sugli elementi <price> all'interno del contesto corrente.

price/@exchange/total

Restituisce un set di nodi vuoto poiché gli attributi non contengono elementi figlio. Questa espressione è consentita dalla grammatica di XPath (XML Path Language), ma non è del tutto valida.

book[@style]

Tutti gli elementi <book> con attributi style nel contesto corrente.

book/@style

L'attributo style per tutti gli elementi <book> nel contesto corrente.

@*

Tutti gli attributi del contesto dell'elemento corrente.

./first-name

Tutti gli elementi <first-name> nel nodo di contesto corrente. Notare che è equivalente all'espressione nella riga successiva.

first-name

Tutti gli elementi <first-name> nel nodo di contesto corrente.

author[1]

Il primo elemento <author> nel nodo di contesto corrente.

author[first-name][3]

Il terzo elemento <author> che dispone di un elemento figlio <first-name>.

my:book

L'elemento <book> dallo spazio dei nomi my.

my:*

Tutti gli elementi dallo spazio dei nomi my.

@my:*

Tutti gli attributi dallo spazio dei nomi my (questo non include gli attributi non qualificati su elementi dallo spazio dei nomi my).

Notare che gli indici sono relativi all'elemento padre. Si considerino i dati seguenti:

<x>
  <y/>
  <y/>
</x>
<x>
  <y/>
  <y/>
</x>

Espressione Si riferisce a

x/y[1]

Il primo elemento figlio <y> di ciascun <x>. È equivalente all'espressione nella riga successiva.

x/y[position() = 1]

Il primo elemento figlio <y> di ciascun <x>.

(x/y)[1]

Il primo <y> dall'intero insieme di elementi figlio <y> di elementi <x>.

x[1]/y[2]

Il secondo elemento figlio <y> del primo <x>.

I restanti esempi si riferiscono al file XML di esempio per XPath.

Espressione Si riferisce a

book[last()]

L'ultimo elemento <book> del nodo di contesto corrente.

book/author[last()]

L'ultimo elemento figlio <author> di ciascun elemento <book> del nodo di contesto corrente.

(book/author)[last()]

L'ultimo elemento <author> dall'intero insieme di elementi figlio <author> di elementi <book> del nodo di contesto corrente.

book[excerpt]

Tutti gli elementi <book> che contengono almeno un elemento figlio <excerpt>.

book[excerpt]/title

Tutti gli elementi <title> che sono elementi figlio di elementi <book> e che contengono a loro volta almeno un elemento figlio <excerpt>.

book[excerpt]/author[degree]

Tutti gli elementi <author> che contengono almeno un elemento figlio <degree> e sono elementi figlio di elementi <book> che contengono a loro volta almeno un elemento <excerpt>.

book[author/degree]

Tutti gli elementi <book> che contengono elementi figlio <author> i quali a loro volta contengono almeno un elemento figlio <degree>.

author[degree][award]

Tutti gli elementi <author> che contengono almeno un elemento figlio <degree> e un elemento figlio <award>.

author[degree and award]

Tutti gli elementi <author> che contengono almeno un elemento figlio <degree> e un elemento figlio <award>.

author[(degree or award) and publication]

Tutti gli elementi <author> che contengono come elementi figlio <degree> o <award> e almeno un <publication>.

author[degree and not(publication)]

Tutti gli elementi <author> che contengono almeno un elemento figlio <degree> e nessun elemento figlio <publication>.

author[not(degree or award) and publication]

Tutti gli elementi <author> che contengono almeno un elemento figlio <publication>, ma nessun elemento figlio <degree> o <award>.

author[last-name = "Bob"]

Tutti gli elementi <author> che contengono almeno un elemento figlio <last-name> con il valore Bob.

author[last-name[1] = "Bob"]

Tutti gli elementi <author> in cui il primo elemento figlio <last-name> ha il valore Bob. Notare che è equivalente all'espressione nella riga successiva.

author[last-name [position()=1]= "Bob"]

Tutti gli elementi <author> in cui il primo elemento figlio <last-name> ha il valore Bob.

degree[@from != "Harvard"]

Tutti gli elementi <degree> in cui l'attributo from è diverso da "Harvard".

author[. = "Matthew Bob"]

Tutti gli elementi <author> il cui valore è Matthew Bob.

author[last-name = "Bob" and ../price &gt; 50]

Tutti gli elementi <author> che contengono un elemento figlio <last-name> il cui valore è Bob e un elemento di pari livello <price> il cui valore è maggiore di 50.

book[position() &lt;= 3]

I primi tre libri (1, 2, 3).

author[not(last-name = "Bob")]

Tutti gli elementi <author> che non contengono elementi figlio <last-name> con il valore Bob.

author[first-name = "Bob"]

Tutti gli elementi <author> che contengono almeno un elemento figlio <first-name> con il valore Bob.

author[* = "Bob"]

Tutti gli elementi author che contengono qualsiasi elemento figlio il cui valore è Bob.

author[last-name = "Bob" and first-name = "Joe"]

Tutti gli elementi <author> che presentano un elemento figlio <last-name> con il valore Bob e un elemento figlio <first-name> con il valore Joe.

price[@intl = "Canada"]

Tutti gli elementi <price> nel nodo di contesto che dispongono di un attributo intl uguale a "Canada".

degree[position() &lt; 3]

I primi due elementi <degree> che sono elementi figlio del nodo di contesto.

p/text()[2]

Il secondo nodo di tipo text in ciascun elemento <p> nel nodo di contesto.

ancestor::book[1]

Il progenitore <book> più vicino del nodo di contesto.

ancestor::book[author][1]

Il progenitore <book> più vicino del nodo di contesto. Questo elemento <book> presenta un elemento figlio <author>.

ancestor::author[parent::book][1]

Il progenitore <author> più vicino nel contesto corrente. Questo elemento <author> è un elemento figlio di un elemento <book>.

Esempio di union ( | )

Per illustrare il funzionamento dell'operatore union, si utilizza l'espressione XPath seguente:

x | y/x

Seleziona tutti gli elementi <x> i cui valori sono green o blue nel file XML seguente:

File XML (data1.xml)

File XSLT (union.xsl)

Output formattato

green,blue,blue,green

Output del processore

<?xml version="1.0" encoding="UTF-16"?>green,blue,blue,green

Vedere anche

Riferimento

Esempi di location path

Concetti

File XML di esempio per la sintassi di XPath (inventory.xml)