XML Query


XML Query

XQuery

XQuery est un langage de requête informatique permettant non seulement d'extraire des informations d'un document XML, ou d'une collection de documents XML, mais également d'effectuer des calculs complexes à partir des informations extraites et de reconstruire de nouveaux documents ou fragments XML.

XQuery est une spécification du W3C dont la version 1.0 finale date de Janvier 2007, et dont l'élaboration a demandé près de huit années. XQuery a été développé conjointement avec XSLT 2, une révision majeure du langage de transformation XML XSLT, avec lequel il partage le sous-ensemble XPath 2.

XQuery joue par rapport aux données XML un rôle similaire à celui du langage SQL vis-à-vis des données relationnelles, et l'on peut trouver des analogies entre ces deux langages.

Sommaire

Syntaxes

Il existe deux syntaxes distinctes pour XQuery :

  • la syntaxe "naturelle" non-XML dite aussi FLWOR (prononcer flower), dont le nom vient des cinq instructions principales qui la composent (for, let, where, order by et return) ;
  • la syntaxe XQueryX (pour « XML Syntax for XQuery »), dans laquelle une requête est un document XML. De ce fait, elle est beaucoup plus verbeuse et moins lisible que la précédente et est destinée à des manipulations formelles par des programmes (éventuellement eux-mêmes écrits en XQuery).


Exemple

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

<employes>
  <employe>
    <nom>Dupond</nom>
    <prenom>Albert</prenom>
    <date_naissance>23/09/1958</date_naissance>
  </employe>
  <employe>
    <nom>Dupont</nom>
    <prenom>Alphonse</prenom>
    <date_naissance>23/12/1975</date_naissance>
  </employe>
  <employe>
    <nom>Dupont</nom>
    <prenom>Isabelle</prenom>
    <date_naissance>12/03/1967</date_naissance>
  </employe>
...
</employes>

La requête FLWR suivante :

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

va renvoyer le résultat suivant :

<dupont>
  <prenom>Alphonse</prenom>
  <date_naissance>23/12/1975</date_naissance>
</dupont>
<dupont>
  <prenom>Isabelle</prenom>
  <date_naissance>12/03/1967</date_naissance>
</dupont>

Composantes du langage

XQuery est un langage spécifié de façon modulaire: le cœur du langage peut être augmenté par des modules optionnels.

  • Le langage minimal se base sur la norme XPath 2 (qui spécifie le langage de requête XML proprement dit), augmentée par les principales fonctionnalités suivantes:
    • L'expression FLWOR (For Let Where Order by Return), une puissante instruction de boucle, avec de nombreuses fonctionnalités, qui est assez similaire au SELECT de SQL. Grâce au where, il est possible d'écrire des jointures internes ou externes. XQuery version 1.1 ajoute le group by, et le "fenêtrage" (possibilité de découper la séquence d'entrée selon des conditions booléennes). Il existe d'autres constructions telles que if et typeswitch qui peuvent se composer avec le FLWOR.
    • Les constructeurs, des instructions permettant de reconstruire des fragments XML, avec une syntaxe très proche de XML lui-même (un fragment bien formé de XML est de fait une expression XQuery valide). Ceci permet d'écrire des modèles (templates) comportant des expressions évaluées dynamiquement, à la manière des nombreux langages (exemple: PHP) de génération de pages web.
    • Les fonctions définies par l'utilisateur.
    • Un ensemble de fonctions et opérateurs prédéfinis communs à XPath2, XQuery et XSLT 2.

Modules optionnels:

  • Le module optionnel Full Axis (Axes étendus) permet de bénéficier des "axes" de requête ancestor, ancestor-or-self, following, following-sibling, preceding, et preceding-sibling dans une expression XPath.
  • Les modules XQuery permettent d'importer des librairies de fonctions ou de variables XQuery dans un programme XQuery.
  • Le module optionnel Schema Import permet de spécifier les schémas XML auxquels répondent les données manipulées, permettant ainsi d'inférer les types de certaines expressions, et éventuellement d'optimiser les requêtes.
  • Le module optionnel Schema Validation permet d'utiliser le mécanisme de validation de fragments XML par rapport à des schémas.
  • Le module optionnel "Typage Statique" supporte des vérifications de type avant exécution plus poussées.

Extensions:

  • XQuery Update est une norme en cours d'élaboration (norme préliminaire en 2008) étendant XQuery par des instructions de modification de nœuds XML: insert node, delete node, rename node, replace node, replace value, copy/modify.
  • XQuery Full-Text est une extension en cours d'élaboration (norme préliminaire en 2008) spécifiant la recherche plein-texte intégrée à XQuery. Elle permet la recherche contextuelle de mots et de phrases, c'est à dire restreinte par exemple au contenu d'un élément XML particulier.

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.
  • Contrairement à la plupart des langages fonctionnels, XQuery ne possède pas de fonctions de second ordre (pouvant être argument d'autres fonctions).
  • 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.

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 <X>{ $i }</X> retourne la séquence de nœuds éléments: <X>1</X> <X>2</X> <X>3</X>.
  • 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.

Voir aussi

Articles connexes

Implémentations

Le portail XQuery du W3C liste une cinquantaine d'implémentations de XQuery, open-source ou commerciales, ou de produits ou projets de recherche basés sur XQuery.

Les bases de données XML natives supportant XQuery sont (en 2009) au nombre d'une quinzaine, dont environ le tiers sont open-source.

Liens externes

  • Portail de l’informatique Portail de l’informatique
Ce document provient de « XQuery ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article XML Query de Wikipédia en français (auteurs)

Regardez d'autres dictionnaires:

  • XML Query Language — XQuery steht für XML Query Language und bezeichnet eine vom W3C spezifizierte Abfragesprache für XML Datenbanken. XQuery benutzt eine an XSLT, SQL und C angelehnte Syntax und verwendet XPath sowie XML Schema für sein Datenmodell und seine… …   Deutsch Wikipedia

  • XML-Retrieval — XML Retrieval, or XML Information Retrieval[1], is the content based retrieval of documents structured with XML (eXtensible Markup Language). As such it is used for computing relevance of XML documents.[2] Contents 1 Queries 2 Exploiting XML st …   Wikipedia

  • XML — Infobox file format name = Extensible Markup Language icon = logo = extension = .xml mime = application/xml, text/xml (deprecated) type code = uniform type = public.xml magic = owner = World Wide Web Consortium genre = Markup language container… …   Wikipedia

  • .xml — Extensible Markup Language Extensible Markup Language Extension de fichier .xml Type MIME application/xml, text/xml Développé par World Wide Web Consortium Type de format …   Wikipédia en Français

  • XML — Extensible Markup Language Extensible Markup Language Extension de fichier .xml Type MIME application/xml, text/xml Développé par World Wide Web Consortium Type de format …   Wikipédia en Français

  • Xml — Extensible Markup Language Extensible Markup Language Extension de fichier .xml Type MIME application/xml, text/xml Développé par World Wide Web Consortium Type de format …   Wikipédia en Français

  • Query language — Query languages are computer languages used to make queries into databases and information systems. Broadly, query languages can be classified according to whether they are database query languages or information retrieval query languages. The… …   Wikipedia

  • XML for Analysis — (abbreviated as XMLA) is the industry standard for data access in analytical systems, such as OLAP and Data Mining. XMLA is based on other industry standards such as XML, SOAP and HTTP. XMLA is maintained by XMLA Council with Microsoft, Hyperion… …   Wikipedia

  • XML-QL — ist der Name einer Anfragesprache für XML. Viele ihrer Ideen flossen in die Sprache XQuery ein. In der Praxis spielt XML QL fast keine Rolle mehr, stattdessen wird meistens XQuery eingesetzt. Weblinks w3.org XML QL: A Query Language for XML… …   Deutsch Wikipedia

  • XML-QL — Query Language for XML (Computing » Software) …   Abbreviations dictionary