Składnia XPath

XPath używa wyrażeń ścieżkowych do wybierania węzłów lub zbiorów węzłów w dokumencie XML. Węzły są wybierane poprzez ścieżki (path) lub kroki (steps).

Przykład dokumentu XML

Użyjemy tego dokumentu XML w poniższych przykładach.

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

Wybierz węzeł

XPath używa wyrażeń ścieżkowych do wybierania węzłów w dokumencie XML. Węzły są wybierane poprzez ścieżki lub kroki.

Poniżej wymieniliśmy najbardziej użyteczne wyrażenia ścieżkowe:

Wyrażenie Opis
nodename Wybierz wszystkie podwęzły tego węzła.
/ Wybierz z węzła korzenia.
// Wybierz węzły z bieżącego węzła, niezależnie od ich położenia w dokumencie.
. Wybierz bieżący węzeł.
.. Wybierz rodzica bieżącego węzła.
@ Wybierz atrybut.

Przykład

Poniżej w tabeli wymieniliśmy niektóre wyrażenia ścieżkowe oraz ich wyniki:

Wyrażenie ścieżki Wynik
bookstore Wybierz wszystkie podwęzły elementu bookstore.
/bookstore

Wybierz korzeń element bookstore.

Uwaga: Jeśli ścieżka zaczyna się od jednego ukośnika (/), zawsze reprezentuje ona absolutną ścieżkę do danego elementu!

bookstore/book Wybierz wszystkie elementy book, które są potomkami elementu bookstore.
//book Wybierz wszystkie potomki elementu book, niezależnie od ich położenia w dokumencie.
bookstore//book Wybierz wszystkie elementy book, które są potomkami elementu bookstore, niezależnie od ich położenia poniżej bookstore.
//@lang Wybierz wszystkie atrybuty o nazwie lang.

Predykaty (Predykaty)

Predykaty służą do wyszukiwania określonych węzłów lub węzłów zawierających określone wartości.

Predykaty są umieszczone w nawiasach kwadratowych.

Przykład

Poniżej w tabeli przedstawiamy wyrażenia ścieżki z predykatami oraz ich wyniki:

Wyrażenie ścieżki Wynik
/bookstore/book[1] Wybierz pierwszy element book, który jest potomkiem elementu bookstore.
/bookstore/book[last()] Wybierz ostatni element book, który jest potomkiem elementu bookstore.
/bookstore/book[last()-1] Wybierz drugi ostatni element book, który jest potomkiem elementu bookstore.
/bookstore/book[position()<3] Wybierz dwa pierwsze elementy book, które są potomkami elementu bookstore.
//title[@lang] Wybierz wszystkie elementy title, które mają atrybut lang.
//title[@lang='eng'] Wybierz wszystkie elementy title, które mają atrybut lang o wartości eng.
/bookstore/book[price>35.00] Wybierz wszystkie elementy book w elementach bookstore, gdzie wartość elementu price jest większa niż 35.00.
/bookstore/book[price>35.00]/title Wybierz wszystkie elementy title elementu book w elementach bookstore, gdzie wartość elementu price jest większa niż 35.00.

Wybierz nieznane węzły

Znak zastępczy XPath można użyć do wyboru nieznanych elementów XML.

Znak zastępczy Opis
* Dopasuj dowolny węzeł elementowy.
@* Dopasuj dowolny węzeł atrybutowy.
node() Dopasuj dowolny typ węzła.

Przykład

Poniżej w tabeli przedstawiamy niektóre wyrażenia ścieżki oraz ich wyniki:

Wyrażenie ścieżki Wynik
/bookstore/* Wybierz wszystkie potomne elementy elementu bookstore.
//* Wybierz wszystkie elementy dokumentu.
//title[@*] Wybierz wszystkie elementy title z atrybutami.

Wybierz kilka ścieżek

Przy użyciu operatora "|" w wyrażeniach ścieżki możesz wybrać kilka ścieżek.

Przykład

Poniżej w tabeli przedstawiamy niektóre wyrażenia ścieżki oraz ich wyniki:

Wyrażenie ścieżki Wynik
//book/title | //book/price Wybierz wszystkie elementy title i price elementu book.
//title | //price Wybierz wszystkie elementy title i price w dokumencie.
/bookstore/book/title | //price Wybierz wszystkie elementy title należące do elementu bookstore oraz wszystkie elementy price w dokumencie.