XPath

XPath

Opis obrazu Diagram Sederhana XPath.png. Informacja
Opracowany przez Konsorcjum World Wide Web
Pierwsza wersja 1999
Ostatnia wersja 3,1 (21 marca 2017 r)
Czytaj formaty Extensible Markup Language i JavaScript Object Notation
Rodzaj Język zapytań
Język programowania

XPath to język zapytań służący do lokalizowania części dokumentu XML . Pierwotnie stworzony w celu zapewnienia składni i semantyki dla funkcji wspólnych dla XPointer i XSL , XPath został szybko przyjęty przez programistów jako łatwy w użyciu język zapytań.

Składnia i semantyka

Wyrażenie XPath to ścieżka lokalizacji składająca się z kroków lokalizacyjnych (zwanych również krokami w języku francuskim ). Kroki lokalizacji są oddzielone znakiem „/”.

Każdy etap lokalizacji składa się z trzech elementów:

  1. oś (rodzic, potomek…);
  2. test węzła (nazwa lub funkcja wyznaczająca węzły);
  3. predykaty (w nawiasach kwadratowych).

Oś wskazuje kierunek, w którym należy poruszać się w drzewie XML, względem bieżącego węzła lub od korzenia. Na przykład child::wybierze węzły potomne bieżącego węzła. W XPath, gdy oś nie jest określona, ​​jest ona niejawnie osią dzieci ( child::). Inną szeroko stosowaną osią są atrybuty, reprezentowane przez znak at ( @). Na wszystkich 13 osiach można wyrazić relacje genealogiczne lub uwzględniające kolejność czytania dokumentu.

Test węzłów pozwala wybrać lub nie węzły według ich nazwy lub typu. Na przykład test text()wybierze wszystkie węzły tekstu tekstowego (w rozważanej osi).

Predykaty to bardziej złożone wyrażenia; służą do filtrowania węzłów wybranych przez oś i do testu węzłów. Predykaty są zapisywane w nawiasach kwadratowych („[”, „]”). Jeśli predykat ma wartość true, zostaną wybrane odpowiednie węzły.

W ten sposób XPath oferuje sekwencyjne wyszukiwanie według węzłów. Wynikiem oceny wyrażenia XPath jest sekwencja zawierająca węzły i wartości atomowe (teksty, wartości logiczne…).

W zależności od charakteru (liczba, wartość logiczna, tekst) wybranych wartości, XPath oferuje szereg funkcji. Funkcje te są ograniczone, ponieważ są przeznaczone bardziej do wykorzystania w predykatach niż do przetwarzania wybranych danych.

Funkcje, które mają zastosowanie do najczęściej używanych liczb to: sum (), count () i operatory arytmetyczne. Funkcje, które mają zastosowanie do najczęściej używanych ciągów to: substring (), string-length (), concat ().

Przykłady XPath 1

Rozważmy następujący dokument XML:

<?xml version="1.0"?> <racine> <encyclopedie nom="Wikipedia" site="http://fr.wikipedia.org/"> <article nom="XPath"> <auteurs> <auteur> <nom>Dupont</nom> </auteur> <auteur> <nom>Dubois</nom> </auteur> </auteurs> </article> </encyclopedie> </racine> Przykłady zapytań bezwzględnych
Wyrażenie XPath Wynik
/ wybiera „fikcyjny” węzeł, nazywany elementem głównym , który obejmuje cały dokument, w tym typ dokumentu <? xml version = "1.0"?>
/ root wybierz pusty węzeł, ponieważ nie ma elementu „root” (ale „root” )
// artykuł wybiera wszystkie „artykuły” w dokumencie, gdziekolwiek się one znajdują
/ root / encyklopedia wybiera jedyny element „encyklopedii” , ponieważ jest to jedyny element potomny „root” noszący tę nazwę
// artykuł [@ name = 'XPath'] wybiera wszystkie elementy dokumentu „artykuł”, gdziekolwiek się one znajdują, mając atrybut „nazwa” o wartości „XPath”

Wszystkie te wyrażenia XPath są bezwzględne (zaczynają się od znaku „/” ), to znaczy dają ten sam wynik niezależnie od kontekstu. Poniższe wyrażenia są względne . Jeśli obecny kontekst jest jedynym elementem „encyklopedii” , podają:

Przykłady zapytań względnych
w kontekście elementu encyklopedii
Wyrażenie XPath Wynik
pozycja wybierz element „artykuł”
korzeń nie wybiera niczego, biorąc pod uwagę kontekst
artykuł [1] / autorzy / autor [2] wybiera drugiego autora (Dubois) pierwszego artykułu
artykuł [liczba (artykuł / autorzy / autor)> 1] wybierz artykuły, które mają co najmniej 2 autorów
../korzeń wybiera element „główny” , ponieważ jest on elementem nadrzędnym bieżącego elementu

Wynik tych wyborów będzie zależał od charakteru zadania:

  • Na wyświetlaczu będzie to wartość tekstowa, specyficzna dla każdego typu elementu, który się pojawi. Jeśli zaznaczonych jest kilka węzłów, jak w przypadku // artykuł , dotyczy to tylko pierwszego.
  • Po wybraniu będzie zachowywał się jak wskaźnik, na którym można tworzyć inne żądania XPath.

Ewolucje

Składnia XPath ewoluowała i stała się bardziej kompletna. Standardowy XPath 2.0  ( cale ) , zalecenie W3C od23 stycznia 2007opisuje wspólny podzbiór języków XSLT 2.0 i XQuery 1.0, stanowiąc również znacznie bogatszy samodzielny język zapytań XML niż pierwsza wersja zawarta w XSLT 1.

Przykłady XPath 2

<?xml version="1.0" encoding="utf-8"?> <wikimedia> <projects> <project name="Wikipedia" launch="2001-01-05"> <editions> <edition language="English">en.wikipedia.org</edition> <edition language="German">de.wikipedia.org</edition> <edition language="French">fr.wikipedia.org</edition> <edition language="Polish">pl.wikipedia.org</edition> <edition language="Spanish">es.wikipedia.org</edition> </editions> </project> <project name="Wiktionary" launch="2002-12-12"> <editions> <edition language="English">en.wiktionary.org</edition> <edition language="French">fr.wiktionary.org</edition> <edition language="Vietnamese">vi.wiktionary.org</edition> <edition language="Turkish">tr.wiktionary.org</edition> <edition language="Spanish">es.wiktionary.org</edition> </editions> </project> </projects> </wikimedia>

Używa

XPath jest podstawowym językiem zapytań w XSLT . Określa, czy ma zastosowanie reguła szablonu (poprzez jej atrybut dopasowania ), i może być również użyty do wyodrębnienia treści z dokumentu XML przekształconego przez program XSLT.

XPath może być używany jako język zapytań w bazach danych XML , często jako podzbiór XQuery .

XPath jest używany jako język wyrażeń reguł w Schematron , a częściowo także w schemacie XML .

XPath może być używany z wiersza poleceń, tutaj z poleceniem xpath, które pochodzi z modułu Perl XML :: XPath . W tym miejscu szukamy adresów URL artykułów w kanale dystrybucyjnym Atom  :

$ xpath -e '//link[@rel="alternate"]/@href' feed.atom

Inny przykład, z xfind do wyszukiwania plików (XML używany do modelowania atrybutów pliku):

$ ./find -xpath '/bin/*[@size > /bin/bash/@size]' /bin/ipv6calc /bin/rpm

Zobacz też

Powiązane artykuły

Linki zewnętrzne

Bibliografia

  1. „  https://www.w3.org/TR/xpath-31/  ”
  2. Zobacz termin krok w francuskim tłumaczeniu zalecenia XPath
  3. http://www.xpathtester.com/