XPath
XPath (ang. XML Path Language, w wolnym tłumaczeniu Język ścieżek XML, Język ścieżek rozszerzalnego języka znaczników) – język zapytań służący do adresowania części dokumentu XML.
XPath został oryginalnie zaprojektowany dla XSLT i XPointer, ale znajduje zastosowanie także w DOM oraz językach bazujących na XML, np. XQuery, XUL.
Budowa wyrażeń
Do wskazania w XPath węzła lub zbioru węzłów używa się ścieżki lokalizacji. Ścieżka ta z kolei składa się z jednego lub więcej kroków lokalizacji oddzielanych od siebie znakami / lub //. Jeśli ścieżka zaczyna się od „/”, nazywamy ją ścieżką bezwzględną, gdyż całą ścieżkę podaje się względem węzła głównego. W przeciwnym wypadku ścieżkę nazywamy względną, zaczyna się ona od bieżącego węzła nazywanego węzłem kontekstowym.
Krok lokalizacji składa się z osi, badania węzła oraz zera lub więcej predykatów. Jeśli np. wyrażenie ma postać
child::n:Kontakt[position()=2]
nazwą osi jest , badanie węzła to wyrażenie:
child
n:Kontakt
natomiast zapis:
[position()=2]
to predykat. Ścieżki lokalizacji składać się mogą z jednego lub więcej kroków lokalizacji, np.
/descendant::n:Adresy/child::n:Adres
wybiera elementy n:Adres mające rodzica n:Adresy.
Osie XPath
Oś to kolekcja węzłów lub atrybutów o określonym pokrewieństwie wobec węzła kontekstowego.
| Oś | Znaczenie |
|---|---|
|
dotyczy przodków węzła kontekstowego. Przodkami są rodzice węzła kontekstowego, rodzice tych rodziców itd., aż po węzeł główny włącznie |
|
dotyczy węzła kontekstowego i jego przodków |
|
dotyczy atrybutów węzła kontekstowego |
|
dotyczy dzieci węzła kontekstowego |
|
dotyczy potomków węzła kontekstowego. Potomek to dziecko, dziecko dziecka itd. |
|
dotyczy węzła kontekstowego i jego potomków |
|
dotyczy wszystkich węzłów z dokumentu, do którego należy węzeł kontekstu, które znajdują się po nim |
|
dotyczy wszystkich węzłów znajdujących się na tym samym poziomie co węzeł kontekstu, za tym węzłem |
|
dotyczy węzłów przestrzeni nazw węzła kontekstu |
|
dotyczy węzła rodzica węzła kontekstowego |
|
dotyczy wszystkich węzłów z dokumentu, do którego należy węzeł kontekstu, które znajdują się przed nim |
|
dotyczy wszystkich węzłów znajdujących się na tym samym poziomie co węzeł kontekstu, przed tym węzłem |
|
zawiera węzeł kontekstowy |
Badanie węzłów w XPath
Jako testów węzłów można użyć nazw węzłów, można też uzyć znaku „*” do wybrania wszystkich elementów. Np. wyrażenie:
child::*/child::n:Email
powoduje wybranie elementów n:Email będących „wnukami” węzła kontekstu. Można też użyć innych testów:
| Test węzła | Znaczenie |
|---|---|
|
wybiera węzły komentarzy |
|
wybiera węzły dowolnego typu |
|
wybiera węzły instrukcji przetwarzania, w nawiasach można podać także nazwę instrukcji |
|
wybiera węzły tekstowe |
Predykaty XPath
Predykaty zawierają wyrażenia XPath. Aby otoczyć predykat i przetestować to, czy występuje określony warunek, można użyć operatora „[]”. Można na przykład przestować:
- wartość atrybutu w danym łańcuchu
- wartość elementu
- to czy element zawiera określone „dziecko”, atrybut lub inny element
- pozycję węzła w drzewie
W predykatach można użyć dowolnego rodzaju typu wyrażeń:
- zbiory węzłów
- logiczne
- liczbowe
- tekstowe
- wynikowe fragmenty drzew
Zbiory węzłów XPath
Zbiór węzłów – jak wskazuje sama nazwa – to po prostu zbiór węzłów. Wyrażenie takie jak
n:Zainteresowania
zwraca zbiór węzłów elementów n:Zainteresowania.
Wyrażenie:
child::n:Zainteresowania/child::n:Zainteresowanie
zwraca listę węzłów elementów n:Zainteresowanie będących dziećmi elementów n:Zainteresowania. Do wybrania ze zbioru węzła lub węzłów można użyć różnych funkcji używanych w predykatach.
Funkcje XPath
| Funkcja | Znaczenie |
|---|---|
|
zwraca liczbę węzłów w zbiorze |
|
zwraca położenie węzła kontekstowego w zbiorze węzła kontekstowego |
|
zwraca liczbę węzłów w przekazanym zbiorze. Jeśli argument nie zostanie podany, zliczone zostaną węzły zbioru węzła kontekstowego |
|
zwraca adres URI przestrzeni nazw pierwszego węzła ze zbioru. Pominięcie parametru powoduje uruchomienie funkcji na węźle kontekstowym |
|
zwraca pełną kwalifikowaną nazwę pierwszego węzła ze zbioru. Pominięcie parametru powoduje uruchomienie funkcji na węźle kontekstowym |
|
zwraca nazwę lokalną pierwszego węzła ze zbioru węzłów. Pominięcie parametru powoduje uruchomienie funkcji na węźle kontekstowym |
Wyrażenia logiczne XPath
W wyrażeniach XPath można używać także wyrażeń logicznych. Liczba uważana jest za fałsz, jeśli jest równa zeru i uważana za prawdę w każdym innym przypadku. Napis pusty uważany jest za fałsz, wszystkie inne napisy odpowiadają prawdzie.
()
Operatory logiczne XPath umożliwiają wyliczenie wartości typu prawda-fałsz:
| Operator | Znaczenie |
|---|---|
!=
|
różne |
<
|
mniejsze |
<=
|
mniejsze bądź równe |
=
|
równe (w odróżnieniu od podwójnego znaku równości == w wielu językach programowania)
|
>
|
większe |
>=
|
większe bądź równe |
Poszczególne elementy wyrażenia logicznego łączyć można spójnikami and i or, podobnie jak w JavaScripcie i Javie.
Istnieją też funkcje true() i false() zwracające zawsze wartości odpowiednio prawdy i fałszu, a funkcji not() można użyć do odwrócenia logicznej wartości wyrażenia.
Liczby w XPath
Liczby w XPath zapisywane są jako zmiennoprzecinkowe liczby podwójnej precyzji. W takiej postaci przechowywane są wszystkie liczby, nawet liczby całkowite jak np. 2.
| Operator | Znaczenie |
|---|---|
|
dodawanie |
|
odejmowanie |
|
mnożenie |
|
dzielenie |
|
modulo (reszta z dzielenia pierwszego argumentu przez drugi) |
XPath obsługuje także kilka funkcji działających na liczbach:
| Funkcja | Znaczenie |
|---|---|
|
Zwraca najmniejszą liczbę całkowitą większą od liczby przekazanej jako parametr |
|
Zwraca największą liczbę całkowitą mniejszą od liczby przekazanej jako parametr |
|
Zaokrągla przekazaną liczbę do najbliższej liczby całkowitej |
|
Zwraca sumę przekazanych funkcji liczb |
Napisy w XPath
Napisy XPath składają się ze znaków Unicode. Poniżej zestawiono funkcje operujące na napisach:
| Funkcja | Znaczenie |
|---|---|
|
Zwraca prawdę, jeśli napis s1 zaczyna się napisem s2 |
|
Zwraca prawdę, jeśli napis s1 zawiera napis s2 |
|
Zwraca i znaków napisu s, poczynając od znaku o |
|
Zwraca część napisu s1 do pierwszego wystąpienia napisu s2 |
|
Zwraca część napisu s1, od pierwszego wystąpienia napisu s2 poczynając |
|
Zwraca liczbę znaków w napisie s |
|
Zwraca napis s po usunięciu spacji wiodących i końcowych oraz po zamianie wszystkich ciągów kolejnych spacji na pojedyncze spacje |
|
Zwraca napis s po zastąpieniu kolejnych znaków sf kolejnymi znakami napisu st |
|
Zwraca wszystkie przekazane napisy połączone w całość |
Składnia skrócona XPath
| Wyrażenie | Skrót |
|---|---|
|
|
|
|
child::dziecko
|
dziecko
|
attribute::dziecko
|
@dziecko
|
|
|
dziecko[position() = 3]
|
dziecko[3]
|
dziecko[position() = last()]
|
dziecko[last()]
|
Zobacz też
Linki zewnętrzne
- Specyfikacja XML Path Language (XPath) Version 1.0
- Specyfikacja XML Path Language (XPath) Version 2.0
- Funkcje i osie XPath
- Tutorial XPath (w języku niemieckim)
- Tutorial XPath (w języku angielskim)
- XSLT i XPath odniesienia (w języku niemieckim)
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.