XPath używa wyrażeń ścieżki, aby wybrać węzły lub węzeł zestawów w dokumencie XML. Węzeł jest wybrany podąża ścieżką lub etapów.
Przykład dokumentu XML
Będziemy używać poniższego dokumentu XML w poniższych przykładach.
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book>
<title lang="en">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="en">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
Wybór węzłów
XPath używa wyrażeń ścieżki do wyboru węzłów w dokumencie XML. Węzeł jest wybrany podąża ścieżką lub etapów. Do najbardziej użytecznych wyrażeń ścieżki są wymienione poniżej:
Wyrażenie | Opis |
---|---|
nodename | Wybiera wszystkie węzły z nazwą „ nodename ” |
/ | Wybiera od węzła głównego |
// | Wybiera węzły w dokumencie z bieżącego węzła, który zgadza się na wybór bez względu na to gdzie się znajdują |
. | Wybiera bieżący węzeł |
.. | Zaznacza rodzica bieżącego węzła |
@ | Wybór atrybutów |
W poniższej tabeli mamy wymienione niektóre wyrażenia ścieżka i wynik wyrażenia:
ścieżka Expression | Wynik |
---|---|
Księgarnia | Wybiera wszystkie węzły z nazwą "bookstore" |
/Księgarnia | Wybiera element główny księgarni Note: Jeśli ścieżka zaczyna się od ukośnika ( / ) to zawsze oznacza bezwzględną ścieżkę do elementu! |
księgarnia / książki | Zaznacza wszystkie elementy książce, że jesteśmy dziećmi księgarni |
//książka | Zaznacza wszystkie elementy książki bez względu na to gdzie są one w dokumencie |
// książka księgarnia | Zaznacza wszystkie elementy książki, które są potomkiem elementu księgarni, bez względu na to gdzie są one pod elementem księgarni |
// @ lang | Wybiera wszystkie atrybuty, które są nazwane lang |
predykaty
Predykaty są wykorzystywane w celu znalezienia określonego węzła lub węzeł, który zawiera konkretną wartość.
Predykaty są zawsze osadzone w nawiasach kwadratowych.
W poniższej tabeli mamy wymienione niektóre wyrażenia ścieżki z orzeczników i wynik wyrażenia:
ścieżka Expression | Wynik |
---|---|
/ Księgarnia / książki [1] | Wybiera pierwszy element książki, że jest dzieckiem elementu księgarni. Note: W IE 5,6,7,8,9 pierwszy węzeł [0], lecz zgodnie z W3C, to [1]. Aby rozwiązać ten problem w IE, ustaw SelectionLanguage do XPath: In JavaScript: xml . setProperty("SelectionLanguage","XPath") ; |
/ Księgarnia / książka [ last() ] | Wybiera ostatni element książki, że jest dzieckiem elementu księgarni |
/ księgarnia / książka [ last() -1] | Wybiera przedostatniej książki element, który jest dzieckiem elementu księgarni |
/ księgarnia / książka [ position() <3] | Wybiera pierwsze dwa elementy książce, że są dziećmi elementu księgarni |
// nazwa [@lang] | Zaznacza wszystkie elementy tytułowe, które mają atrybut o nazwie lang |
// nazwa [@ język = 'PL'] | Zaznacza wszystkie elementy, które mają tytuł „lang” atrybutu o wartości "en" |
/bookstore/book[price>35.00] | Zaznacza wszystkie elementy ewidencyjna elementu księgarni, które mają element cenę o wartości większej niż 35,00 |
/bookstore/book[price>35.00]/title | Zaznacza wszystkie elementy tytuł elementów książki elementu księgarni, które mają element cenę o wartości większej niż 35,00 |
Wybór nieznana węzłów
dzikie karty XPath mogą być używane do wyboru nieznanych węzłów XML.
Dzika karta | Opis |
---|---|
* | Dopasowuje dowolny węzeł elementu |
@* | Dopasowuje dowolny węzeł atrybutu |
node() | Dopasowuje dowolny węzeł wszelkiego rodzaju |
W poniższej tabeli mamy wymienione niektóre wyrażenia ścieżka i wynik wyrażenia:
ścieżka Expression | Wynik |
---|---|
/Księgarnia/* | Wybiera wszystkie węzły element podrzędny elementu księgarni |
// * | Zaznacza wszystkie elementy w dokumencie |
//tytuł[@*] | Zaznacza wszystkie elementy tytułowe, które mają co najmniej jeden atrybut każdego rodzaju |
Wybierając różne ścieżki
Przy użyciu | Operator w wyrażeniu XPath można wybrać kilka ścieżek.
W poniższej tabeli mamy wymienione niektóre wyrażenia ścieżka i wynik wyrażenia:
ścieżka Expression | Wynik |
---|---|
// książka / title | // książka / cena | Wybiera wszystkie tytuł i cen elementy wszystkich elementów książki |
// tytuł | //cena | Wybiera wszystkie tytuł i cen elementy w dokumencie |
/ Księgarnia / książka / title | //cena | Zaznacza wszystkie elementy tytuł elementu książki elementu księgarnia i wszystkie elementy cen w dokumencie |