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 following non contiene discendenti.
  • L'asse preceding non 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


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow