XQuery - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Exemple

Soit le document XML suivant, situé à l'URL http://www.example.com/ et nommé exemple.xml :

                        Dupond          Albert          23/09/1958                          Dupont          Alphonse          23/12/1975                          Dupont          Isabelle          12/03/1967              ...            

La requête FLWR suivante :

      for $b in document ("http://example.com/exemple.xml")//employe      where $b/nom = "Dupont"      return        {          $b/prenom,          $b/date_naissance        }      

va renvoyer le résultat suivant :

              Alphonse        23/12/1975                    Isabelle        12/03/1967            

Modèle de données

  • Toutes les valeurs manipulées par XQuery (ainsi que XPath2 et XSLT 2) sont des séquences (ou listes) d' items. Il n'y a pas de séquences imbriquées: une séquence de séquences est toujours "mise à plat".
  • Les items se répartissent en deux grands groupes:
    • les nœuds XML, qui eux-mêmes sont de six espèces différentes: document, élément, attribut, texte, commentaire, processing-instruction.
    • Les types de base (empruntés aux Schémas XML) au nombre de 48, comprenant notamment les types numériques (entiers, décimaux, flottants), les chaines de caractères et dérivés, les dates, instants et durées.
  • Les types de bases peuvent être étendus par l'importation de Schémas (fonctionnalité optionnelle).

Exemples:

  • L'expression 1 to 5 retourne la séquence d'items de type entier: 1 2 3 4 5.
  • L'expression for $i in 1 to 5 return $i * $i retourne la séquence d'items de type entier: 1 4 9 16 25.
  • L'expression for $i in 1 to 3 return { $i } retourne la séquence de nœuds éléments: 1 2 3.
  • Une séquence n'est pas obligatoirement d'un type homogène. Par exemple l'expression (1, 2), 2.5, (true(), "du texte") retourne la séquence d'items 1 2 2.5 true() "du texte" de types respectivement entier (2 fois), décimal, booléen, chaine de caractères.

Caractéristiques du langage

  • XQuery est un langage fonctionnel (où toute construction retourne une valeur) donc sans effet de bord, c'est-à-dire ne modifiant pas directement les données sur lesquelles il travaille. XQuery Scripting est une exception à ce principe.
  • Contrairement à la plupart des langages fonctionnels, XQuery ne possède pas de fonctions de second ordre (pouvant être argument d'autres fonctions). Ceci change dans XQuery 1.1.
  • XQuery peut optionnellement être fortement typé (au sens des Schémas XML) à la compilation et à l'exécution.
  • Ces aspects sont partagés avec XSLT 2, qui est un langage proche de XQuery dans ses fonctionnalités.
  • La programmation en XQuery est en général d'un style plus "impératif" qu'en XSLT, c'est-à-dire qu'elle nécessite la connaissance a priori de la structure des données XML manipulées. Inversement XSLT spécifie de façon déclarative des traitements sur chaque type de nœuds XML, indépendamment les uns des autres. La programmation en XQuery est donc plus naturelle, mais un peu moins puissante et modulaire qu'en XSLT.
  • L'extension XQuery Scripting offre un modèle de programmation plus classique.
Page générée en 0.184 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales - Signaler un contenu
Version anglaise | Version allemande | Version espagnole | Version portugaise