Szukaj…


Uwagi

Ścieżka lokalizacji XPath to seria kroków lokalizacji oddzielonych znakiem / :

step1/step2/step3

Krok lokalizacji zawiera , 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

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”

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

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


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow