XPath-syntaks

XPath använder sökvägsuttryck för att välja noder eller nodgrupper i XML-dokument. Noder väljs genom att följa sökvägen (path) eller stegen (steps).

XML-exempel

Vi kommer att använda denna XML-dokument i våra exempel nedan.

<?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älj noder

XPath använder sökvägsuttryck för att välja noder i XML-dokument. Noder väljs genom att följa sökvägen eller stegen.

Nedan listas de mest användbara sökvägsuttrycken:

Uttryck Beskrivning
nodename Välj alla undernoder till denna nod.
/ Välj från roden.
// Välj noder i dokumentet som matchar den aktuella valda noden, utan att ta hänsyn till deras plats.
. Välj den aktuella noden.
.. Välj föräldern till den aktuella noden.
@ Välj egenskap.

Exempel

I tabellen nedan har vi listat några sökvägsuttryck och deras resultat:

Sökvägsexpression Resultat
bookstore Välj alla undernoder till bookstore-elementet.
/bookstore

Välj roden elementet bookstore.

Anmärkning: Om sökvägen börjar med en direkt skråstreck (/), representerar denna sökväg alltid den absoluta vägen till ett element!

bookstore/book Välj alla book-element som är underelement till bookstore.
//book Välj alla book-underelement, oavsett deras plats i dokumentet.
bookstore//book Välj alla book-element som är efterkommande till bookstore-element, oavsett deras plats under bookstore.
//@lang Välj alla egenskaper med namnet lang.

Predikat (Predicates)

Predikat används för att hitta specifika noder eller noder som innehåller specifika värden.

Predikat är inskrivna i klamrar.

Exempel

I följande tabell listas några sökvägsexpressioner med predikat samt resultaten av dessa uttryck:

Sökvägsexpression Resultat
/bookstore/book[1] Välj det första book-elementet som är ett underelement till bookstore-elementet.
/bookstore/book[last()] Välj det sista book-elementet som är ett underelement till bookstore-elementet.
/bookstore/book[last()-1] Välj det andra sista book-elementet som är ett underelement till bookstore-elementet.
/bookstore/book[position()<3] Välj de två första book-elementen som är underelement till bookstore-elementet.
//title[@lang] Välj alla title-element som har en egenskap med namnet lang.
//title[@lang='eng'] Välj alla title-element som har en lang-egenskap med värdet eng.
/bookstore/book[price>35.00] Välj alla book-element i bookstore-elementet, där price-elementets värde måste vara större än 35.00.
/bookstore/book[price>35.00]/title Välj alla title-element i book-elementet i bookstore-elementet, där price-elementets värde måste vara större än 35.00.

Välj okända noder

XPath wildcards kan användas för att välja okända XML-element.

Wildcards Beskrivning
* Matcha alla elementnoder.
@* Matcha alla egenskapsnoder.
node() Matcha alla typer av noder.

Exempel

I följande tabell listas några sökvägsexpressioner samt resultaten av dessa uttryck:

Sökvägsexpression Resultat
/bookstore/* Välj alla underelement till bookstortlementet.
//* Välj alla element i dokumentet.
//title[@*] Välj alla title-element som har egenskaper.

Välj flera sökvägar

Genom att använda operatorsättet "|" i sökvägsexpressioner kan du välja flera sökvägar.

Exempel

I följande tabell listas några sökvägsexpressioner samt resultaten av dessa uttryck:

Sökvägsexpression Resultat
//book/title | //book/price Välj alla title- och price-element från book-elementen.
//title | //price Välj alla title och price-element i dokumentet.
/bookstore/book/title | //price Välj alla title-element som tillhör bookstore-elementet och alla price-element i dokumentet.