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.
-
followingoś nie zawiera potomków. -
precedingoś 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