Operatori e caratteri speciali
Le espressioni XPath sono costruite utilizzando gli operatori e i caratteri speciali visualizzati nella seguente tabella.
|
Operatore figlio: seleziona i nodi figlio immediati dell'insieme di sinistra. Se questo operatore di percorso è presente all'inizio del pattern, indica che i nodi figlio devono essere selezionati dal nodo radice. |
|
Discesa ricorsiva: ricerca l'elemento specificato a qualsiasi livello. Quando questo operatore di percorso viene visualizzato all'inizio del pattern, indica una discesa ricorsiva dal nodo radice. |
|
Indica il contesto corrente. |
|
Il nodo padre del nodo di contesto corrente. |
|
Carattere jolly: seleziona tutti gli elementi senza considerarne il nome. |
|
Attributo: prefisso per un nome di attributo. |
|
Carattere jolly dell'attributo: seleziona tutti gli attributi senza considerarne il nome. |
|
Separatore spazio dei nomi: separa il prefisso dello spazio del nome dall'elemento o dal nome dell'attributo. |
|
Raggruppa le operazioni per stabilire esplicitamente la precedenza. |
|
Applica un modello del filtro. |
|
Operatore indice: utilizzato per l'indicizzazione all'interno di una raccolta. |
|
Esegue l'addizione. |
|
Esegue la sottrazione. |
|
Esegue la divisione a virgola mobile in base alla norma IEEE 754. |
|
Esegue la moltiplicazione. |
|
Restituisce la parte rimanente di una divisione di troncamento. |
Questa tabella non include operatori sugli insiemi e operatori booleani, che sono elencati in Espressioni booleane, di confronto e set oppure Operazioni sugli insiemi.
L'ordine di precedenza (dalla priorità più alta a quella più bassa) viene definito come indicato nella seguente tabella.
Precedenza | Carattere | Scopo |
---|---|---|
1 |
|
Raggruppamento |
2 |
|
Filtri |
3 |
|
Operazioni di percorso |
L'operatore di gruppo ()
è applicabile solo all'espressione di livello superiore. Ad esempio, (//author/degree | //author/name)
è un'operazione di raggruppamento valida, mentre //author/(degree | name)
non lo è.
Gli operatori dei modelli del filtro ([]
) hanno la precedenza sugli operatori di percorso (/
e //
). Ad esempio, l'espressione //comment()[3]
seleziona tutti i commenti con un indice uguale a 3 relativo all'elemento padre dei commenti in un punto qualsiasi del documento. Questa differisce dall'espressione (//comment())[3]
, che seleziona il terzo commento dal set di tutti i commenti relativi all'elemento padre dei commenti. La prima espressione può restituire più di un commento, mentre l'ultima può restituirne solo uno.
Questi operatori e i caratteri speciali sono descritti dettagliatamente nel presente documento di riferimento.
Operatori di percorso
L'insieme di elementi di un certo tipo può essere determinato utilizzando gli operatori di percorso (/
and //
). Nella parte sinistra di questi operatori sono indicati gli argomenti sui quali eseguire la selezione, mentre nella parte destra sono indicati gli elementi da selezionare. L'operatore figlio (/
) seleziona dai nodi figlio immediati dell'insieme di sinistra, mentre l'operatore discendente (//
) seleziona da discendenti arbitrari dell'insieme di sinistra. In effetti, //
può essere considerato un sostituto per uno o più livelli di gerarchia.
Notare che gli operatori di percorso modificano il contesto mentre viene eseguita la query. Mettendo insieme gli operatori di percorso, gli utenti possono scorrere la struttura ad albero del documento.
Esempi
Espressione | Si riferisce a |
---|---|
|
Tutti gli elementi |
|
Tutti gli elementi |
|
Tutti gli elementi |
|
Tutti gli elementi |
|
Tutti gli elementi |
Carattere jolly
È possibile fare riferimento a un elemento senza utilizzarne il nome, sostituendo l'insieme di caratteri jolly (*
). La raccolta *
fa riferimento a tutti gli elementi figlio del contesto corrente, indipendentemente dal nome di tag.
Esempi
Espressione | Si riferisce a |
---|---|
|
Tutti gli elementi figlio degli elementi |
|
Tutti gli elementi |
|
Tutti gli elementi nipote del contesto corrente. |
|
L'elemento |
|
Tutti gli elementi dallo spazio dei nomi |
Notare che il pattern *:book
non è supportato.
Attributi
XPath denota i nomi degli attributi con il simbolo @
. Gli attributi e gli elementi figlio sono trattati in modo imparziale e le relative capacità sono equivalenti laddove possibile.
Nota: |
---|
Gli attributi non possono contenere elementi figlio, pertanto si verificano errori di sintassi se gli operatori di percorso vengono applicati agli attributi.Inoltre, non è possibile applicare un indice agli attributi perché, per definizione, per gli attributi non è definito alcun ordine. |
Esempi
Espressione | Si riferisce a |
---|---|
|
L'attributo |
|
L'attributo |
|
L'attributo |
Notare che il seguente esempio non è valido poiché un attributo non può avere attributi figlio.
price/@exchange/total
Ricerca di più attributi
Tutti gli attributi di un elemento possono essere restituiti utilizzando @*
. Questo è potenzialmente utile per applicazioni che trattano gli attributi come i campi di un record.
Esempi
Espressione | Si riferisce a |
---|---|
|
Tutti gli attributi del nodo di contesto corrente. |
|
Tutti gli attributi dallo spazio dei nomi |
Notare che il pattern @*:title
non è supportato.
Vedere anche
Riferimento
Concetti
Operazioni sugli insiemi
File XML di esempio per la sintassi di XPath (inventory.xml)