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 |
---|---|
|
Tutti gli elementi |
|
Tutti gli elementi |
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 |
---|---|
|
Il primo elemento |
|
Il terzo elemento |
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 |
---|---|
|
Il primo elemento |
|
Il primo elemento |
|
Il primo elemento |
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 |
---|---|
|
L'ultimo elemento |
|
L'ultimo elemento |
|
L'ultimo elemento |
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 |
---|---|
|
Tutti gli elementi |
|
Tutti gli elementi |
Vedere anche
Riferimento
Concetti
File XML di esempio per la sintassi di XPath (inventory.xml)