XPath/XSLT/XQuery

Vocabulaire :

Pour que le contenu (textes, images, liens, etc.) d'un fichier XML ou XML-TEI puisse être affiché et que les données de ce contenu puisse être manipulées, il faut passer par différentes étapes auxquelles sont associées des langages : XPath, XSLT, XQuery.

XPath1

Le nom de ce langage pourrait à lui seul donner une définition : « X » pour XML et « Path » pour chemin, autrement dit (localiser) le chemin (d'une donnée) dans un document XML. Sans entrer dans les détails, et de manière très schématique pour comprendre le fonctionnement du langage XPath, il faut s'intéresser aux expressions XPath : un fichier XML contient un nombre X de données qui ont été saisies selon une certaine hiérarchie — le plus simple serait d'imaginer un arbre généalogique (= root, noté par le segment /) qui comprend un nombre X de descendants (=> noté par les segments //) et que chacun des descendants a une relation parentale qui est identifiée (= noeud, noté par exemple /ancêtre/parent/fils) ; finalement, il s'agit de localiser une donnée dans l'arborescence d'un fichier. La syntaxe des expressions XPath « noeud » et « segments » nécessite des précisions appelées fonctions, fonctions partagées par une bibliothèque commune à XQuery.

XSLT2

eXtensible Stylesheet Language Transformations (XSLT) est un langage qui permet de convertir un document XML ou XM-TEI afin qu'il puisse être affiché dans une page web ou au format PDF.

XQuery3

C'est un langage open source basé sur XPath 2.0 — qui permet ainsi de se repérer dans un document et d'en extraire des informations. Nul besoin d'être un expert pour donner quelques résultats pertinents, FLWOR (prononcé flower), une des fonctionnalités XQuery, permet déjà d'effectuer un certain nombre de requêtes, dont l'apprentissage est plutôt facile, même pour des débutants (cf. exemple ci-dessous).

Schématiquement, en quoi ça consiste ?

Pour répondre à cette question, il faut partir d'un exemple créé pour l'occasion : un fichier XML qui contient des données relatives à des corpus. Il faudrait d'une part pouvoir afficher ces données dans une page web, et d'autre part pouvoir manipuler ces données. D'après les précédentes définitions, le XSLT servira à convertir les données du fichier XML, XPath a localisé ces données dans le fichier XML et XQuery a manipulé ces données en fonction des objectifs recherchés.

 <?xml version="1.0"?>
 <corpus>
   <corpus>
     <genre>juridique</genre>
     <writing name="syllabique">akkadien</writing>
     <ref_texte>RS 17.050</ref_texte>
     <scribe>AD-LUGAL</scribe>
   </corpus>
   <corpus>
     <genre>juridique</genre>
     <writing name="syllabique">akkadien d'Ugarit</writing>
     <ref_texte>RS 17.426</ref_texte>
     <scribe>Tamartenu</scribe>
   </corpus>
   <corpus>
     <genre>mythe</genre>
     <writing nom="alphabetique">ugaritique</writing>
     <ref_texte>KTU 1.1</ref_texte>
     <scribe>&#x2BE;Illimilku</scribe>
   </corpus>
 ...
 </corpus>

On fait une requête FLWOR :

FOR $b IN document ("http://exemple.com/exemple-xml.xml")//corpus         <- basé sur XPath => tous les éléments corpus dans le document
WHERE $b/genre = "juridique"
RETURN
  <juridique>{
    $b/scribe,
    $b/writing,
    $b/ref_texte
  }</juridique>
 

On obtient le résultat suivant :

<juridique>
   <scribe>AD-LUGAL</scribe>
   <writing>akkadien</writing>
   <ref_texte>RS 17.050</ref_texte>
 </juridique>
 <juridique>
   <scribe>Tamartenu</scribe>
   <writing>akkadien d'Ugarit</writing>
   <ref_texte>RS 17.426</ref_texte>  
</juridique>

pour que ce soit plus visible, sans les balises de codes, le résultat est le suivant :
AD-LUGAL akkadien d'Ugarit RS 17.050
Tamartenu akkadien d'Ugarit RS 17.426

Dans le code XQuery, on retrouve bien le même encodage XPath for $b in document ("http://exemple.com/exemple-xml.xml")//corpus et qui veut dire qu'il faut chercher tous les éléments « corpus » dans le document. Rien de bien compliqué donc, même pour un néophyte dès lors que l'on a déjà acquis les bases du XML.

Il existe plusieurs systèmes de gestion de bases de données XML native, mais les plus utilisées dans nos disciplines sont BaseX et eXistdb, dont voici un tableau comparatif4 :

Voici deux vidéos de présentation, la première sur BaseX et la seconde sur eXist-db (vidéo qui inclut l'installation) :

  Exemples de réalisation :

@  Communautés :

[1] Plus d'informations sur Wikipédia et approfondissement sur la page des recommandations du W3C.

[2] Plus d'informations sur Wikipédia et approfondissement sur la page des recommandations du W3C.

[3] Plus d'informations sur le portail W3C XQuery et sur Wikipédia. Quelques liens complémentaires : sémantique XPATH/XQuery, le wikibook XQuery, (excellente) bibliothèque de fonctions XQuery.

[4] Image empruntée à Wikipédia.

definition/xslt-xpath-xquery.txt · Dernière modification: 2015/12/10 15:47 (modification externe)
CC Attribution-Noncommercial 3.0 Unported
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0