Oś XPath (Axes)

Dokument przykładowy XML

Użyjemy tego dokumentu XML w poniższych przykładach:

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>
<book>
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>
</bookstore>

Oś XPath

Oś może definiować zbiór węzłów w stosunku do bieżącego węzła.

Nazwa osi Wynik
ancestor Wybierz wszystkich przodków (rodzic, pradziad itp.).
ancestor-or-self Wybierz wszystkich przodków (rodzic, pradziad itp.) oraz sam węzeł.
attribute Wybierz wszystkie atrybuty
child Wybierz wszystkich potomków elementów
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 etykiecie końcowej bieżącego węzła 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 etykietą startową bieżącego węzła w dokumencie.
preceding-sibling Wybierz wszystkie równe węzły przed bieżącym węzłem.
self Wybierz bieżący węzeł.

Wyrażenie ścieżki pozycyjnej

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

Absolutna ścieżka zaczyna się od poprawnego ukośnika ( / ), podczas gdy względna ścieżka nie jest taka. W obu przypadkach, ścieżka pozycyjna obejmuje jedną lub kilka kroków, każdy z nich jest rozdzielony ukośnikiem:

Wzór pozycji absolutnej:

/step/step/...

Wzór pozycji relatywnej:

step/step/...

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

Krok (step) obejmuje:

Oś (axis)
Zdefiniuj relację drzewienną między wybranymi węzłami a bieżącym węzłem
Test węzła (node-test)
Rozpoznaj węzły wewnątrz osi
Zero lub więcej przysłówek (predicate)
Dalej wyodrębnij wybrany zestaw węzłów

Gramatyka kroku:

Nazwa osi::test węzła[przysłówek]

Przykład

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