| Retour à la catégorie - Programmation | Accueil A525G | Commentaires |
Introduction à XQueryCe qu’il y a de bien avec le XML c’est bien sûr sa capacité d’extension (comme son nom l’indique) ou encore d’adaptation à n’importe quel ensemble de données. En effet, avec XML vous pouvez représenter des pages web, des services web, des images, des systèmes vocal (voice XML) etc… Au moment où j’écris ce texte, de plus en plus de développeurs font la création ou convertissent des applications qui entreposent les données au format XML. Plus la quantité d’information s’accroît, plus le besoin de pouvoir chercher et mettre à jour ces données augmente aussi. La recherche en mode texte se révèle beaucoup trop simple et le langage SQL ne peut s’adapter correctement à XML. Depuis le mois d’octobre 1999 le W3C travail sur ce problème. Le fruit des efforts du consortium (encore en développement) est le langage XML Query ou si vous préférez, XQuery. Ce langage a donc été conçu pour permettre de créer des requêtes précises tout en pouvant s’adapter à tout type de source de données XML, qu’il soit question de bases de données, documents XML ou autres. XQuery peut être utilisé avec des documents XML validés par des schémas, des DTD ou encore simplement des documents XML bien formés. Les bases de XQueryXQuery est un langage basé sur les expressions. Un script ou programme XQuery contiendra toujours une ou plusieurs expressions et optionnellement des fonctions et des définitions. En XQuery, il existe plusieurs types d’expressions dont voici une partie de la liste :
Expressions de cheminLes expressions de chemin ressemble beaucoup à celles que l'on retrouve dans le langage XPath. Prenons par exemple le document suivant dans lequel l’attribut «num» représenterait un numéro associé à un élève et la valeur de la balise, la note de celui-ci.
<examen> Examinons maintenant l'expression de chemin suivante : //examen/note[@num=$a]/text() Assument que la variable $a contienne une valeur numérique constitué de trois chiffres, l’expression retournerait le texte contenu dans le nœud dont la valeur de l’attribut num est égale à celui de la variable. Les expressions FLWR (prononcé flower)Le nom provient de for, let, where et return.
Voici un exemple simple d'une requête FLWR. Cette requête a pour but de présenter une comparaison des prix des livres similaires (ayant le même titre) dont l'auteur est Stephen King dans deux librairies affichant leurs produits sur le web.
<livres> Les expressions conditionnellesComme dans la majorité des langages de programmation, XQuery offre la possibilité d'utiliser les mots-clef if, then et else. Par exemple, pour un document XML comme celui-ci :
<livres> Si nous désirons écrire «oui» dans le cas où la quantité en stock est supérieure à 0 et non dans le cas où elle est égale à 0, nous pourrons écrire :
for $a in document("livres.xml")//livres Les constructeursLa construction de nouveaux contenu XML est fondamentale en XQuery. XQuery contient des constructeurs pour des éléments, des attributs, des sections CDATA, des instructions de traitement et des commentaires utilisant une syntaxe qui est la même sinon presque, que le XML lui-même. Le contenu des éléments et les valeurs des attributs peuvent contenir des expressions placées entre accolades {} qui seront évaluées. Par exemple :
let $a := 'a525g.com' Le résultat de l'aévaluation de ce code donnerait ceci :
<site url="a525g.com"> Les fonctionsXQuery inclut un grand nombre de fonctions et d'opérateurs. Il existe des fonctions pour :
Il est aussi possible de définir nos propre fonctions. Les fonctions sont la plupart du temps dans l'espace de nommage (namespace) «fn». Cet espace de nommage est associé à «http://www.w3.org/11/xquery-functions». Celui-ci est utilisé dans le but d'éviter les collision au niveau de la définition de noms. Comme mentionné ci-dessus, il est possible de définir nos propre fonctions. Reprenons le document XML utilisé ci-dessus pour démontrer les opérations de comparaison et ajoutons des éléments au document.
<livres> Il est possible de définir une fonction qui calculera la moyenne des quantités des livres figurant dans le document dont l'auteur est Stephen King.
define function moyenne-qte($auteur) |
|||||||||||||||||||||||||||||||||||||||
Par : Sylvain Bilodeau
Date de mise en ligne : 2003-07-29 |
|||||||||||||||||||||||||||||||||||||||