XQuery et la recommandation W3C modifier

XQuery est un langage de programmation fonctionnelle ce qui implique que ses variables sont immuables. Une autre limitation de la recommandation W3C est l'interdiction de passer une fonction en paramètre d'une autre, toutefois certaines implémentations comme eXist l'accepte.

Historiquement XQuery fût créé en 2007 car le XSLT apparu en 1999 était trop difficile à apprendre, conjointement avec XSLT 2.0 avec lequel il partage XPath 2.0.

Il faut savoir que comme beaucoup de systèmes XQuery exploitent les index des documents, ils sont significativement plus rapides que les transformations XSLT.

Par ailleurs, des études ont montré que les personnes connaissant SQL peuvent rapidement apprendre XQuery. Une fois que les développeurs ont compris la structure des instructions FLWOR, les classements et sélections de valeurs distinctes sont du gâteau.

Bénéfices de XQuery modifier

  • Expressivité : XQuery fonctionne avec toutes sortes de structures de données et sa nature récursive le rend idéal pour les requêtes sur les arbres et les graphes.
  • Concision : les instructions XQuery sont plus courte que les équivalentes en SQL et XSLT.
  • Flexibilité : XQuery marche avec des données hiérarchiques et tabulaires.
  • Consistance : XQuery possède une syntaxe consistante et peut être utilisé avec d'autres standards XML comme XML Schema.

Avantages sur SQL modifier

Les constructions XQuery sont similaires à SQL pour :

  • Classement des résultats : XQuery et SQL proposent la clause order by.
  • Sélection de valeurs distinctes : XQuery et SQL permettent de spécifier l'unicité des résultats.
  • Lignes restreintes : XQuery et SQL ont une clause WHERE X=Y.

Toutefois, XQuery possède deux avantages sur SQL :

  • Il ne renvoie pas juste des tables, mais des structures d'arbre arbitraires, comme des balises XHTML utilisables dans des pages web.
  • Il permet des recherches sur des attributs simples, comme la recherche de noms de colonnes.

Avantages sur XSLT modifier

L'idée reçu que XQuery serait mieux pour les requêtes XML et XSLT pour les transformation XML est surfaite. En réalité les deux méthodes peuvent transformer les XML.

XSL exprime les règles de transformation en XML, au lieu de définir une syntaxe plus appropriée pour cela, ressemblant plus au PHP, Perl, Python, voire SQL. D'ailleurs, les serveurs XML comme eXistdb et MarkLogic utilisent XQuery pour les opérations des serveurs web.

La première technique de transformation en XML de XQuery est appelée typeswitch. Une expression typeswitch regarde rapidement le type du node, et en fonction de cela opère ce qui a été spécifié pour ce type. Cela veut dire que chaque élément distinct d'un document peut être soumis à sa propre règle, stockée dans les fonctions modulaires XQuery. Le typeswitch permet donc avec le même langage, de programmer les requêtes pour la base de données les opérations du serveur web, et les transformations de document. Ces routines sont de surcroit plus facile à construire, tester et maintenir que du XSLT.