Condividi tramite


Insiemi XPath

Gli insiemi restituiti da query di XPath mantengono l'ordine, la gerarchia e l'identità dei documenti, nei casi in cui questi siano definiti. Ovvero, un insieme di elementi viene restituito in base all'ordine con cui è riportato nel documento senza elementi ripetuti. Poiché, per definizione, gli attributi non sono ordinati, non è presente alcun ordine implicito per attributi restituiti per un elemento specifico.

L'insieme di tutti gli elementi con uno specifico nome di tag viene espresso utilizzando lo stesso nome di tag. Tale nome può essere qualificato mostrando che gli elementi vengono selezionati dal contesto corrente utilizzando un punto e una barra (./), ma il contesto corrente viene utilizzato per impostazione predefinita e non è necessario che venga specificato in modo esplicito.

Esempi

Espressione Si riferisce a

./first-name

Tutti gli elementi <first-name>. Notare che è equivalente all'espressione seguente.

first-name

Tutti gli elementi <first-name>.

Indicizzazione in un insieme

Le espressioni XPath facilitano l'esecuzione di query in un nodo specifico all'interno di un set di nodi. È sufficiente includere l'ordinale d'indice tra parentesi quadre. L'ordinale è in base 1 (il primo elemento è il numero 1).

I caratteri di parentesi quadra ([]) hanno la precedenza sui caratteri di barra (/ e //). Per ulteriori informazioni, vedere Operatori e caratteri speciali.

Esempi

Espressione Si riferisce a

author[1]

Il primo elemento <author>.

author[first-name][3]

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

Notare che gli indici sono relativi al set filtrato. Si considerino, ad esempio, i dati seguenti.

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

Nella tabella seguente viene illustrato come selezionare elementi <x> e <y> specifici.

Espressione Si riferisce a

x/y[1]

Il primo elemento <y> all'interno di ciascun <x>.

(x/y)[1]

Il primo elemento <y> dall'intero set di elementi <y> all'interno di elementi <x>.

x[1]/y[1]

Il primo elemento <y> all'interno del primo elemento <x>.

Gli esempi riportati sopra sono semplici riferimenti a insiemi XPath che utilizzano valori predefiniti impliciti, come l'asse child::. Per questo asse, l'insieme di nodi figlio viene indicizzato in base all'ordine con cui è riportato nel documento.

Per altri assi, come ad esempio ancestor::, utilizzare il nome dell'asse in modo esplicito nell'espressione XPath. Per questo asse, l'insieme di progenitori viene indicizzato in base all'ordine inverso all'interno del documento. Si prenda in considerazione questo esempio dalla tabella precedente:

x/y[1]

L'espressione è equivalente a questa:

x/child::y[1]

Entrambe le espressioni significano "per ciascun elemento <x> selezionare il primo elemento figlio denominato <y>**".

Nell'esempio seguente viene utilizzata la stessa sintassi.

x/ancestor::y[1]

In questo esempio viene illustrata la seguente istruzione: "per ciascun elemento <x> selezionare il primo elemento progenitore (in base all'ordine inverso all'interno del documento) denominato <y>". La sintassi è la stessa, ma l'ordine è invertito.

Ricerca dell'ultimo elemento in un insieme

La funzione last() restituisce True per l'ultimo elemento in un insieme. Notare che last è relativo al nodo padre.

Esempi

Espressione Si riferisce a

book[last()]

L'ultimo elemento <book>.

book/author[last()]

L'ultimo elemento <author> all'interno di ciascun elemento <book>.

(book/author)[last()]

L'ultimo elemento <author> dall'intero set di elementi <author> all'interno di elementi <book>.

Raggruppamento

È possibile utilizzare parentesi per raggruppare operatori di insieme, per maggiore chiarezza o nel caso in cui la normale priorità non sia adeguata a esprimere un'operazione. Il raggruppamento di operatori può essere utilizzato in qualsiasi espressione di filtro (predicati) come author[(degree or award)and publication]. Può inoltre essere utilizzato in un'espressione di passaggio di livello superiore come (book|magazine) oppure (author/degree | book/award). Non può essere applicato a espressioni di passaggio di livello inferiore. Ad esempio, l'espressione author/(degree | award) non è valida.

Esempi

Espressione Si riferisce a

(book/author)

Tutti gli elementi <author> che sono elementi figlio di qualsiasi elemento <book> dal nodo di contesto corrente.

author[(degree or award) and publication]

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

Vedere anche

Riferimento

Esempi XPath

Concetti

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