XPath syntax

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

XML-exempel

Vi kommer att använda detta XML-dokument i de följande exemplen.

<?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änds för att välja noder i ett XML-dokument med hjälp av en sökvägsexpression. Noder väljs genom att följa sökvägen eller stegen.

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

Uttryck Beskrivning
nodename Välj alla underlättningar till denna nod.
/ Välj från roten.
// Välj dokumentets noder från den aktuella matchade 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ägar och deras resultat:

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

Välj root-elementet bookstore.

Kommentar: Om sökvägen börjar med en vertikal streck (/), representerar denna sökväg alltid den absoluta vägen till ett element!

bookstore/book Välj alla book-element som är underlättningar till bookstore-elementet.
//book Välj alla book-underlättningar, oavsett deras plats i dokumentet.
bookstore//book Välj alla book-element som är underlättningar till bookstore-elementet, oavsett deras plats under bookstore.
//@lang Välj alla egenskaper som heter lang.

Predikat (Predicators)

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

Predikat är inskrivna i klamrar.

Exempel

I tabellen nedan har vi listat några predikat och deras resultat:

Sökvägsexpression Resultat
/bookstore/book[1] Välj det första book-elementet i bookstore-elementet.
/bookstore/book[last()] Välj det sista book-elementet i bookstore-elementet.
/bookstore/book[last()-1] Välj det andra book-elementet från slutet i bookstore-elementet.
/bookstore/book[position()<3] Välj de två första book-elementen som är under bookstore-elementet.
//title[@lang] Välj alla title-element som har en lang-egenskap.
//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 inom 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 från 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
* Matchar alla elementnoder.
@* Matchar alla egenskapsnoder.
node() Matchar alla typer av noder.

Exempel

I tabellen nedan listas några sökvägsexpressioner och resultaten av dessa uttryck:

Sökvägsexpression Resultat
/bookstore/* Välj alla underlement till bookstore-elementet.
//* Välj alla element i dokumentet.
//title[@*] Välj alla title-element med egenskaper.

Välj flera sökvägar

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

Exempel

I tabellen nedan listas några sökvägsexpressioner och resultaten av dessa uttryck:

Sökvägsexpression Resultat
//book/title | //book/price Välj alla title- och price-element från book-elementet.
//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.