XPath-kieli

XPath käyttää polkuilmauksia valitakseen solmuja tai solmusarjoja XML-dokumentista. Solmut valitaan polun tai askelten avulla.

XML-esimerkkidokumentti

Käytämme tätä XML-dokumenttia esimerkkinä alla.

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

Valitse solmu

XPath käyttää polkuilmauksia valitakseen solmuja XML-dokumentista. Solmut valitaan polun tai askeleen avulla.

Seuraavassa on lueteltu kaikkein hyödyllisimmät polkuilmaukset:

Ilmaisu Kuvaus
nodename Valitse tämän solmun kaikki lapsinodet.
/ Valitse juurelementti.
// Valitse dokumentin solmut, jotka vastaavat valittua solmua, riippumatta niiden sijainnista.
. Valitse nykyinen solmu.
.. Valitse nykyisen solmun vanhempi solmu.
@ Valitse attribuutti.

Esimerkki

Seuraavassa taulukossa on lueteltu joitakin polkuilmauksia ja niiden tuloksia:

Polkuilmaisu Tulos
bookstore Valitse bookstore-elementin kaikki lapsinodet.
/bookstore

Valitse juurelementti bookstore.

Huomautus: Jos polku alkaa suoralla viivalla (/), tämä polku edustaa aina johonkin elementtiin johtavaa absoluuttista polkua!

bookstore/book Valitse kaikki bookstore-elementin lapsielementtien book-elementit.
//book Valitse kaikki book-lapsielementit riippumatta niiden sijainnista dokumentissa.
bookstore//book Valitse kaikki book-elementit, jotka kuuluvat bookstore-elementin jälkeläisiin, riippumatta siitä, missä niiden sijainti on bookstore-elementin alla.
//@lang Valitse kaikki lang-nimellä varustetut ominaisuudet.

Predikaatti (Predicates)

Predikaatti käytetään tietyn solmun tai solmun määritellyn arvon löytämiseen.

Predikaatti on sisällytetty square-pareihin.

Esimerkki

Seuraavassa taulukossa luetellaan joitakin predikaattorilla varustettuja polkuilmaisuja sekä ilmaisujen tuloksia:

Polkuilmaisu Tulos
/bookstore/book[1] Valitse bookstore-elementin alielementin ensimmäinen book-elementti.
/bookstore/book[last()] Valitse bookstore-elementin alielementin viimeinen book-elementti.
/bookstore/book[last()-1] Valitse bookstore-elementin alielementin viimeinen book-elementti.
/bookstore/book[position()<3] Valitse ensimmäiset kaksi bookstore-elementin alielementtiin kuuluvaa book-elementtiä.
//title[@lang] Valitse kaikki lang-nimellä varustetut title-elementit.
//title[@lang='eng'] Valitse kaikki title-elementit, joilla on lang-ominaisuuden arvo eng.
/bookstore/book[price>35.00] Valitse bookstore-elementin kaikki book-elementit, ja niiden price-elementin arvon tulee olla suurempi kuin 35.00.
/bookstore/book[price>35.00]/title Valitse bookstore-elementin kaikki book-elementin title-elementit, ja niiden price-elementin arvon tulee olla suurempi kuin 35.00.

Valitse tuntemattomat solmut

XPath-yleispilkut voidaan käyttää tuntemattomien XML-elementtien valintaan.

Yleispilkku Kuvaus
* Sopii mihin tahansa elementtisolmuun.
@* Sopii mihin tahansa ominaisuussolmuun.
node() Sopii mihin tahansa solmuun.

Esimerkki

Seuraavassa taulukossa luetellaan joitakin polkuilmaisuja sekä näiden ilmaisujen tuloksia:

Polkuilmaisu Tulos
/bookstore/* Valitse bookstore-elementin kaikki alielementit.
//* Valitse dokumentin kaikki elementit.
//title[@*] Valitse kaikki ominaisuudella varustetut title-elementit.

Valitse useita polkuja

Voit valita useita polkuja käyttämällä polkuilmaisussa merkkijonoa “|”.

Esimerkki

Seuraavassa taulukossa luetellaan joitakin polkuilmaisuja sekä näiden ilmaisujen tuloksia:

Polkuilmaisu Tulos
//book/title | //book/price Valitse book-elementin kaikki title- ja price-elementit.
//title | //price Valitse dokumentin kaikki title- ja price-elementit.
/bookstore/book/title | //price Valitse kaikki bookstore-elementin book-elementin alle kuuluvat title-elementit sekä dokumentin kaikki price-elementit.