Osi XML (Axe)

Przykład dokumentu XML

Użyjemy tego dokumentu XML w poniższym przykładzie:

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>

  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
<price>39.95</price>

  <book>
  <title lang="eng">Learning XML</title>
<price>39.95</price>
</book>

</bookstore>

Oś XPath

Oś może być zdefiniowana względem bieżącego zestawu węzłów. Wynik
Nazwa osi ancestor
Wybierz wszystkie przodków bieżącego węzła (rodzic, dziadek itp.). ancestor-or-self
Wybierz wszystkie przodków bieżącego węzła (rodzic, dziadek itp.) oraz sam węzeł. Wybierz wszystkie atrybuty bieżącego węzła.
attribute Wybierz wszystkie potomki elementów bieżącego węzła.
child descendant
Wybierz wszystkie potomki bieżącego węzła (syn, wnuk itp.). descendant-or-self
Wybierz wszystkie potomki bieżącego węzła (syn, wnuk itp.) oraz sam węzeł. following
Wybierz wszystkie węzły po bieżącym węzle w dokumencie. namespace
Wybierz wszystkie węzły przestrzeni nazw bieżącego węzła. parent
Wybierz rodzica bieżącego węzła. preceding
Wybierz wszystkie węzły przed bieżącym węzłem w dokumencie. preceding-sibling
Wybierz wszystkie węzły siostrzeńce bieżącego węzła. self

Wybierz bieżący węzeł.

Wyrażenie ścieżki pozycyjnej

Ścieżka pozycyjna może być absolutna lub względna.

Ścieżka pozycyjna absolutna: Rozpoczyna się od ukośnika ( / ), podczas gdy ścieżka względna nie robi tego. W obu przypadkach ścieżka pozycyjna obejmuje jedną lub więcej kroków, które są rozdzielone ukośnikiem:

/step/step/...

Ścieżka pozycyjna względna:

step/step/...

Każdy krok jest obliczany na podstawie węzłów w bieżącym zestawie węzłów.

Krok (step) obejmuje:

Oś (axis)
Definiuj drzewo relacji między wybranymi węzłami a bieżącym węzłem
Test węzła (node-test)
Rozpoznaj węzły wewnątrz pewnej osi
Zero lub więcej przedeścigaczy (predykat)
Dalej wyodrębnij wybrany zestaw węzłów

Gramatyka kroku:

Nazwa osi::węzeł test[przedeścigacz]

Przykład

Przykład Wynik
child::book Wybierz wszystkie book węzły, które są potomkami bieżącego węzła.
attribute::lang Wybierz atrybut lang bieżącego węzła.
child::* Wybierz wszystkie potomki elementów bieżącego węzła.
attribute::* Wybierz wszystkie atrybuty bieżącego węzła.
child::text() Wybierz wszystkie tekstowe potomki bieżącego węzła.
child::node() Wybierz wszystkie potomki bieżącego węzła.
descendant::book Wybierz wszystkie potomki book dla bieżącego węzła.
ancestor::book Wybierz wszystkich przodków book
ancestor-or-self::book Wybierz wszystkich przodków book oraz bieżący węzeł (jeśli węzeł ten jest węzłem book)
child::*/child::price Wybierz wszystkie potomki price dla bieżącego węzła.