xpath
Ścieżki i osie lokalizacji
Szukaj…
Uwagi
Ścieżka lokalizacji XPath to seria kroków lokalizacji oddzielonych znakiem /
:
step1/step2/step3
Krok lokalizacji zawiera oś , test węzła i opcjonalną listę predykatów . Test osi i węzła są oddzielone dwoma znakami dwukropka ::
Predykaty są ujęte w nawiasy kwadratowe:
axis::nodeTest[predicate1][predicate2]
Ocena ścieżki lokalizacji rozpoczyna się od zestawu węzłów zawierającego węzeł kontekstu podany przez kontekst wyrażenia lub węzeł główny , jeśli ścieżka lokalizacji zaczyna się od znaku /
. Na każdym etapie każdy węzeł N w oryginalnym zestawie węzłów jest zastępowany zestawem węzłów, które
- można dotrzeć z N wzdłuż danej osi ,
- dopasowuje test węzła i
- pasuje do wszystkich predykatów .
Wynikiem wyrażenia ścieżki lokalizacji jest końcowy zestaw węzłów uzyskany po przetworzeniu wszystkich kroków lokalizacji .
Przemieszczanie elementów potomnych
Przechodzenie z węzła głównego do elementu child
za pomocą osi potomnej:
/child::html/child::body/child::div/child::span
Ponieważ oś child
jest osią domyślną, można ją skrócić do:
/html/body/div/span
Przemierzam wszystkich potomków
Osie descendant
i osie descendant-or-self
mogą być używane do znajdowania wszystkich elementów potomnych węzła na dowolnej głębokości. Natomiast oś child
przecina tylko bezpośrednie dzieci.
/child::html/descendant::span
/child::html/descendant-or-self::*
Podwójny ukośnik //
jest skrótem do /descendant-or-self::node()/
. Zatem następujące wyrażenia są równoważne:
table//td
child::table/descendant-or-self::node()/child::td
child::table/descendant::td
table/descendant::td
Przemierzający przodkowie
Oś parent
zawiera tylko element nadrzędny węzła. Poniższe wyrażenie wybiera element html
objeżdżając element body
:
/child::html/child::body/parent::html
..
to skrót do parent::node()
Osie ancestor
i osie przodek ancestor-or-self
przemierzają wszystkich przodków węzła. Poniższe wyrażenie zwraca wszystkie elementy div
, które są przodkami węzła kontekstu:
ancestor::div
Oś „ja”
Oś self
zawiera tylko sam węzeł kontekstowy. Wyrażenie .
jest skrótem do self::node()
i zawsze pasuje do węzła kontekstu. The .
Skrót jest przydatny do wyliczania potomków węzła kontekstu. Następujące wyrażenia są równoważne:
.//span
self::node()/descendant-or-self::node()/child::span
descendant::span
Oś self
może być pomocna w predykatach XPath 1.0. Na przykład, aby wybrać wszystkie potomne h1
, h2
i h3
węzła kontekstu:
*[self::h1 or self::h2 or self::h3]
Przechodzenie przez następujące i poprzednie węzły
Osie following-sibling
i preceding-sibling
zawierają rodzeństwo przed lub za węzłem kontekstu, a following
i preceding
osie zawierają wszystkie węzły w dokumencie przed lub za węzłem kontekstu, ale:
- Żadna z tych osi nie zawiera węzłów atrybutów ani przestrzeni nazw.
-
following
oś nie zawiera potomków. -
preceding
oś nie zawiera żadnych przodków.
Przykłady:
following::span[1]
following-sibling::*[last()]
Przechodzenie przez atrybuty i węzły przestrzeni nazw
Osie attribute
i namespace
zawierają wszystkie węzły atrybutu i przestrzeni nazw elementu. Skrót @
oznacza attribute::
, więc następujące są równoważne:
child::div/attribute::class
div/@class