Xpath är ett språk som används för att definiera delar av ett XML dokument, man använder uttryck för att navigera inom dokumentet.
Xpath består av ett bibliotek med standardfunktioner samt är en mycket viktig del inom XSLT, som används för att transformera XML visuellt.
Man kan med enkla uttryck lokalisera element, attribut och innehåll i ett XML-dokument, som man kanske vill hämta eller bearbeta på något sätt.
Exempel på ett enkelt XML-dokument:
<?xml version="1.0" encoding="ISO-8859-1"?>
<books>
<book>
<title lang="eng">Applying UML And Patterns</title>
<price>330</price>
<author>Craig Larman</author>
</book>
<book>
<title lang="eng">C# Patterns</title>
<price>432</price>
<author>Craig Larman</author>
</book>
</books>
Xpath uttryck för att hämta noder:
/ Utgår från rot-noden, hämtar alla
// Utgår från den aktuella noden, hämtar alla oberoende av matchning
. Hämtar den aktuella noden
.. Hämtar föräldern till den aktella noden
@ Hämtar attribut
Exempel:
//book Hämtar alla book-element, oavsett var de finns i dokumentet
//@lang Hämtar alla attribut som heter lang
Xpath predikat
/books/book[2] Hämtar det andra book-elementet som är ett barn till books.
/books/book[last()] Hämtar det sista book-elementet som är ett barn till books.
//title[@lang='eng'] Hämtar alla title-element med attributet lang, och värdet eng.
/books/book[price>400] Hämtar alla book-element som har ett pris som är mindre än 400.
Xpath wildcards (hämta okända noder)
* Matchar alla noder
@* Matchar alla attribut
node() Matchar alla noder av alla slag
Exempel:
/books/* Hämta alla noder som är barn till books
//* Hämta alla element i dokumentet
//title[@*] Hämta alla title-element som har ett attribut
Relationer mellan noder
Parent
Alla element och attribut har en förälder. I exemplet ovan är book förälder till title, author, price och lang.
Children
Element noder kan ha noll, en eller flera barn-noder. I exemplet ovan är title, price och author barn till book.
Siblings
Noder som har samma förälder, syskon. I exemplet ovan så är author, price och title syskon.
Ancestors
En nods förälder, förälder-nodens förälder etc. book är förälder til author, books är förälder till book.
Descendants
En nods barn, barnens barn. Book, author, price och title är barn till books.
Exempel:
child::book Hämtar alla book-noder som är barn till den aktuella noden
attribute::lang Hämtar alla lang-attribut för den aktuella noden
child::* Hämtar alla barn till den aktuella noden
attribute::* Hämtar alla attribut för den aktuella noden
descendant::book Hämtar alla barn och barnbarn till den aktuella noden
Just nu värderat 4.2 av 6 människor
- Currently 4,166667/5 Stars.
- 1
- 2
- 3
- 4
- 5
XML