(, 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 .

został oryginalnie zaprojektowany dla i , ale znajduje zastosowanie także w oraz językach bazujących na , np. , .

Budowa wyrażeń Do wskazania w 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: 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 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 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 Predykaty zawierają wyrażenia . Aby otoczyć predykat i przetestować to, czy występuje określony warunek, można użyć operatora „[]”. Można na przykład przetestować: 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 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 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 W wyrażeniach 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 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 Liczby w 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)

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 Napisy 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 Wyrażenie Skrót child::dziecko dziecko attribute::dziecko @dziecko dziecko[position() = 3] dziecko dziecko[position() = last()] dziecko[last()]

Zobacz też DOM – Obiektowy model dokumentu

,

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)

Kategoria:XML Kategoria:Rdzenne technologie XML-a