XPath

XPath

Descrierea imaginii Diagrama Sederhana XPath.png. informație
Dezvoltat de Consorțiul World Wide Web
Prima versiune 1999
Ultima versiune 3.1 (21 martie 2017)
Citiți formatele Limbaj de marcare extensibil și notare obiect JavaScript
Tip Limbaj de interogare
Limbaj de programare

XPath este un limbaj de interogare pentru localizarea unei porțiuni dintr-un document XML . Creat inițial pentru a oferi sintaxă și semantică pentru funcțiile comune XPointer și XSL , XPath a fost adoptat rapid de dezvoltatori ca un limbaj de interogare ușor de utilizat.

Sintaxă și semantică

O expresie XPath este o cale de localizare , alcătuită din pași de localizare (numiți și pași în franceză ). Pașii de locație sunt separați de caracterul „/”.

Etapele de localizare au fiecare trei componente:

  1. o axă (părinte, descendent ...);
  2. un test de nod (numele sau funcția care desemnează nodurile);
  3. predicate (între paranteze drepte).

Axa indică direcția în care să vă deplasați în arborele XML, în raport cu nodul curent sau de la rădăcină. De exemplu, va child::selecta nodurile copil ale nodului curent. În XPath, când axa nu este specificată, este implicit axa copiilor ( child::). O altă axă utilizată pe scară largă este cea a atributelor, reprezentată cu caracterul at sign ( @). Există în toate cele 13 axe care permit exprimarea relațiilor genealogice sau care iau în considerare ordinea de citire a documentului.

Testul nodului permite selectarea sau nu a nodurilor în funcție de numele sau tipul lor. De exemplu, testul va text()selecta toate nodurile de tip text (în axa considerată).

Predicatii sunt expresii mai complexe; sunt folosite pentru a filtra nodurile selectate de axă și testul nodului. Predicatele sunt scrise între paranteze drepte ("[", "]"). Dacă predicatul se evaluează la adevărat, vor fi selectate nodurile corespunzătoare.

XPath oferă astfel o căutare secvențială pe noduri. Rezultatul evaluării unei expresii XPath este o secvență care conține noduri și valori atomice (texte, booleeni ...).

În funcție de natura (număr, boolean, text) a valorilor selectate, XPath oferă o serie de funcții. Aceste funcții sunt limitate, deoarece sunt destinate mai mult să fie utilizate în predicate decât să efectueze prelucrarea datelor selectate.

Funcțiile care se aplică celor mai utilizate numere sunt: ​​sum (), count () și operatorii aritmetici. Funcțiile care se aplică celor mai utilizate șiruri sunt: ​​substring (), string-length (), concat ().

XPath 1 exemple

Luați în considerare următorul document 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> Exemple de interogări absolute
Expresia XPath Rezultat
/ selectează un nod „fals“, numit element rădăcină , care cuprinde întregul document, inclusiv DOCTYPE <versiunea? xml = „1.0“?>
/ rădăcină selectați nodul gol, deoarece nu există un element „rădăcină” (ci „rădăcină” )
// articol selectează toate elementele „articolului” documentului oriunde s-ar afla
/ rădăcină / enciclopedie selectează singurul element "enciclopedie" , deoarece este aici singurul copil "rădăcină" care poartă acest nume
// articol [@ name = 'XPath'] selectează toate elementele „articol” ale documentului oriunde s-ar afla, având un atribut „nume” a cărui valoare este „XPath”

Toate aceste expresii XPath sunt absolute (încep cu un caracter „/” ), adică dau același rezultat indiferent de context. Următoarele expresii sunt relative . Dacă contextul actual este singurul element de „enciclopedie” , acestea dau:

Exemple de interogări relative
în contextul elementului enciclopedie
Expresia XPath Rezultat
articol selectați elementul „articol”
rădăcină nu selectează nimic, având în vedere contextul
articol [1] / autori / autor [2] selectează al doilea autor (Dubois) al primului articol
articol [număr (articol / autori / autor)> 1] selectați articolele care au cel puțin 2 autori
../rădăcină selectează elementul „rădăcină” , deoarece este părintele elementului curent

Rezultatul acestor selecții va depinde de natura sarcinii:

  • În afișare, va fi valoarea textuală, specifică fiecărui tip de element, care va apărea. Dacă sunt selectate mai multe noduri, la fel ca // articol , numai primul este afectat.
  • Atunci când este selectat, acesta se va comporta ca un indicator pe care se pot face alte cereri XPath.

Evoluții

Sintaxa XPath a evoluat pentru a deveni mai completă. XPath 2.0  standard (în) , recomandare W3C de atunci23 ianuarie 2007descrie un subset comun al limbajelor XSLT 2.0 și XQuery 1.0, constituind, de asemenea, un limbaj de interogare XML autonom mai bogat decât prima versiune inclusă în XSLT 1.

XPath 2 exemple

<?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>

Utilizări

XPath este limbajul de interogare de bază în XSLT . Determină dacă se aplică o regulă șablon (prin atributul său de potrivire ) și poate fi, de asemenea, utilizată pentru a extrage conținut din documentul XML transformat de programul XSLT.

XPath poate fi folosit ca limbaj de interogare în bazele de date XML , adesea ca subset al XQuery .

XPath este folosit ca limbaj de expresie a regulilor în Schematron și parțial și în XML Schema .

XPath poate fi utilizat din linia de comandă, aici cu comanda xpath care provine din modulul Perl XML :: XPath . Aici, căutăm adresele URL ale articolelor dintr-un flux de sindicalizare Atom  :

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

Un alt exemplu, cu xfind pentru a căuta fișiere (XML folosit pentru a modela atributele fișierului):

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

Vezi și tu

Articole similare

linkuri externe

Referințe

  1. „  https://www.w3.org/TR/xpath-31/  ”
  2. Vedeți termenul pas în traducerea în franceză a recomandării XPath
  3. http://www.xpathtester.com/