250 likes | 461 Views
UNIVERSITE CHOUAIB DOUKKALI Faculté des sciences Département des mathématiques & informatiques ELJADIDA. XQUERY. Encadré par: Mr. Ali Elhore. Réalisé par: LAAROUSSI Mohamed BENELFAHAME Oussama. PLAN. INTRODUCTION DEFINITION DE XQUERY
E N D
UNIVERSITE CHOUAIB DOUKKALI Faculté des sciences Département des mathématiques & informatiques ELJADIDA XQUERY Encadré par: Mr. Ali Elhore Réalisé par: LAAROUSSI Mohamed BENELFAHAME Oussama
PLAN • INTRODUCTION • DEFINITION DE XQUERY • XQUERY - EXEMPLES D’UTILISATION • MODULE DE DONNEES DE XQUERY • CONSTRUCTIONS DE XQUERY • LES EXPRESSIONS XQUERY • CONCLUSION
INDRODUCTION Le langage XQuery ou XmlQueryest conçu spécifiquement pour l'intégration de la programmation et des données XML, et les programmeurs sont plus productifs en utilisant XQuery pour ces tâches. Cependant, de nombreuses applications d'entreprise sont construites sur la plate-forme Java, et nécessitent souvent des fonctionnalités ne trouve pas dans XQuery, par exemple, de nombreux programmes XML doivent utiliser la fonctionnalité des services Web de J2EE.
DEFINITION DE XQUERY XQueryest 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 - EXEMPLES D‘UTILISATION XQuery peut être utilisé pour: • Extraire des informations à utiliser dans un service Web • Générer des rapports de synthèse • Transformer des données XML à XHTML • Recherche de documents sur le Web pour les informations pertinentes
MODELE DE DONNEES DE XQUERY • Une Valeur est une séquence ordonnée de 0 ou plusieurs items. • Un item est un nœud ou une valeur atomique • Il y a 7 types de nœuds: • Élément • Attribut • Texte • Espace de noms • Instruction de traitement • Commentaires • Documents nœuds.
Exemples de valeurs • 12 - xs: integer, • "toto" – xs: string, • <a>message</a> - element, • (1, 2, 3) - séquence de 3 items, • (12, <a/>, "toto") - séquence de 3 items, • () - séquence vide
Quelques remarques sur les valeurs • Il n’y a pas de distinction entre un item et une séquence de longueur 1. 47=(47) • Une séquence peut contenir des données hétérogènes • (12, <a/>, "toto") • Il n’y a pas de séquences imbriquées • (1,(2,3), <a/>, "toto")= (1,2,3, <a/>, "toto") • Une séquence peut être vide : () • les séquences sont triées : (1,4) ≠ (4,1)
Quelques remarques sur les items • Les nœuds ont une identité (les valeurs atomiques n’en ont pas) • Les nœuds de type element et attribut ont des annotations de type • Elles sont déterminées lorsque les nœuds sont validés • Le type peut être complexe, voir inconnu • Chaque nœud a une valeur de type • Une séquence de valeurs atomique • Peut être de type inconnu • Chaque nœud est ordonné au sein du document dont il est issu
CONSTRUCTIONS DE XQUERY 1. Règles générales de Xquery • Xquery est un langage sensible à la casse • Les mots clés sont en minuscules • Chaque expression a une valeur, et pas d’effet de bord • Les expressions sont composables • Les expressions peuvent générer des erreurs • Les commentaires sont possibles • (: un commentaire :)
2. Structure d’une requête Xquery Une requête XQuery est composée de trois parties : • une ligne d'entête commencée par "xquery" et contenant la version et, éventuellement l'encodage du document ; • un ensemble de déclarations : • déclarations de variables ou constantes, • déclarations de fonctions utilisateur locales, • importation de modules (bibliothèques XQuery), • détermination des espaces de nom et de leur utilisation, • détermination du format du résultat et autres paramètres ; • l'expression XQuery à exécuter. La ligne d'entête et les déclarations sont toutes terminées par ";"
3. Contexte d’évaluation Les expressions sont évaluées relatives à un contexte: • Espace de nom • Variables • Fonctions • Date et heure • Item contexte (nœud courant) • Position (dans la séquence en train d’être traitée) • Taille de cette séquence
Valeurs atomiques: "Hello" 12 4.7 • Valeurs construites : • true() false() date("2013-05-16") • Variables : $x • Séquences construites : • $a, $b pareil que($a, $b) • (1, (2, 3), ( ), (4)) pareil que 1, 2, 3, 4 • 5 to 8 pareil que 5, 6, 7, 8 • 8 to 5 pareil que ( ) Exemples
4. Les fonctions • Xquery permet à l’utilisateur de définir ses propres fonctions. • Les fonctions ne peuvent pas être surchargées Syntaxe : declare function prefix:function_name($parameter ASdatatype) AS return Datatype{ ...function code here...}
Exemple xquery version "1.0" encoding "utf-8"; declarefunction local:liste_entier_pair($max) { (2 to $max)[. mod 2 = 0] } ; <pair> {local:liste_entier_pair(10)} </pair> • Resultat: <pair> 2 4 6 8 10 </pair>
Il existe des fonctions prédéfinies de Xquery comme: SUM: la somme AVG: la moyenne COUNT: nombre d’éléments MAX: maximum MIN: minimum …..
EXPRESSIONS XQUERY • 1. L’expression FLOWR • Une expression FLWOR lie des variables, applique des prédicats, et construit un nouveau résultat FOR et LET clauses de générer une liste de tuples de variables liées, préserver l'ordre d'entrée. WHERE clause s'applique un prédicat, en éliminant certains des tuples. ORDER BY clause impose un ordre sur les tuples survivants. RETURN clause est exécutée pour chaque tuple survivante, générer une liste ordonnée des sorties
Différence entre FOR et LET • For: • for $x in /company/employee génère un lien de chaque employé vers $x pour chaque élément dans l’entreprise • Let: • let $x := /company/employee génère un seul lien $x représentant ici l’ensemble des employés
Exemple for $d in document("depts.xml")//deptno let $e := document("emps.xml")//employee[deptno = $d] where count($e) >= 10 order by avg($e/salary) descending return <big-dept> { $d, <headcount>{count($e)}</headcount>, <avgsal>{avg($e/salary)}</avgsal> } </big-dept> Résultat : Retourne la liste des département avec plus de 10 employés, classés par salaire
2.L’expression IF-THEN-ELSE Syntaxe: If (condition) then expr1; else expr2; Exemple: • for $x in doc("livres.xml")/librairie/livrereturn if ($x/@category="CHILDREN")then <child>{data($x/titre)}</child>else <adult>{data($x/titre)}</adult>
3. Autres Expressions SOME,EVERY 1- some Syntaxe:some $var in expr1satisfiesexpr2 Exemple: • for $l in document("bib.xml")//livre wheresome $p in $l//paragraphe satisfies (contains($p,"plate") AND contains($p,"espace")) return $l/titre Résultat: L'exemple suivant recherche les titres de tous les livres qui mentionnent les deux mots « plate » et « espace »dans le même paragraphe
2- Every Syntaxe: every $var in expr1satisfiesexpr2 Exemple • for $l in document(« bib.xml")//livre whereevery $p in $l//paragraphe satisfiescontains($p, "plate") return $l/titre Reseltat: L'exemple suivant trouve les titres de tous les livres qui mentionnent le mot "plate"dans chaque paragraphe
CONCLUSION • XQuery est un outil puissant et pratique pour analyserou générer XML • XQuery est un protocole indépendant, donc peut être évaluée n'importe quel système avec des résultats prévisibles • Il n'y a pas des implémentations mais le site XQuery listes connues mise en œuvre