Semestre 2
Modules
Gestion des données
Querry vs XSLT

xQuery :

Qu'est-ce que XQuery ?

• XQuery est le langage d'interrogation des données XML • XQuery pour XML est comme SQL pour les bases de données • XQuery est construit sur des expressions XPath • XQuery est pris en charge par toutes les principales bases de données • XQuery est une recommandation du W3C

Qu'est-ce que FLWOR ?

FLWOR (prononcé "fleur") est un acronyme pour "For, Let, Where, Order by, Return". • Pour - sélectionne une séquence de nœuds • Let - lie une séquence à une variable • Où - filtre les nœuds • Trier par - trie les nœuds • Return - ce qu'il faut retourner (est évalué une fois pour chaque nœud) Voici un exemple de requête FLWOR qui utilise les différentes clauses :

Supposons que nous avons un document XML contenant des informations sur des livres, avec chaque livre représenté par un élément <book>. Chaque livre a un titre, un auteur, une année de publication et un prix. Nous pouvons utiliser une requête FLWOR pour extraire tous les livres publiés avant 2000, triés par année de publication croissante, en ne sélectionnant que le titre et l'auteur de chaque livre.

La requête FLWOR ressemblerait à ceci :

for $book in //book                 (: sélectionne tous les éléments <book> :)
where $book/year < 2000             (: filtre les livres publiés avant 2000 :)
let $title := $book/title           (: lie le titre du livre à une variable :)
let $author := $book/author         (: lie l'auteur du livre à une variable :)
order by $book/year ascending      (: trie les livres par année de publication croissante :)
return concat($title, " par ", $author)  (: retourne le titre et l'auteur de chaque livre :)

Cette requête sélectionne tous les éléments <book>, filtre les livres publiés avant 2000, lie le titre et l'auteur de chaque livre à des variables, trie les livres par année de publication croissante, et retourne le titre et l'auteur de chaque livre concaténés avec le texte " par ". Le symbole "$" est utilisé pour indiquer une variable. Lorsque vous utilisez ce symbole suivi d'un nom de variable, XQuery recherche la valeur de cette variable dans la portée actuelle et l'utilise dans votre expression.

Règles de syntaxe de base XQuery Quelques règles de syntaxe de base : • XQuery est sensible à la casse • Les éléments, attributs et variables XQuery doivent être des noms XML valides • Une valeur de chaîne XQuery peut être entre guillemets simples ou doubles • Une variable XQuery est définie avec un $ suivi d'un nom, par exemple $bookstore • Les commentaires XQuery sont délimités par (: et :), par exemple (: XQuery Comment :)

Syntaxe : XQuery utilise une syntaxe similaire à celle des langages de programmation tels que Java ou C#. Les requêtes sont écrites sous forme de déclarations et d'expressions. Voici un exemple de requête XQuery simple qui sélectionne tous les éléments "book" dans un document XML :

for $book in //book
return $book

Expressions : Les expressions XQuery sont utilisées pour récupérer les données dans une source XML. Elles peuvent être utilisées pour sélectionner des éléments, filtrer des données, trier des données et joindre des données de différentes sources. Voici un exemple d'expression XQuery qui sélectionne tous les éléments "title" qui ont la valeur "XML pour les nuls" dans un document XML :

//title[text() = 'XML pour les nuls']

Variables : Les variables XQuery permettent de stocker des valeurs pour une utilisation ultérieure dans une requête. Les variables sont déclarées en utilisant le mot-clé "let" suivi d'un nom de variable et d'une expression. Voici un exemple d'utilisation de variable XQuery pour stocker une expression qui sélectionne tous les éléments "book" dans un document XML et les utiliser dans une autre expression :

let $books := //book
return count($books)

Fonctions : Les fonctions XQuery sont des blocs de code réutilisables qui effectuent des tâches spécifiques, telles que la conversion de données ou la manipulation de chaînes de caractères. Les fonctions sont définies en utilisant le mot-clé "function". Voici un exemple de définition d'une fonction XQuery qui calcule la somme des prix des éléments "book" dans un document XML :

declare function local:sum-book-prices($books as element(book)*)
{
sum($books/price)
}

Predicats : Les prédicats XQuery sont utilisés pour filtrer les données XML en fonction de conditions spécifiques. Les prédicats sont écrits entre crochets et contiennent une expression qui évalue une condition. Voici un exemple d'utilisation de prédicat XQuery pour filtrer les éléments "book" dans un document XML qui ont un prix supérieur à 50 :

//book[price > 50]

Opérateurs : Les opérateurs XQuery sont utilisés pour comparer et combiner des valeurs. Les opérateurs courants incluent les opérateurs de comparaison tels que "=", "<", ">" et les opérateurs logiques tels que "and", "or" et "not". Voici un exemple d'utilisation d'opérateurs XQuery pour combiner deux expressions qui sélectionnent tous les éléments "book" dans un document XML qui ont un prix supérieur à 50 ou une année de publication antérieure à 2000 :

//book[price > 50 or year < 2000]

Fonctionnalités avancées : XQuery propose également des fonctionnalités avancées telles que la gestion des espaces de noms, les expressions régulières, les requêtes imbriquées et les fonctions d'agrégation. Voici un exemple d'utilisation de la fonction "count" de XQuery pour compter le nombre d'éléments "book" dans un document XML qui ont un prix supérieur à 50 :

count(//book[price > 50])

Implémentation : XQuery est implémenté dans plusieurs bases de données XML telles que MarkLogic, eXist-db et BaseX. Il est également possible d'exécuter des requêtes XQuery dans des environnements de développement tels que le navigateur web. Voici un exemple d'exécution d'une requête XQuery dans un navigateur web à l'aide de la console du développeur :

let books = document.querySelectorAll('book')
console.log(books)

XSLT

XSLT (eXtensible Stylesheet Language Transformations) est un langage de transformation utilisé pour convertir des documents XML en d'autres formats, tels que HTML, XML, texte brut, ou PDF. Il est une recommandation du World Wide Web Consortium (W3C).

La transformation XSLT est basée sur l'idée de modèle. Pour chaque élément de l'entrée XML, XSLT cherche un modèle correspondant dans la feuille de style XSLT. Si un tel modèle est trouvé, il est appliqué pour transformer l'élément en un autre format.

La structure de base d'un document XSLT comprend une déclaration XML, un élément racine XSL Stylesheet, et une ou plusieurs templates. Chaque template a un attribut "match" qui détermine à quel élément XML il s'applique, et un corps qui spécifie la transformation à effectuer.

Voici un exemple simple de transformation XSLT. Supposons que nous ayons un document XML contenant des informations sur des livres, et que nous voulions le convertir en HTML. Nous pourrions utiliser une feuille de style XSLT comme celle-ci :

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 
<xsl:template match="/">
  <html>
  <body>
    <h2>Mes livres</h2>
    <table border="1">
      <tr>
        <th>Titre</th>
        <th>Auteur</th>
      </tr>
      <xsl:for-each select="catalogue/livre">
      <tr>
        <td><xsl:value-of select="titre"/></td>
        <td><xsl:value-of select="auteur"/></td>
      </tr>
      </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>
 
</xsl:stylesheet>

Ce code transforme chaque élément livre du document XML en une ligne d'un tableau HTML, avec le titre et l'auteur du livre en tant que cellules de la ligne.

XSLT propose également des fonctionnalités avancées, telles que les conditions, les boucles, la récursion, et la création de nouvelles structures XML. XSLT est généralement utilisé avec XPath, un autre langage recommandé par le W3C, qui permet de naviguer dans les documents XML et de sélectionner des éléments spécifiques.

Last updated on June 21, 2024