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