Vous êtes sur la page 1sur 76

Technologies XML

Chapitre 2 : Langage XQuery

Dr Konan Marcellin BROU


marcellin.brou@inphb.ci
konanmarcellin@yahoo.fr

2018-2019
Sommaire
 Introduction
 Interpréteur pour XQuery
 Concept de base XQuery
 Les expressions
 Application : Recherche de composants
 Bibliographie

K. M. BROU Technologies XML : Langage XQuery 2


I. Introduction
 1.1. XML : eXtensible Markup  1.2. But de XML
Language  Faciliter le traitement
 Généralisation de HTML automatisé de documents et
(HyperText Markup de données.
Language)  Structurer les informations :
 Jeu de balises prédéfinies
 Pour qu’elles puissent être
ayant une signification
lues par des personnes sur le
prédéfinie.
web ;
 Pas d’extension possible des
 Pour qu’elles puissent être
balises.
traitées par des applications
 XML : l'auteur peut de manière automatisée.
"inventer" ses propres
balises.

K. M. BROU Technologies XML : Langage XQuery 3


I. Introduction
 1.3. XQuery  XQuery manipule des séquences
d’items
 XML Query : langage de requête
 valeurs atomiques et nœuds
XML
d’arbres XML.
 Une interrogation est
 XQuery
représentée comme une
 Basé sur Quilt, langage proposé
expression.
au W3C
 Expression  Sorte d’extension de XPath
 Instruction construite à partir  Lié à XML Schema
de littéraux, d’opérateurs,
d’appels de fonctions,  Janvier 2007 : XQuery 1.0
d’itérateurs, …  Mars 2017 : XQuery 3.1,
 XQuery est à XML ce que SQL extension à JSon et XPath 3.1
pour les BD relationnelles.  JavaScript Object Notation.
 SQL manipule des tables  Format léger de JavaScript
 Ensemble de n-uplets de d'échange de données comme
valeurs atomiques XML.

K. M. BROU Technologies XML : Langage XQuery 4


I. Introduction
 Exemple avec XML  Exemple avec JSON
{
<menu id="file" value="File"> "menu": {
<popup> "id": "file",
<menuitem value="New" onclick="CreateNewDoc()" /> "value": "File",
<menuitem value="Open" onclick="OpenDoc()" /> "popup": {
<menuitem value="Close" onclick="CloseDoc()" /> "menuitem": [
</popup> {"value": "New", "onclick": "CreateNewDoc()"},
</menu> {"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}
}

K. M. BROU Technologies XML : Langage XQuery 5


I. Introduction
 1.4. Exemples de requêtes Résultat Rq0.xq
 Exemple 0 : Rq0.xq document {
 Afficher tout le document. <bib>
<book id="1" year="1994">
<title>TCP/IP Illustrated</title>
Requête
<author><last>Stevens</last>
document("bib.xml")
<first>W.</first></author>
Ou
<publisher>Addison-Wesley</publisher>
doc("bib.xml")
<price>65.95</price>
</book>
...
<book id="6" year="2001">
<title>Spatial Databases</title>
<author><last>Rigaux</last><first>P.</first></author>
<author><last>Scholl</last><first>M.</first></author>
<author><last>Voisard</last><first>A.</first></author>
<publisher>Morgan Kaufmann Publishers</publisher>
<price>35.00</price>
</book>
</bib>
}

K. M. BROU Technologies XML : Langage XQuery 6


I. Introduction
 Exemple 1 : Rq1.xq
 Trouver tous les noms des Résultat Rq1.xq
auteurs des livres dans le <last>Stevens</last>,
document bib.xml. <last>Stevens</last>,
 Le résultat n’est pas un <last>Abiteboul</last>,
document XML bien formé. <last>Buneman</last>,
<last>Suciu</last>,
Requête
<last>Amann</last>,
document("bib.xml")//book/author/last
<last>Rigaux</last>,
<last>Rigaux</last>,
 Exemple 2 : Rq2.xq <last>Scholl</last>,
 trouver tous les titres des livres <last>Voisard</last>
édités après 1999.

Requête Résultat Rq2.xq


document("bib.xml")//book[@year > "1999"]/title <title>Data on the Web</title>
<title>Spatial Databases</title>

K. M. BROU Technologies XML : Langage XQuery 7


I. Introduction
 1.5. Expression de chemin
 On peut accéder à n’importe Requête
quel nœud sans passer par la document("bib.xml")//author
racine de l’arbre.
 Exemple : liste des auteurs
 Chemin absolu
Requête
 Les éléments sont séparés par /
document("bib.xml")//author/last
Idem
document("bib.xml")//book/author/last
document("bib.xml")//bib/book/author/last

K. M. BROU Technologies XML : Langage XQuery 8


II. Interpréteur pour XQuery
 2.1. Galax
 Implémentation de XQuery
 http://www.galaxquery.org/
 Version en cours : Galax 1.1
 Trop compliqué
 Version utilisée : Galax 0.5.0
 Développé par les laboratoires Bell
Labs et AT&T.
 Requêtes stockées dans des
fichiers
 passés comme argument à
l'interpréteur Galax.

K. M. BROU Technologies XML : Langage XQuery 9


II. Interpréteur pour XQuery
 Installation :  pcre : Perl-compatible regular
expressions
1. Décompresser Galax-0.5.0-MinGW.zip
 La bibliothèque PCRE est une API
2. Copier le dossier Galax-0.5.0-
contenant un ensemble de fonctions
MinGW\Galax sur le disque C
qui implémentent des expressions
3. Installer pcre-6.4-1.exe régulières utilisant la même syntaxe
4. Copier pcre3.dll du dossier et la même sémantique que Perl.
C:\Program Files  Expression régulière : chaîne de
(x86)\GnuWin32\bin dans caractères, qui décrit, selon une
C:\Galax\bin syntaxe précise, un ensemble de
chaînes de caractères possibles.
 Exemple chaine de 4 caractères
numériques : "[0-9]{4}"
4. renommer pcre3.dll en pcre.dll

K. M. BROU Technologies XML : Langage XQuery 10


II. Interpréteur pour XQuery
 Utilisation
 Ouvrir une invite de commande et
saisir :
 path = %path%;C:\Galax\bin
 Se placer dans le répertoire ou
sont copiés les fichiers XQuery.
 Exécuter la requête Rq1.xq :
 Galax-run Rq1.xq
 Le résultat est renvoyé
directement dans la fenêtre de
commande.

K. M. BROU Technologies XML : Langage XQuery 11


II. Interpréteur pour XQuery
 Envoyer le résultat dans un fichier
xml.
 Galax-run Rq1.xq -output-xml
Rq1.xml
Ou
 Galax-run Rq1.xq > Rq1.xml
 Visualiser le vicher Rq1.xml
 Ce n’est pas un document XML bien
formé.
 Liste des options de la commande :
 Galax-run -help

K. M. BROU Technologies XML : Langage XQuery 12


II. Interpréteur pour XQuery
 2.2. Galax Server
 Interface Web permettant
d’utiliser Galax
 Développée par les étudiant de
l’INP-HB
 Utilisation
 Lancer Wamp Server
 Créer un alias : galaxServer
 Chemin : le dossier contenant
GalaxServer
 Lancer un navigateur
 Saisir l’URL :
http://localhost/galaxServer/

K. M. BROU Technologies XML : Langage XQuery 13


III. Concepts de base de XQuery
 3.1. Structure d’une requête XQuery  Exemple 3 : Titre et prix des
 Requête composée d’expressions livres (Rq3.xq)
 Instructions XQuery declare function local:prix($nom)
{document("bib.xml")//book[title =
 Requête formée : $nom]/price};
Prologue
 d’un prologue : composé d’une suite <lesPrix>
de déclarations ; {let $d := document("bib.xml")//book
for $m in $d/title
 d’un corps : composé d’une expression
let $p := local:prix($m) Corps
dont la valeur est le résultat de la return (<books>{$m, $p}</books>)
requête. }
 Valeur d’une requête </lesPrix>

 Valeur de l’expression qui constitue


son corps, évaluée dans le contexte
défini par le prologue.

K. M. BROU Technologies XML : Langage XQuery 14


III. Concepts de base de XQuery
 Prologue contient :  Espace de nom XML
 Déclarations de Name space  XML namespace
(espace de nom) ;  Problème : Plusieurs formats basés
 Importations de schémas ; sur XML peuvent utiliser les mêmes
 Importation de Modules noms d’éléments pour repérer des
 ensemble de déclaration de concepts différents.
variables et de fonctions;  Identifie une partie du Web qui est
 Définitions de fonctions ; utilisée pour identifier un ensemble
de noms (d’éléments, d’attributs).
 Déclarations de variable
globales et externes ;  Objectifs des espaces de nom :
 Contrôle pour la gestion des  distinguer les éléments et les
espaces. attributs de différentes applications
XML qui ont le même nom ;
 grouper les éléments et les attributs
d'une même application XML pour
que les logiciels puissent les
reconnaître.
 Exemple : fusion de deux document
contenant l’élément titre
K. M. BROU Technologies XML : Langage XQuery 15
III. Concepts de base de XQuery
 Exemple :
<?xml version="1.0"?>
<?xml version="1.0"?> <cours>
<auteur> <titre>Fondamentaux XML</titre>
<nom>Poulard</nom> <contenu>
<prénom>Philippe</prénom> …/…
<titre>Baron</titre> </contenu>
</auteur> </cours>

<?xml version="1.0"?>
<cours>
<titre>Fondamentaux XML</titre>
Confusion sur le sens <auteur>
de l’élément <titre> <nom>Poulard</nom>
<prénom>Philippe</prénom>
<titre>Baron</titre>
</auteur>
<contenu>
…/…
</contenu>
</cours>
K. M. BROU Technologies XML : Langage XQuery 16
III. Concepts de base de XQuery
 Déclaration des espaces de <?xml version="1.0"?>
nommage : <co:cours xmlns:co="http://www.foo.com/cours">
 Ils se déclarent dans un élément, <co:titre>Fondamentaux XML</co:titre>
avec le préfixe spécial xmlns <pe:auteur xmlns:pe="http://www.bar.com/individus">
<pe:nom>Poulard</pe:nom>
 Exemple 1 : <pe:prénom>Philippe</pe:prénom>
 Porté de co : balise <co:cours> <pe:titre>Baron</pe:titre>
 Porté de pe : balise <pe:auteur> </pe:auteur>
<co:contenu>
…/…
</co:contenu>
</co:cours>

K. M. BROU Technologies XML : Langage XQuery 17


III. Concepts de base de XQuery
 Exemple 2 :
<?xml version="1.0"?>
 Porté de co : balise <co:cours xmlns:co="http://www.foo.com/cours"
<co:cours> pe:auteur xmlns:pe="http://www.bar.com/individus">
 Porté de pe : balise <co:titre>Fondamentaux XML</co:titre>
<co:cours> <pe:auteur>
<pe:nom>Poulard</pe:nom>
 Corps contient : <pe:prénom>Philippe</pe:prénom>
 Une expression qui définit le <pe:titre>Baron</pe:titre>
résultat de la requête. </pe:auteur>
<co:contenu>
 Une expression est construite …/…
à partir de littéraux, </co:contenu>
d’opérateurs, d’appels de </co:cours>
fonctions, d’itérateurs, …

K. M. BROU Technologies XML : Langage XQuery 18


III. Concepts de base de XQuery
 3.2. Modèle de données
 Expression construite à partir : 1 *
Valeur Item
 de littéraux, d’opérateurs,
d’appels de fonctions,
d’itérateurs, …
 Toute expression a un type et Nœud Valeur atomique
une valeur.
 valeur d’une expression :
 Séquence de 0 ou plusieurs
items.
 Deux sortes d’items :
 une valeur atomique ;
 des nœuds d’arbres de
documents XML.

K. M. BROU Technologies XML : Langage XQuery 19


III. Concepts de base de XQuery
 3.3. Notion d’Item  Nœud défini comme dans XPath
 Valeur atomique ou un nœud 2, de type :
de l’arbre d’un document XML.  Document ;
 Valeur atomique :  Elément ;
 Instance de l’un des types  Attribut ;
atomiques de XML Schema :  Texte ;
nombres, chaînes, dates…  Instruction ;
 espace de noms ;
 commentaire.
 Possède :
 un nom et une valeur textuelle
(string()).

K. M. BROU Technologies XML : Langage XQuery 20


III. Concepts de base de XQuery
 Hiérarchie d’un item

K. M. BROU Technologies XML : Langage XQuery 21


III. Concepts de base de XQuery
Pas d’imbrication :
 3.4. Notion de Séquence 
 (1, (2, 3), ())  (1, 2, 3)
 Liste ordonnée d’items séparés
par des virgules :  Peut contenir des valeurs
hétérogènes :
 (1, 2, 3)
 (1, "toto", <toto/>)
 Séquence vide : contient 0 items.
 Tri des séquences :
 ()
 (1, 2)  (2, 1).
 Séquence singleton : contient un
et un seul item.
 (26)
 Un item est identique à une
séquence singleton.

K. M. BROU Technologies XML : Langage XQuery 22


III. Concepts de base de XQuery
 3.5. Notion de Type  3.6. Type de séquence
 Système de type compatible avec
celui de XML Schema. Type Explication
xs:date Item de type prédéfini xs:date
 Ensemble des types disponibles
d’une requête : attribute()? Séquence de 0 ou 1 attribut

 types prédéfinis de XQuery ; element() Elément quelconque

 types définis dans les schémas element(title, xs:string) Nœud élément de nom title et de type
importés dans le prologue de cette xs:string
requête. element(description, *) Nœud élément de nom description et de
type quelconque
 Exprimer un type en XQuery
element(*, xs:string) Nœud élément de nom quelconque et
 On utilise une notation appelée de type xs:string
type de séquence
node()* Séquence de longueur quelconque
 Une valeur en XQuery est une nœud de type quelconque
séquence.
item()+ Séquence d’au moins un item

K. M. BROU Technologies XML : Langage XQuery 23


IV. Les expressions
 4.1. Présentation  Construction de nœud ;
 Une expression est une instruction  Expression itérative : FLWOR ;
XQuery  Quantification ;
 Différentes sortes d’expression :  Expression conditionnelle ;
 Littéral ;  Expression impliquant des tests de
type ;
 Variable ;
 Expression de validation ;
 Appel de fonction prédéfinie ou
définie ;  …
 Expression de chemin ;
 Opération construite à l’aide des
opérateurs prédéfinis :
 arithmétiques, comparateurs, …

K. M. BROU Technologies XML : Langage XQuery 24


IV. Les expressions
 4.2. Les littéraux  4.3. Les commentaires
 Booléens :  XML
 Pas de littéraux booléens  <!-- Commentaire XML -->
 Obtenus par les appels de  XQuery
fonctions prédéfinies :  (: Commentaire XQuery :)
 true() et false().
 Chaînes de caractères :
 Entre simples ou doubles quotes :
 "Addison-Wesley" ou 'Addison-
Wesley'
 Nombres : entiers ou réels
 2009
 3.14
 1.602e-19

K. M. BROU Technologies XML : Langage XQuery 25


IV. Les expressions
 4.4 Les Variables  4.5. Appel de fonction
 Nom d’un variable  f(exp1, …, expn)
 Précédé du caractère $ :  f : nom de la fonction
 $nom  exp1…expn : paramètres effectifs
 Valeur d’une variable  Appel d’une fonction locale
 Celle qui a été le plus récemment  Nom de la fonction précédée de local:
liée à ce nom.  Exemple : local:prix($m)
 Appel d’une fonction prédéfinie
 Son nom appartient à l’espace de noms
http://www.w3.org/2004/10/xpath-
functions de préfixe fn.
 Exemple :
fn:count(document("bib.xml")//book)
 fonction prédéfinie qui compte le
nombre d’occurrence d’un élément.

K. M. BROU Technologies XML : Langage XQuery 26


IV. Les expressions
 4.7. Opérations arithmétiques Opération Explication
 Syntaxe exp1 + exp2 Addition
 Opérateur / est réservé aux
expressions de chemin. exp1 - exp2 Soustraction
 Exemples exp1 * exp2 Multiplication
 A tester exp1 div exp2 Quotient d’une division de réels
dans fichier .xq exp1 idiv exp2 Quotient d’une division entière
exp1 mod exp2 Reste d’une division entière
+exp Changement de signe
-exp Changement de signe

Requête Résultat
1+2 3
<add>{1 + 2}</add> <add>3</add>
<div>{6 div 2}</div> <div>3</div>

K. M. BROU Technologies XML : Langage XQuery 27


IV. Les expressions
 4.8. Comparaison de valeurs
Opération Explication
 Syntaxe
exp1 eq exp2 Egalité
 Valeur de exp1 op exp2
 Obtenue en comparant les exp1 ne exp2 différence
valeurs atomisées de exp1 et exp1 lt exp2 Infériorité stricte
exp2.
exp1 le exp2 Infériorité large
 Exemples
exp1 gt exp2 Supériorité stricte
 nom = "Toto" a la valeur :
 true si le nœud contexte a un exp1 ge exp2 Supériorité large
nœud fils
<nom>Toto</nom>
 false sinon. Requête Résultat
5 gt 7 false()
<sup>{5 gt 7}</sup> <sup>false</sup>
<a>8</a> lt <b>9</b> true()

K. M. BROU Technologies XML : Langage XQuery 28


IV. Les expressions
 4.9. Comparateurs généraux Opération Explication
 Ont une sémantique
exp1 = exp2 Egalité
existentielle : exp1 op exp2 a la
valeur : exp1 != exp2 différence
 true() s’il existe un item i1 dans Exp1 < exp2 Infériorité stricte
exp1 et un item i2 dans exp2
exp1 <= exp2 Infériorité large
tel que i1 op i2 est vrai ;
 false() sinon. exp1 > exp2 Supériorité stricte
 Syntaxe Exp1 >= exp2 Supériorité large
 Exemples :
 Si l’item courant est un nœud Requête Résultat
élément dont la valeur est :
<auteur>Toto</auteur><aute (1, 2) = (7, 2, 9, 12) true()
ur>Durand</auteur> 5 > (2, 9, 3) true()
 alors l’expression : auteur = 15 < (2, 9, 3) false()
"Toto" a la valeur true

K. M. BROU Technologies XML : Langage XQuery 29


IV. Les expressions
 Exemples :
 Si l’item courant est un Requête Résultat
nœud élément dont la (1, 2) = (7, 2, 9, 12) true()
valeur est :
<auteur>Toto</auteur><a 5 > (2, 9, 3) true()
uteur>Durand</auteur> 5 < (2, 1, 3) false()
 alors l’expression : auteur =
"Toto" a la valeur true

K. M. BROU Technologies XML : Langage XQuery 30


IV. Les expressions
 4.10 Comparateurs de nœuds  valeur de exp2 = nœud n2 :
 Syntaxe  exp1 is exp2 a la valeur
 true, si n1 et n2 sont les
Opération Explication mêmes (même identifiant),
exp1 is exp2 Egalié sinon elle a la valeur false.
exp1 << exp2 Infériorité stricte
 exp1 << exp2 a la valeur
 true, si n1 précède n2 dans
exp1 >> exp2 Supériorité stricte l’ordre du document, sinon
elle a la valeur false.
 exp1 >> exp2 a la valeur
 Valeurs des opérandes  true, si n2 précède n1 dans
 soit une séquence vide, soit l’ordre du document, sinon
un nœud. elle a la valeur false.
 Un des opérandes a pour
valeur la séquence vide
 la valeur de la comparaison
est false.
 Valeur de exp1 = nœud n1,

K. M. BROU Technologies XML : Langage XQuery 31


IV. Les expressions
 Exemple  4.11. Opérations sur les séquences
 L’expression  Séquence vide : ()
 document("bib.xml")//boo
k[@id="1"] <<  Séquence non vide : exp1, …, expn
document("bib.xml")//boo  Séquences d’entiers : exp1 to exp2
k[@id="2"]  Exemples :
 a la valeur true

Requête Résultat
1 + 5, 4 - 2, 7 * 3 6, 2, 21
((9, 1), 5, (8, 2)) 9, 1, 5, 8, 2
2 to 5 2, 3, 4, 5
5 to 2 ()

K. M. BROU Technologies XML : Langage XQuery 32


IV. Les expressions
 4.12. Opérations sur les Opération Explication
séquences de nœuds exp1 union exp2 Union
 Syntaxe exp1 | exp2 Union
 Dans la séquence résultante :
exp1 intersect exp2 Intersection
 les doubles (nœuds de même
identifiant) sont éliminés, exp1 except exp2 Différence
 Exemple :
document("bib.xml")//(author |
editor)
 a pour valeur la séquence des
nœuds de type author et editor.

Rq4.xq

K. M. BROU Technologies XML : Langage XQuery 33


IV. Les expressions
 Exemple : Rq5.xq
 document("bib.xml")//(author,
price)
 a pour valeur la séquence des
nœuds de type author suivi de prix.
 On a changé l’ordre des nœuds.
 Remarque
 document("bib.xml")//(author,
price)
 Ou doc("bib.xml")//(author, price)

K. M. BROU Technologies XML : Langage XQuery 34


IV. Les expressions
 4.13. Constructions de nœuds  Construction directe d’élément
<n a1="v1" … ak="vk">c</n>
Un constructeur produit un


nouveau nœud :  Valeurs d’attributs v1, …, vk peuvent
contenir :
 document, élément, texte,  des caractères, des entités ou bien des
attribut, espace de noms, expressions XQuery placées entre
commentaire, instruction de accolades, appelées expressions incluses.
traitement.
L’évaluation de la valeur d’un attribut doit
Un constructeur d’élément

 produire une chaîne de caractères.
produit un nouveau nœud Le contenu c peut contenir des caractères,
élément.

des constructions directes d’éléments ou
 Ses nœuds fils sont eux- des expressions incluses.
mêmes des nouveaux nœuds.  L’évaluation du contenu doit produire une
 Il n’y a donc pas partage de séquence de nœuds telle que :
nœuds entre deux éléments.  elle ne contient pas de nœud document ;
 On distingue :  les nœuds produits par une expression
 les constructeurs directs ; incluse ont été recopiés pour produire de
 les constructeurs calculés. nouveaux nœuds ;
 les nœuds attributs s’ils existent
précèdent les autres nœuds ;
 les nœuds textes adjacents sont fusionnés
en un seul nœud texte.
K. M. BROU Technologies XML : Langage XQuery 35
IV. Les expressions
 Exemples :

Requête
<phrase>1 + 1 = {1 + 1}</phrase>
<titre>{"Le ", "langage ", "XML"}</titre>
<personne num="n1" >toto</personne>
let $x := <p><n>Toto</n>
<v>Yakro</v>
</p>
return <personne nom="{$x/n}"
ville="{$x/v}"/>

Résultat
<phrase>1 + 1 = 2</phrase>
<titre>Le langage XML</titre>

<personne nom="Toto" ville="Yakro"/>

K. M. BROU Technologies XML : Langage XQuery 36


IV. Les expressions
 Constructions calculées  Exercice : créer les nœuds
 Les constructeurs calculés suivants :
permettent de construire des <eleve mat="2">
nœuds dont les composantes <classe codecl="3">INFO3</classe>
(nom, fils, valeur, …) sont les </eleve>
valeurs d’expressions XQuery.
 element nom {exp}
 element {exp1} {exp2} <eleve mat="2">
 attribute nom {exp} <classe codecl="3">
 attribute {exp1} {exp2} <nomCl>INFO3</nomCl>
 document {exp} </classe>
 text {exp} </eleve>
 Exemple :
Requête
element livre
{attribute num {2},
element titre {"Le langage XML"}
}
Résultat
<livre num="2">
<titre>Le langage XML</titre>
</livre>
K. M. BROU Technologies XML : Langage XQuery 37
IV. Les expressions
 Correction :
Requête Résultat
element eleve <eleve mat="2">
{attribute mat {2}, <classe codecl="3">
element classe INFO3
{attribute codecl {3}, </classe>
"Info3" </eleve>
}
}

Requête Résultat
element eleve <eleve mat="2">
{attribute mat {2}, <classe codecl="3">
element classe <nomCl>INFO3</nomCl>
{attribute codecl {3}, </classe>
element nomCl {"Info3"} </eleve>
}
}

K. M. BROU Technologies XML : Langage XQuery 38


IV. Les expressions
 4.14. Expression itérative : FLWOR  une clause WHERE : contient un ou
plusieurs prédicats qui filtrent le jeu
 Prononcer "flower" de nœuds générés par les clauses
 Expression FLWOR (For, Let, FOR/LET.
Where, Order by, Return)  Une clause ORDER BY : pour le tri ;
 Similaire SELECT-FROM-WHERE de  une clause RETURN :
SQL.  Génère le résultat de l'expression
 Expression FLWOR peut contenir : FLWOR ;
 une clause FOR : attache une ou  Contient un ou plusieurs éléments
plusieurs variables à une séquence constructeurs et/ou des références à
de valeurs renvoyées par une autre des variables ;
expression (généralement une  Exécutée une fois pour chaque
expression de chemin), et boucle nœud renvoyé par les clauses
dans les valeurs ; FOR/LET/WHERE.
 une clause LET : idem FOR, mais
sans itération ;

K. M. BROU Technologies XML : Langage XQuery 39


IV. Les expressions
 Syntaxe :
 Explication (for $x1 in f1, …, $xn in fn : itérations imbriquées
| let $y1 := l1, …, $ym := lm) : variables locales
 for a in f where c return a’: (where w)? : condition
(order by o1 d1, …, om dk)? : clés de tri
 for : permet d’accéder à un arbre a return r : item à retourner
de la forêt f
 where : permet de tester si l'arbre a où :
x1, …, xn, y1, …, yk sont des noms de variables,
vérifie la condition c f1, …, fn, l1, …, lm, w, o1, …, ok, r sont des
 return : permet de construire un expressions,
di {ascending, descending, …} spécifie la
nouvel arbre a', à partir de l'arbre a direction du tri.

K. M. BROU Technologies XML : Langage XQuery 40


IV. Les expressions
 Exemple 1 : noms des auteurs du  Contenu de la séquence :
livre 3 (R6.xq, R6b.xq)
 Contenu de la séquence : $b =
(<last>…</last>,
Requête <last>…</last>,…,
let $al := <last>…</last>
document("bib.xml")//book[3]/author/last )
return
<livre nbAuteurs="{count($al)}">
{ $al }
</livre> Résultat
<livre nbAuteurs="3">
ou <last>Abiteboul</last>
for $b in document("bib.xml")//book[3] <last>Buneman</last>
let $al := $b/author/last <last>Suciu</last>
return </livre>
<livre nbAuteurs="{count($al)}">
{ $al }
</livre>

K. M. BROU Technologies XML : Langage XQuery 41


IV. Les expressions
 Exemple 2 : nom de tous les Résultat
auteurs de livre (Rq7.xq) <auteurs>
<livre nbAuteurs="1">
Requête <title>TCP/IP Illustrated</title>
<auteurs> <last>Stevens</last>
{for $b in document("bib.xml")//book </livre>
let $al := $b/author/last <livre nbAuteurs="1">
return <title>Advanced Programming in the Unix
<livre nbAuteurs="{count($al)}"> environment</title>
{$b/title, $al } <last>Stevens</last>
</livre> </livre>
} <livre nbAuteurs="3">
</auteurs> <title>Data on the Web</title>
<last>Abiteboul</last>
<last>Buneman</last>
<last>Suciu</last>
</livre>

</auteurs>

K. M. BROU Technologies XML : Langage XQuery 42


IV. Les expressions
 Exemple 3 : nom des livres Requête
dont le nom de l’auteur est <livres>
Stevens (Rq8.xq). {for $a in document("bib.xml")//book
for $b in $a/author
where $b/last = "Stevens"
return $a/title
}
</livres>

Résultat
<livres>
<title>TCP/IP Illustrated</title>
<title>Advanced Programming in the
Unix environment</title>
</livres>

K. M. BROU Technologies XML : Langage XQuery 43


IV. Les expressions
 4.15. Expression
conditionnelle : if-then-else
 Exemple : livres de Abiteboul
publiés après 1994 (Rq9.xq).

Requête Résultat
<livres>
{for $b in document("bib.xml")//book <livres>
where $b/author/last = "Abiteboul" <livre recent="true">
return <title>TCP/IP Illustrated</title>
if ($b/@year gt "1994") then </livre>
<livre recent="true"> {$b/title} </livre> <livre>
else <title>Advanced Programming in
<livre> {$b/title} </livre> the Unix environment</title>
} </livre>
</livres> </livres>

K. M. BROU Technologies XML : Langage XQuery 44


IV. Les expressions
 4.16. Expressions de quantification Requête
 some $var in expr1 satisfies expr2 <auteurs>
{for $a in document("bib.xml")//author
 il existe au moins un nœud retourné
where every $b in
par l’expression expr1 qui satisfait document("bib.xml")//book[author/last = $a/last]
expr2. satisfies $b/publisher="Morgan Kaufmann Publishers"
 every $var in expr1 satisfies expr2 return <nom>{string($a/last)}</nom>
}
 tous les nœuds retournés par </auteurs>
l’expression expr1 satisfont expr2
 Exemple : nom des auteurs dont la Résultat
maison d’édition est "Morgan <auteurs>
Kaufmann Publishers" (Rq10.xq) <nom>Abiteboul</nom>
<nom>Buneman</nom>
<nom>Suciu</nom>
<nom>Scholl</nom>
<nom>Voisard</nom>
</auteurs>

K. M. BROU Technologies XML : Langage XQuery 45


IV. Les expressions
 4.17. Expression de tri Requête

 Syntaxe <livres>
{for $b in document("bib.xml")//book
 Expr1 order by (Expr2)ascending |
order by ($b/@year)descending return
descending
<livre>
 Trier les éléments de Expr1 par les { $b/@year, $b/title }
valeurs retournées par Expr2.
</livre>
 Exemple : titre et année d’édition }
des livres triés par année </livres>
décroissante (Rq11.xq).
Résultat
<livres>
<livre><title>Comprendre XSLT</title> </livre>
<livre year="2001">
<title>Spatial Databases</title></livre>
<livre year="2000"><title>Data on the Web</title></livre>
<livre year="1999">
<title>The Technology and Content for Digital TV</title>
</livre>
<livre year="1994"><title>TCP/IP Illustrated</title></livre>
<livre year="1992">
<title>Advanced Programming in the Unix environment</title>
</livre>
</livres>

K. M. BROU Technologies XML : Langage XQuery 46


IV. Les expressions
 4.18. Jointure
<adresse>
 Fichier adresse.xml <personne>
<nom>Stevens</nom>
<pays>France</pays>
<institution>CNAM</institution>
</personne>
<personne>
<nom>Abiteboul</nom>
<pays>France</pays>
<institution>CNAM</institution>
</personne>
<personne>
<nom>Buneman</nom>
<pays>Germany</pays>
<institution>FU Berlin</institution>
</personne>
</adresse>

K. M. BROU Technologies XML : Langage XQuery 47


IV. Les expressions
 Exemple : titre des livres, nom
et institution des auteurs.
 Nœuds non calculés (Rq12.xq)

Requête : Rq12.xq Résultat


<livres> <livres>
{for $b in <livre titre="TCP/IP Illustrated">
document("bib.xml")//book
return <auteur nom="Stevens" institut="CNAM"/>
<livre titre="{$b/title}"> </livre>
{for $a in $b/author <livre titre="Advanced Programming in the Unix
for $p in environment">
doc("adresse.xml")//personne
return <auteur nom="Stevens" institut="CNAM"/>
if($a/last = $p/nom) then </livre>
<auteur nom="{$a/last}" <livre titre="Data on the Web">
institut= "{$p/institution}" /> <auteur nom="Abiteboul" institut="CNAM"/>
else
() <auteur nom="Buneman" institut="FU Berlin"/>
} </livre>
</livre> <livre titre="The Technology and Content for
} Digital TV"/>
</livres>
<livre titre="Comprendre XSLT"/>
<livre titre="Spatial Databases"/>
</livres>
K. M. BROU Technologies XML : Langage XQuery 48
IV. Les expressions
 Exemple 2 : titre des livres, Résultat
nom et institution des auteurs.
<livres>
 Nœuds calculés (Rq12b.xq)
<livre titre="TCP/IP Illustrated">
Requête : Rq12b.xq <auteur nom="Stevens"
institut="CNAM"/>
<livres> </livre>
{for $b in document("bib.xml")//book
return element livre <livre titre="Advanced Programming in
{attribute titre {$b/title}, the Unix environment">
for $a in $b/author <auteur nom="Stevens"
return element auteur institut="CNAM"/>
{attribute nom {$a/last},
for $p in </livre>
document("adresse.xml")//personne <livre titre="Data on the Web">
return if ($a/last = $p/nom) then <auteur nom="Abiteboul" institut="FU
attribute institut Berlin"/>
{$p/institution}
else () <auteur nom="Buneman" institut="FU
} Berlin"/>
} <auteur nom="Suciu"
} institut="CNAM"/>
</livres>
</livre>

</livres>

K. M. BROU Technologies XML : Langage XQuery 49


IV. Les expressions
 Exemple 3 : titre des livres, nom, pays
et institution des auteurs (Rq12c.xq).
Requête : Rq12c.xq Résultat
<livres> <livres>
{for $b in document("bib.xml")//book <livre titre="TCP/IP Illustrated">
return element livre <auteur nom="Stevens" institut="CNAM">
{attribute titre {$b/title}, <pays>France</pays></auteur>
for $a in $b/author </livre>
return element auteur <livre titre="Advanced Programming in the
{attribute nom {$a/last}, Unix environment">
for $p in <auteur nom="Stevens" institut="CNAM">
document("adresse.xml")//personne <pays>France</pays></auteur>
return </livre>
if ($a/last = $p/nom) then <livre titre="Data on the Web">
(attribute institut {$p/institution}, <auteur nom="Abiteboul" institut="FU
element pays {string($p/pays)} Berlin">
) <pays>Germany</pays>
else () …
} </livres>
}
}
</livres>
K. M. BROU Technologies XML : Langage XQuery 50
IV. Les expressions
 4.19. Fonctions
 Les fonctions et opérateurs sont Nom Rôle
 Typées (XML schema) et count() Compte les éléments de la sélection
manipulent des séquences et des Permet de sélectionner des éléments par leur
valeurs typées : entiers, chaînes de id()
identifiant
caractères, dates, . . .
last() Dernier élément d'une sélection
 Fonction prédéfinie : 4 catégories :
Renvoie l'index de la position du nœud
 chaînes de caractères (string) ; position()
relativement au nœud parent
 nombres (number) ;
text() Valeur d'un élément
 booléens (boolean) ;
name() Nom d'un élément
 nœuds (node).
 Catégorie "node"

K. M. BROU Technologies XML : Langage XQuery 51


IV. Les expressions
 Catégorie "string" Nom Rôle Exemple Résultat
Retourne la concaténation 'About
concat() concat("About", " ", "XML")
d'arguments XML'
Retourne vrai si la première
contains() contains("XML", "X") true
string contient la deuxième
string() Convertit un objet en string string(12.20) '12,20'
substring() Retourne une sous string substring("XML",2,3) 'ML'
Convertit des caractères d'une
translate() translate("XML","X","W") 'WML'
string

Nom Rôle Exemple Résultat


 Catégorie "number" round() Arrondi un nombre à virgule round(12.20) 12
Noeud 'price'
number() Convertit un argument en nombre number(price) convertit en
nombre
Retourne la somme de chaque
sum() nœud appartenant au jeu de sum(//book/price) 85.5
nœuds passé en argument

K. M. BROU Technologies XML : Langage XQuery 52


IV. Les expressions
 Catégorie "boolean" Nom Rôle
boolean() Converti un argument en booléen
false() Retourne faux
true() Retourne vrai
not() Retourne vrai si son argument est faux, ou faux dans le cas contraire

Requête
 Exemple 1 : prix moyen <prixMoyen>
des livres d’un éditeur {for $p in distinct-values(document("bib.xml")//publisher)
let $l: = document("bib.xml")//book[publisher = $p]
(AVG) return element publisher {attribute name {string($p)},
attribute avgPrice { avg($l/price) }}
 Rq13.xq }
</prixMoyen>
Résultat
<prixMoyen>
<publisher name="Addison-Wesley" avgPrice="68.45"/>
<publisher name="Morgan Kaufmann Publishers" avgPrice="37.475"/>
<publisher name="Kluwer Academic Publishers" avgPrice="129.95"/>
<publisher name="OReilly" avgPrice="28.95"/>
</prixMoyen>

K. M. BROU Technologies XML : Langage XQuery 53


IV. Les expressions
 Exemple 2 : somme des
prix des livres d’un
éditeur Requête
 Rq13b.xq <montant>
{for $p in distinct-values(document("bib.xml")//publisher)
let $l := document("bib.xml")//book[publisher = $p]
return element publisher {attribute name {string($p)},
attribute sumPrice { sum($l/price) }}
}
</montant>
<montant>
<publisher name="Addison-Wesley" sumPrice="136.9"/>
<publisher name="Morgan Kaufmann Publishers" sumPrice="74.95"/>
<publisher name="Kluwer Academic Publishers" sumPrice="129.95"/>
<publisher name="OReilly" sumPrice="28.95"/>
</montant>

K. M. BROU Technologies XML : Langage XQuery 54


IV. Les expressions
 Fonctions définies par l’utilisateur Requête
 Syntaxe declare function local:nombreAuteurs($b) as xs:integer
declare function {count(distinct-values($b/author))};
local:nomFonction($arg1 [as
type1], …) [as typen] (: appel de la fonction :)
{…} let $a := document("bib.xml")//book
return
 Les diférents types : <nbAuteurs>{local:nombreAuteurs($a)}</nbAuteurs>
 xs:integer, xs:double ,
xs:string, xs:date, xs:boolean
xs:anyURI Résultat
 Exemple 1 : nombre des auteurs <nbAuteurs>
(Rq14.xq) 8
</nbAuteurs>

K. M. BROU Technologies XML : Langage XQuery 55


IV. Les expressions
 Exemple 2 : nombre des auteurs du  Exemple 3 : prix d’un livre
3e livre (Rq14.xq) connaissant son titre (Rq14b.xq).
Requête
Requête declare function local:prix($nom)
declare function local:nombreAuteurs($b) as xs:integer {document("bib.xml")//book[title = $nom]/price};
{count(distinct-values($b/author))}; (: appel de la fonction :)
<lesPrix>
(: appel de la fonction :) {let $d := document("bib.xml")//book
let $a := document("bib.xml")//book[3] for $m in $d/title
return let $p := local:prix($m)
<nbAuteurs>{local:nombreAuteurs($a)}</nbAuteurs> return (<books>{$m, $p}</books>)
}
</lesPrix>

Résultat Résultat
<lesPrix>
<nbAuteurs>
<books><title>TCP/IP
3 Illustrated</title><price>65.95</price></books>
</nbAuteurs> <books>
<title>Advanced Programming in the Unix
environment</title>
<price>70.95</price>
</books>

</lesPrix>
K. M. BROU Technologies XML : Langage XQuery 56
IV. Les expressions
 Exemple 4 : prix d’un livre connaissant
son titre (Rq14c.xq).

Requête Résultat
declare function local:prix($nom) <lesPrix>
{document("bib.xml")//book[title = <books><title>TCP/IP
$nom]/price}; Illustrated</title><price>65.95</price>
</books>
(: appel de la fonction :) <books>
<lesPrix> <title>Advanced Programming in the
{let $d := document("bib.xml")//book Unix environment</title>
for $m in $d/title <price>70.95</price>
let $p := local:prix($m) </books>
return (<books>{$m, $p}</books>) …
} </lesPrix>
</lesPrix>

K. M. BROU Technologies XML : Langage XQuery 57


IV. Les expressions
 4.20. Fonctions récursives
 Exemple : calcul de n! = n * (n-1)!
 Rq15.xq
Résultat
Requête
<resultats>
declare function local:fac($n as xs:integer) as
<fac>fac(1)=1</fac>
xs:integer
<fac>fac(2)=2</fac>
{if ($n < 0) then
<fac>fac(3)=6</fac>
0
<fac>fac(4)=24</fac>
else
<fac>fac(5)=120</fac>
if ($n = 0) then
<fac>fac(6)=720</fac>
1
<fac>fac(7)=5040</fac>
else
<fac>fac(8)=40320</fac>
$n * local:fac($n - 1)
<fac>fac(9)=362880</fac>
};
<fac>fac(10)=3628800</fac>
<resultats>
</resultats>
{for $x in 1 to 10
return
<fac>fac({$x})={local:fac($x)}</fac>
}
</resultats>
K. M. BROU Technologies XML : Langage XQuery 58
IV. Les expressions
 Exemple 2 : profondeur d’un arbre Requête
 Rq15b.xq declare function local:depth($n) as xs:integer
 La racine est de profondeur 0 {if (empty($n/*)) then
1
else
max(for $c in $n/* return local:depth($c)) + 1
};

<profondeur>
{let $x := document("bib.xml")//book
return local:depth($x)
}
</profondeur>

Résultat
<profondeur> 3</profondeur>

K. M. BROU Technologies XML : Langage XQuery 59


IV. Les expressions
 TD7 + TP7

Commande Produit
Client passe
0,n 1,1 numCom 1,n detailCom 0,n numProd
numCl dateCom qteCom designation
Nom prix
Tel qtéStock
Adresse
fax
1, 1 norue
1,1 Rue
possede ville
codepostal

1. XML
 Créer les documents XML
correspondants (2 documents).
 Ajouter 5 produits, 3 clients, 2
commandes par client, 2 produits par
commande.
K. M. BROU Technologies XML : Langage XQuery 60
IV. Les expressions
2. Requêtes :  Rq7 : numéros, nom, adresse du client
Toto avec ses commandes (numCom,
 Rq1 : Liste des clients.
dateCom) et le détail de ses
 Rq2 : Liste des clients (numCl, nom). commandes (numProd, désignation,
 Rq3 : Liste des clients avec leur qteCom, prix, qteCom*prix).
adresse (numCl, nom, adresse).  Rq8 : numéro, nom, adresse du client
 Rq4 : Liste des clients (numCl, nom, Toto avec ses commandes (numCom,
adresse) avec leurs commandes dateCom) et le détail de sa commande
(numCom, dateCom). de numéro 1 (numProd, désignation,
 Rq5 : Lister tous les numéros, nom, qteCom, prix, qteCom*prix)
adresse des clients avec leurs  Rq9 : Ecrire une fonction qui détermine
commandes (numCom, dateCom) et le nombre de commande d’un client
le détail des commandes. donné.
 Rq6 : Lister tous les numéros, nom,  Rq10 : Ecrire une fonction qui liste le
adresse du client Toto avec ses numéros, nom, adresse du client Toto
commandes (numCom, dateCom) et avec sa commande numéro 1
le détail de ses commandes (numCom, dateCom) et le détail de
(numProd, qteCom). cette commandes (numProd,
désignation, qteCom, prix,
qteCom*prix).
K. M. BROU Technologies XML : Langage XQuery 61
IV. Les expressions
 Rq11 : Montant total d’une commande
d’un client donné.
 Rq12 : Montant total de toutes les
commandes d’un client donné.
 Rq13 : Créer un module contenant les
fonctions issues des requêtes Rq9
àRq12.

K. M. BROU Technologies XML : Langage XQuery 62


IV. Les expressions
 4.21. Module
 Collection de fonctions et de Module
déclarations module namespace
 Rq16.xq biblio="http://www.Cours/Cours2011/XML/Support/Sour
ces/SourceXQ";

(: Déclaration de module :)

declare function biblio:nombreAuteurs($b) as xs:integer


{count(distinct-values($b/author))};

declare function biblio:prix($nom)


{doc("bib.xml")//book[title = $nom]/price};

declare variable $biblio:TestVariable := 7.5;

K. M. BROU Technologies XML : Langage XQuery 63


IV. Les expressions
 Utilisation (Rq16b.xq) <lesPrix
xmlns:biblio="http://www.cours/cours2010/XML/X
ML 2009/source/sourceXQ">
import module namespace <books><title>TCP/IP
biblio="http://www.Cours/Cours2011/XML/Support/ Illustrated</title><price>65.95</price></books>
Sources/SourceXQ" at "Rq16.xq"; <books>
(: Utilisation de module :) <title>Advanced Programming in the Unix
<lesPrix> environment</title><price>70.95</price>
{let $d := doc("bib.xml")//book </books>
for $m in $d/title <books><title>Data on the
let $p := biblio:prix($m) Web</title><price>39.95</price></books>
return (<books>{$m, $p}</books>) <books>
} <title>The Technology and Content for Digital
</lesPrix> TV</title><price>129.95</price>
</books>
<books><title>Comprendre
XSLT</title><price>28.95</price></books>
<books><title>Spatial
Databases</title><price>35.00</price></books>
</lesPrix>
NB. L’attribut de la balise lesPrix est visible avec
Galax en mode commande et non GalaxServe

K. M. BROU Technologies XML : Langage XQuery 64


V. Application : Recherche de composants
 5.1. Présentation  Problèmes rencontrés lors de la
 Le développement des ressources réutilisation de composants
de « l’informatique libre » est très  Liés à leur disponibilité, au temps
rapide et engendre des de développement, à la recherche
composants de très grande et à la sélection du composant
qualité. approprié.
 Un composant est un logiciel qui  Comment tirer le meilleur profit
rend un service au moyen d’une de ces ressources ?
interface externe.  une plate-forme opérationnelle
 Pour nous un composant est une doit pouvoir en premier lieu
classe ou une fonction. disposer d’un système de
 Nous nous intéressons à la recherche d’information efficace
réutilisation de ces composants permettant de trouver le bon
afin de réduire le coût de composant et sa documentation.
production et de maintenance des
logiciels.

K. M. BROU Technologies XML : Langage XQuery 65


V. Application : Recherche de composants
 Modèle de données utilise
0..n 0..n

Relation
Bibliothèque
-nature :
-nomB :
-URL :
0..n utilise 0..n
-domaine :
-langage :
1..1
-description :
Composant
-version : 1..n 1..n
Mots-clés
1..n 1..n 1..1 -nomC :
-domaine :
1..n -nomM :
1..n 1..n -langage :
-organisme :
-réutilisation :
-sujet :
Auteur Documentation -version :
-description :
-nomA : -nomD :
-organisme : -tailleDoc : 1..n 1..n
-formatDoc : 1..n
1..n
-dateDoc :
1..n -URLDoc :
Service
FichierSrc 0..n

PlateForme -nomS :
-nomF : référence
-signature :
-taille :
-nomP : -code :
-date : 0..n
-systemExpl : -description :
-URL :
-adresse :

K. M. BROU Technologies XML : Langage XQuery 66


V. Application : Recherche de composants
 5.2. Architecture du système
G e s t io n n a i r e d u R e p o s it o r y d ’ in f o - c o m p o s a n t s M o d u le R e c h e r c h e d e c o m p o s a n t s
U t ilis a t e u r
O u t il R e q u ê te Réponse
B ib l io t h è q u e d ’ e x t r a c t io n d e
de m é ta d o n n é e s
p ro g ra m m e s

In te rfa c e
u t ilis a t e u r
C o n s t r u c t io n d e la C o n s t r u c t io n d e la
D e s c r ip t e u r s D e s c r ip t e u r s re q u ê te X Q u e ry ré p o n s e : X S L + C S S
s ig n a lé t iq u e s s é m a n tiq u e s G e s t io n n a i r e d e
re q u ê te X Q u e ry
E x p e rt E x é c u t io n d e la R é s u lt a t s X M L
re q u ê te X Q u e ry
G é n é ra te u r d u M o te u r X Q u e ry
R e p o s it o r y d ’ in f o s -
c o m p o sa n ts

R e p o s it o r y d ’ in f o s - c o m p o s a n t s e t T h é s a u r u s

K. M. BROU Technologies XML : Langage XQuery 67


V. Application : Recherche de composants
 Outil d’extraction :  Générateur du Repository d’infos-
 Il permet d’extraire la description composants :
sémantique d’une bibliothèque et  Permet de générer
de ses composants. automatiquement un info-
composant (document XML) à partir
 Descripteurs sémantiques
des descriptions signalétiques et
 Informations qui ne peuvent être sémantique d’une bibliothèque et
extraites automatique : composant, de ses composants.
méthodes, fichiers sources...
 Descripteurs signalétiques
 Informations qui ne peuvent être
extraites que manuellement
(données signalétiques) :
Bibliothèque, Documentation,
Auteur, Plate-forme, Mots-clés…

K. M. BROU Technologies XML : Langage XQuery 68


V. Application : Recherche de composants
 Module de recherche  Gestionnaire de requêtes XQuery :
 Chargé de la construction des  (1) traduire une requête utilisateur
requêtes, de leur exécution, de la en XQuery avant de la passer au
construction et de la présentation du Moteur XQuery ; (2) recevoir la
résultat à l’utilisateur. réponse de la requête du Moteur
 Interface utilisateur : XQuery ; (3) transformer les
 Permet à l’utilisateur de créer une résultats en données XML ; (4)
requête XQuery sans connaître le Retourner le résultat en XML à
schéma XML du catalogue. l’interface utilisateur.
 Ses fonctions sont : recevoir une  Moteur XQuery :
requête basée sur les termes du  Permet d’exécuter la requête XQuery
thesaurus du domaine ; avoir le et de délivrer le résultat XML au
résultat de la requête en XML du gestionnaire de requêtes XQuery.
Gestionnaire de requêtes XQuery, le
convertir en HTML à l’aide de feuilles
de style XSL et CSS, et l’afficher sur
l’écran.

K. M. BROU Technologies XML : Langage XQuery 69


V. Application : Recherche de composants
 Exemple d’info-composant
MV++.xml

<?xml version="1.0" encoding="ISO-8859-1"?> <?


<?xml-stylesheet type="text/css" href="catalogue.css"?> <urlF>C:\MDMS\Bibliotheques\mv\include\mvvtp.h</urlF>
<bibliotheque id="MV++"> </fichierSrc>
<nomB>MV++</nomB> <service id="1" >
<url>C:\MDMS\Bibliotheques\mv</url> <nomS>FMV_Vector</nomS>
<dochtml>C:\MDMS\Bibliotheques\mv\html</dochtml> <signature>template&lt;class TYPE&gt; FMV_Vector (
<composant id="1" domaine="" sujet="" version=""> unsigned int n )</signature>
<nomC>FMV_Vector&lt; TYPE &gt;</nomC> <adresse>
<fichierSrc> <debut>00382 </debut> <fin>00382 </fin>
<nomF>mvvtp.h</nomF> <fichier>mvvtp.h </fichier>
<taille>13.1Ko </taille> </adresse>
<date>23:07:04</date> </service>

K. M. BROU Technologies XML : Langage XQuery 70


V. Application : Recherche de composants
 Interface Web
 Alias PsRep sur
C:\PSRep\PSRep_Web\SearchInterface

K. M. BROU Technologies XML : Langage XQuery 71


V. Application : Recherche de composants
 Interface d’interrogation

K. M. BROU Technologies XML : Langage XQuery 72


V. Application : Recherche de composants
 Utilisation du thesaurus

K. M. BROU Technologies XML : Langage XQuery 73


V. Application : Recherche de composants
 Résultat de la recherche sur un service

K. M. BROU Technologies XML : Langage XQuery 74


V. Application : Recherche de composants
 Accès au code source

K. M. BROU Technologies XML : Langage XQuery 75


Bibliographie
 Livres
 "XML, Langage et applications", Alain Michard, Eyrolles.
 Webographie
 Site du W3C sur XQuery: http://www.w3.org/XML/Query
 http:// www.lri.fr/~benzaken/documents/xquery.pdf
 http://cui.unige.ch/eao/www/xml/Plan.html#main
 http://h2ptm.hypermedia.univ-
paris8.fr/mkadmi/coursXML/sommaire.htm
 http://wam.inrialpes.fr/courses/VQ-EcoleEte3-4-
Jun03/slide4-0.html
 http://gilles.chagnon.free.fr/cours/xml/schema.html
 http://www.galaxquery.org/
 http://www.w3.org/TR/xmlquery-use-cases/
 http://css.mammouthland.net/css_de_base.php
K. M. BROU Technologies XML : Langage XQuery 76

Vous aimerez peut-être aussi