XPath syntaks

XPath bruger stirekvisiter til at vælge noder eller nodemasser i et XML-dokument. Noder vælges ved at følge en sti (path) eller trin (steps).

XML eksempeldokument

Vi vil bruge denne XML-dokument i nedenstående 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 node

XPath bruger stirekvisiter 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 stirekvisiter listede:

Utryk Beskrivelse
nodename Vælg alle underknuder til dette element.
/ Vælg fra rodnoden.
// Vælg noder i dokumentet, der matcher den valgte node, uden at tage deres placering i betragtning.
. Vælg den aktuelle node.
.. Vælg forælderen til den aktuelle node.
@ Vælg egenskab.

Eksempel

I nedenstående tabel har vi listet nogle stirekvisiter og deres resultater:

Stiudspunktudtryk Resultat
bookstore Vælg alle underknuder 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 underelementer af 'bookstore'.
//book Vælg alle underelementer af 'book', uanset deres placering i dokumentet.
bookstore//book Vælg alle efterkommere af elementet 'bookstore', uanset deres placering under 'bookstore'.
//@lang Vælg alle egenskaber med navnet lang.

Predikat (Predicates)

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

Predikatet er indsat i klammer.

Eksempel

I nedenstående tabel viser vi nogle stiudspunktudtryk med predikat samt resultaterne for disse udtryk:

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

Vælg ukendte knudepunkter

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

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

Eksempel

I nedenstående tabel viser vi nogle stiudspunktudtryk samt resultaterne for disse udtryk:

Stiudspunktudtryk 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 stiudspunktudtrykket kan du vælge flere stier.

Eksempel

I nedenstående tabel viser vi nogle stiudspunktudtryk samt resultaterne for disse udtryk:

Stiudspunktudtryk 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 bookstore-elementet, samt alle price elementer i dokumentet.