XPath Axes (axes)

XML-exempel

Vi kommer att använda detta XML-dokument i följande exempel:

<?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>

XPath-axel

En axel kan definiera en nodelåda relativt den aktuella noden.

Axelnamn Resultat
ancestor Välj alla förfäder (förälder, farförälder m.m.).
ancestor-or-self Välj alla förfäder (förälder, farförälder m.m.) samt den aktuella noden själv.
attribute Välj alla egenskaper till den aktuella noden.
child Välj alla barnelement till den aktuella noden.
descendant Välj alla efterkommande element (barn, barnbarn m.m.).
descendant-or-self Välj alla efterkommande element (barn, barnbarn m.m.) samt den aktuella noden själv.
following Välj alla noder efter den aktuella nodens sluttecken i dokumentet.
namespace Välj alla namnrymdsnoder för den aktuella noden.
parent Välj den aktuella nodens föräldern.
preceding Välj alla noder innan den aktuella nodens börjanstecken i dokumentet.
preceding-sibling Välj alla jämlika noder innan den aktuella noden.
self Välj den aktuella noden.

Sökvägsuttryck

Sökvägen kan vara absolut eller relativ.

Det absoluta sökvägen börjar med en vertikal linje ( / ), medan den relativa sökvägen inte gör det. I båda fallen inkluderar sökvägen en eller flera steg, varje steg är delat av en vertikal linje:

Absolut positionspath:

/step/step/...

Relativ positionspath:

step/step/...

Varje steg beräknas baserat på noder i den aktuella noduppsättningen.

Steg (step) inkluderar:

Axel (axis)
Definiera det trädrelaterade förhållandet mellan den valda noden och den aktuella noden
Nodtest (node-test)
Identifiera noder inom en axel
Ingen eller flera frågeord (predicate)
Fördjupa urval av den valda noduppsättningen

Stegs syntax:

Axelns namn::nodtest[fråge]

Fall

Exempel Resultat
child::book Välj alla book-noder som tillhör alla barn till den aktuella noden.
attribute::lang Välj den aktuella noddens lang-egenskap.
child::* Välj alla barnelement till den aktuella noden.
attribute::* Välj alla egenskaper till den aktuella noden.
child::text() Välj alla textbarnnoder till den aktuella noden.
child::node() Välj alla barnnoder till den aktuella noden.
descendant::book Välj alla book efterkommande till den aktuella noden.
ancestor::book Välj alla book förfäder till den aktuella noden.
ancestor-or-self::book Välj alla book förfäder och den aktuella noden (om denna nod är en book-nod)
child::*/child::price Välj alla price barnnoderna till den aktuella noden.