XPath akselit (axes)

XML-esimerkkidokumentti

Käytämme alla olevaa XML-dokumenttia esimerkkinä:

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

Akseli määrittelee suhteellisesti nykyiseen solmuun verrattuna olevan solmujoukon.

Aksinimi Tulos
ancestor Valitse nykyisen solmun kaikki esi-isäsolmut (emo, isoveli jne.).
ancestor-or-self Valitse nykyisen solmun kaikki esi-isäsolmut (emo, isoveli jne.) sekä nykyinen solmu itsessään.
attribute Valitse kaikki attribuutit
child Valitse kaikki lapsielementit
descendant Valitse nykyisen solmun kaikki jälkeläissolmut (lapsi, lapsenlapsi jne.).
descendant-or-self Valitse nykyisen solmun kaikki jälkeläissolmut (lapsi, lapsenlapsi jne.) sekä nykyinen solmu itsessään.
following Valitse asiakirjassa nykyisen solmun loppusignaalimerkin jälkeen olevat kaikki solmut.
namespace Valitse nykyisen solmun kaikki nimenkuva-alasoluut.
parent Valitse nykyisen solmun emo-solmu.
preceding Valitse asiakirjassa nykyisen solmun alkusignaalimerkin edellä olevat kaikki solmut.
preceding-sibling Valitse nykyisen solmun edellä olevat kaikki saman tason solmut.
self Valitse nykyinen solmu.

Sijaintipolkuilmaisu

Sijaintipolku voi olla joko absoluuttinen tai suhteellinen.

Absoluuttinen polku alkaa oikeasta viivasta ( / ) ja suhteellinen polku ei näin. Molemmissa tapauksissa sijaintipolku sisältää yhden tai useamman askeleen, joka erotetaan viivalla:

Absoluuttinen sijaintipath:

/step/step/...

Suhteellinen sijaintipath:

step/step/...

Jokainen askel laskee nykyisen solmujoukon solmut perusteella.

Askeleet (step) sisältävät:

Akseli (axis)
Määritä valittujen solmujen ja nykyisen solmun välinen puurakenne
Solmutest (node-test)
Tunnista solmut tietystä akselista
Nolla tai useita lausekkeita (predicate)
Tarkenna valittua solmujoukkoa syvällisemmin

Askeleen syntaksi:

Akselin nimi::solmutest[ predicate ]

Esimerkki

Esimerkki Tulos
child::book Valitse kaikki nykyisen solmun lapsielementtien book-solmut
attribute::lang Valitse nykyisen solmun lang-ominaisuus
child::* Valitse kaikki lapsielementit
attribute::* Valitse kaikki attribuutit
child::text() Valitse kaikki tekstilapsisolmut
child::node() Valitse kaikki lapsisolmut
descendant::book Valitse kaikki book-lapsisolmut
ancestor::book Valitse kaikki book-esi-isät
ancestor-or-self::book Valitse kaikki book-esi-isät ja nykyinen solmu (jos tämä solmu on book-solmu)
child::*/child::price Valitse kaikki price-lapsisolmut nykyisestä solmusta.