XPath syntaks

XPath bruger stipløse udtryk til at vælge noder eller en samling af noder i et XML-dokument. Noder vælges ved at følge en sti (path) eller trin (steps).

XML eksempeldokument

Vi vil bruge dette XML-dokument i de følgende eksempler.

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

Vælg noder

XPath bruger stipløse udtryk til at vælge noder i et XML-dokument. Noder vælges ved at følge en sti eller trin.

Nedenfor er de mest nyttige stiplæsninger:

Utrykket Beskrivelse
nodename Vælg alle underordnede noder til dette element.
/ Vælg fra rodnoden.
// Vælg dokumentets node fra den aktuelle valgte node, uanset deres placering.
. Vælg den aktuelle node.
.. Vælg den forældre node til den aktuelle node.
@ Vælg egenskab.

Eksempel

I nedenstående tabel har vi listet nogle stiplæsninger og deres resultater:

Stiudtryk Resultat
bookstore Vælg alle underordnede noder af bookstore-elementet.
/bookstore

Vælg rod-elementet bookstore.

Bemærk: Hvis stien starter med en ret linje (/), repræsenterer denne sti altid en absolut sti til et element!

bookstore/book Vælg alle book-elementer, der er underordnede elementer af bookstore.
//book Vælg alle book-underordnede elementer, uanset deres placering i dokumentet.
bookstore//book Vælg alle book-efterkommere af bookstore-elementet, uanset deres placering under bookstore.
//@lang Vælg alle @lang-attributter.

Predikat (Predicates)

Predikatet bruges til at finde en bestemt node eller en node, der indeholder en specificeret værdi.

Predikatet er indlejret i klammer.

Eksempel

I nedenstående tabel viser vi nogle predikat-pålæsninger og deres resultater:

Stiudtryk Resultat
/bookstore/book[1] Vælg det første book-element, der er et barn af bookstore-elementet.
/bookstore/book[last()] Vælg den sidste book-element, der er et barn af bookstore-elementet.
/bookstore/book[last()-1] Vælg den anden sidste book-element, der er et barn af bookstore-elementet.
/bookstore/book[position()<3] Vælg de to første book-elementer, der er børn af bookstore-elementet.
//title[@lang] Vælg alle title-elementer, der har en lang-attribut.
//title[@lang='eng'] Vælg alle title-elementer, der har en lang-attribut med værdien eng.
/bookstore/book[price>35.00] Vælg alle book-elementer inden for bookstore-elementet, hvor price-elementets værdi skal være større end 35.00.
/bookstore/book[price>35.00]/title Vælg alle title elementer i book elementer i bookstore, hvor price elementets værdi skal være større end 35.00.

Vælg ukendte knudepunkter

XPath wildcards kan bruges til at vælge ukendte XML elementer.

Wildcards Beskrivelse
* Matcher alle elementknudepunkter.
@* Matcher alle egenskabsknudepunkter.
node() Matcher alle typer af knudepunkter.

Eksempel

I nedenstående tabel viser vi nogle stiudtryk samt resultaterne af disse udtryk:

Stiudtryk Resultat
/bookstore/* Vælg alle underelementer af bookstore elementet.
//* Vælg alle elementer i dokumentet.
//title[@*] Vælg alle title elementer med egenskaber.

Vælg flere stier

Ved at bruge operatoren "|" i stiudtryk kan du vælge flere stier.

Eksempel

I nedenstående tabel viser vi nogle stiudtryk samt resultaterne af disse udtryk:

Stiudtryk Resultat
//book/title | //book/price Vælg alle title og price elementer i book elementet.
//title | //price Vælg alle title og price elementer i dokumentet.
/bookstore/book/title | //price Vælg alle title elementer, der tilhører book elementer i bookstore, samt alle price elementer i dokumentet.