xpath
Percorsi di posizione e assi
Ricerca…
Osservazioni
Un percorso di posizione XPath è una serie di passaggi di posizione separati da un / personaggio:
step1/step2/step3
Un passaggio di posizione contiene un asse , un test del nodo e un elenco facoltativo di predicati . L' asse e il test del nodo sono separati da due caratteri di due punti :: . I predicati sono racchiusi tra parentesi quadre:
axis::nodeTest[predicate1][predicate2]
La valutazione di un percorso di ubicazione inizia con un set di nodi contenente il nodo di contesto dato dal contesto dell'espressione o dal nodo radice , se il percorso di ubicazione inizia con un / . Ad ogni passaggio, ogni nodo N nel set di nodi originale viene sostituito con l'insieme di nodi che
- può essere raggiunto da N seguendo l' asse dato,
- corrisponde al test del nodo e
- corrisponde a tutti i predicati .
Il risultato di un'espressione del percorso di posizione è il set di nodi finale ottenuto dopo l'elaborazione di tutti i passaggi di posizione .
Attraversando elementi figlio
Spostamento dal nodo radice a un elemento discendente utilizzando l'asse child :
/child::html/child::body/child::div/child::span
Poiché l'asse child è l'asse predefinito, questo può essere abbreviato in:
/html/body/div/span
Attraversando tutti i discendenti
Gli assi descendant e descendant-or-self possono essere utilizzati per trovare tutti gli elementi discendenti di un nodo a qualsiasi profondità. Al contrario, l'asse child attraversa solo i bambini immediati.
/child::html/descendant::span
/child::html/descendant-or-self::*
La doppia barra // è una scorciatoia per /descendant-or-self::node()/ . Quindi le seguenti espressioni sono equivalenti:
table//td
child::table/descendant-or-self::node()/child::td
child::table/descendant::td
table/descendant::td
Attraversando gli antenati
L'asse parent contiene solo il genitore di un nodo. L'espressione seguente seleziona l'elemento html effettuando una deviazione sull'elemento body :
/child::html/child::body/parent::html
.. è una scorciatoia per parent::node()
Gli assi degli ancestor e degli ancestor-or-self attraversano tutti gli antenati di un nodo. L'espressione seguente restituisce tutti gli elementi div che sono gli antenati del nodo di contesto:
ancestor::div
L'asse "auto"
L'asse self contiene solo il nodo di contesto stesso. L'espressione . è una scorciatoia per self::node() e corrisponde sempre al nodo di contesto. Il . il collegamento è utile per enumerare i discendenti del nodo di contesto. Le seguenti espressioni sono equivalenti:
.//span
self::node()/descendant-or-self::node()/child::span
descendant::span
L' self asse può essere utile in XPath 1.0 predicati. Ad esempio, per selezionare tutti i figli h1 , h2 e h3 del nodo di contesto:
*[self::h1 or self::h2 or self::h3]
Attraversando i nodi seguenti e quelli precedenti
I following-sibling assi following-sibling e following-sibling preceding-sibling contengono i fratelli prima o dopo il nodo di contesto e gli assi following e preceding contengono tutti i nodi nel documento prima o dopo il nodo di contesto, ma:
- Nessuno di questi assi contiene nodi attributo o namespace.
- L'asse
followingnon contiene discendenti. - L'asse
precedingnon contiene alcun antenato.
Esempi:
following::span[1]
following-sibling::*[last()]
Attributo di attraversamento e nodi dello spazio dei nomi
Gli assi attribute e namespace contengono tutti i nodi attributo e spazio dei nomi di un elemento. La scorciatoia @ sta per attribute:: , quindi i seguenti sono equivalenti:
child::div/attribute::class
div/@class