XML Pointer Language, zajmuje się opisem schematu adresowania części dokumentu. Technologia ta oparta jest o XPath który to określa drzewiastą dokumentu XML.
XPointer umożliwia dokładne określenie konkretnego węzła w dokumencie, niewymagające przy tym aby był on specjalnie wyróżniony. Aby wybrać konkretny element możemy skorzystać z jego nazwy, kolejności występowania, typu lub też relacji z innymi elementami zawartymi w dokumencie.
XPointer opiera się na ścieżkach dostępowych. Każda ścieżka składa się z kroków które to określają miejsce docelowe. Aby lepiej wyrazić o co chodzi zademonstruje to na przykładzie:
Załóżmy teraz, że chcemy wskazać zawartość elementu akapit:
xpointer(/child::dokument/child::akapit)
W tym wypadku wybraliśmy część /child::dokument okresla, ze wybraliśmy wszystkie elementy potomne węzła podstawowego dokument. Dalej child::akapit oznacza, że wybraliśmy wszystkie elementy potomne dokument o nazwie akapit. Ponad do w XPoiter istnieje jeszcze 12 rodzajów osi:
1. ancestor - wybór wszystkich rodziców węzła kontekstowego aż do węzła podstawowego 2. ancestor-or-self - wybór węzła kontekstowego i wszystkich węzłów które go zawiera jaw sposób pośredni lub bezpośredni 3. attribute - wybór atrybutów węzła kontekstowego 4. child - wybór potomków ( bezpośrednich ) węzła kontekstowego 5. descendant-or-self - wybór węzła kontekstowego i jego wszystkich potomków 6. descendant - wybór wszystkich potomków węzła kontekstowego 7. following - wybór wszystkich elementów, występujących kolejno po elemencie kontekstowym pomijając jakakolwiek hierarchię 8. following-sibling - wybór wszystkich węzłów występujących po węźle kontekstowym posiadających ten sam elemnt-rodzic 9. parent - wybór bezpośredniego rodzica węzła 10. preceding - wybór wszystkich węzłów pomijając jakąkolwiek hierarchię występujących przed węzłem 11. preceding-sibling - wybór wszystkich węzłów przed węzłem posiadających tego samego rodzica 12. self - wybór węzła
Wyboru węzłów możemy ponadto dokonać w inny sposób:
* - wybór wszystkich węzłów elementowych node() - wybór wszystkich text() - wybór węzłów tekstowych tj. processing-instruction() - wybór węzłów z instrukcjami przetwarzania point() - wybór określonego miejsca w blokach tekstu range() - XPointer dostarcza narzędzi do wyboru określonego zakresu z dokumentu. W tym celu należy określić ścieżkę dostępu. Przykład ( do punktu 3 )
dokument/attribute::kolor
Przykład ( do punktu 7 ) //temat/following::*[position()=6]
Ponadto XPointer zawiera w sobie cztery funkcje zawierające zbiory węzłów:
id() - funkcja zwraca ten element dokumentu który zawiera konkretna wartość id. root() - zwraca wartość węzła podstawowego here - funkcje tę stosuje się najczęściej w przypadku linków wewnątrz dokumentu origin() - dział podobnie jak poprzednia, jest jednak uznana w połączeniach autonomicznych.