BD XML
BD XML
2
Les Données Structurées
Définition
● Les données structurées se caractérisent par une organisation claire et définie
grâce à un schéma. Elles suivent un modèle précis, ce qui facilite leur
manipulation, stockage, et interrogation.
3
Les Données Structurées - Caractéristiques principales
Organisation en entités :
● Les données sont regroupées sous forme d'entités, où chaque entité
représente un objet ou un élément spécifique.
● Exemple : Un étudiant, un cours, ou un produit.
Groupes ou classes :
● Les entités similaires (par exemple, tous les étudiants) sont regroupées en
classes ou groupes.
4
Les Données Structurées - Caractéristiques principales
5
Les Données Structurées - Caractéristiques principales
Schéma descriptif :
● Les données structurées sont régies par un schéma (par exemple, un modèle
relationnel ou un schéma XML).
● Ce schéma spécifie les règles qui définissent la structure, les types de
données, et les contraintes.
Stockage :
● Ces données sont généralement stockées dans des bases de données,
notamment relationnelles, qui permettent de les gérer efficacement.
6
Avantages des données structurées
7
Les Données Non Structurées
Définition :
● Désignent des informations qui ne suivent pas de modèle ou de format
préétabli.
● Elles ne sont pas organisées dans des tableaux, BD, ou formats prédéfinis, ce
qui les rend difficiles à traiter à l'aide de méthodes traditionnelles de gestion de
données structurées.
8
Les Données Non Structurées - Caractéristiques principales
Définition :
● Se trouvent entre les données structurées et non structurées.
● Elles présentent un certain niveau d’organisation, mais cette organisation peut être plus flexible
et moins rigide que celle des données structurées.
Bases de Documents
données
Moteurs de recherche
Langages de requête
10
Caractéristiques des Données Semi-Structurées
Avantages
● Adapté aux Sources de Données Variées : Permet de représenter des
informations provenant de sources qui ne suivent pas un schéma fixe, ce qui
est couramment le cas pour les données issues du Web ou des fichiers divers.
● Format Flexible pour l’Interopérabilité : Facilite l’échange de données entre
différents systèmes.
● Vision des Données Structurées comme Semi-Structurées : Permet de
traiter des données structurées (par exemple des BD relationnelles) sous une
forme semi-structurée, ce qui est souvent utilisé dans des contextes comme le
Web.
● Schéma Facilement Évolutif : Permet d’adapter le schéma des données à
mesure que de nouvelles informations sont ajoutées, sans avoir à restructurer 12
Inconvénients
● Performance sur les Données à Grande Échelle : Bien que flexible, ce
modèle peut entraîner des problèmes de performance lorsqu'il est utilisé avec
de grandes quantités de données, surtout pour les opérations complexes de
recherche ou de requêtes.
13
Gestion des Données Semi-Structurées
14
Gestion des Données Semi-Structurées
15
Gestion des Données Semi-Structurées
16
Présentation et syntaxe de XML
17
Introduction au langage XML
18
Introduction au langage XML - Exemple d'un document XML
<?xml version="1.1" encoding="utf-8" ?> <!-- Prologue : déclaration de la version et de l'encodage
(obligatoire) -->
<annuaireProfs> <!-- Élément racine du document -->
<!-- Déclaration des sous-éléments -->
<prof>
<nom>Aymen Karam</nom>
<courriel>[Link]@univ-sba,dz</courriel>
<cours>Bases de données avancées</cours>
<cours>Bases de données </cours>
</prof>
<prof>
<nom>Nada Raghad</nom>
<courriel>[Link]@univ-sba,dz</courriel>
<cours>Architecture des Ordinateurs</cours>
</prof>
<!-- Autres entrées possibles --> 19
</annuaireProfs> <!-- Balise fermante de l'élément racine -->
Introduction au langage XML - Exemple d'un document XML
Caractéristiques principales :
● Le document est constitué d’un ensemble d’éléments imbriqués, définis par
des balises.
● Prologue XML : Obligatoire, il spécifie la version du langage (ici 1.1) et
l'encodage (utf-8).
● Élément racine : L'élément principal (<annuaireProfs>), qui contient tous les
autres éléments.
● Sous-éléments : Exemple avec <prof>, contenant des balises comme <nom>,
<courriel> et <cours>.
20
Règles d'écriture d'un document XML
● Élément racine unique : Un document XML doit avoir un seul élément racine
qui englobe tous les autres éléments.
● Emboîtement correct des éléments : Les balises doivent être correctement
imbriquées : Une balise ouvrante (<exemple>) doit être fermée dans le bon
ordre (</exemple>), sans chevauchement.
● Balises obligatoires : Chaque élément doit comporter une balise ouvrante et
une balise fermante, sauf pour les éléments auto-fermants (ex. <br />).
● Concordance des noms de balises : Le nom d’un élément doit être identique
entre la balise ouvrante et la balise fermante.
21
Règles d'écriture d'un document XML (suite)
● Sensibilité à la casse : Les noms des éléments sont sensibles à la casse (ex.
<Nom> et <nom> sont différents). Ils doivent commencer par une lettre ou un
underscore (_), suivis de lettres, chiffres, points (.), tirets (-) ou underscores.
● Restrictions sur les noms : Les noms d'éléments commençant par XML (ou
toute variation de casse, comme Xml ou xML) sont réservés par le W3C à des
fins de standardisation.
22
Règles d'écriture d'un document XML (suite)
23
Les Éléments en XML
● Section CDATA : permet d’inclure du texte brut sans interprétation des balises
ou des caractères spéciaux (sauf ]]> qui reste interdit).
Exemple :
<nom>
<![CDATA[<Aymen> & <Karam>]]>
</nom>
● Élément vide : Un élément sans contenu peut être écrit de deux manières :
<courriel></courriel>
<!-- Formulation équivalente -->
<courriel />
25
Les Attributs dans XML
Définition des attributs
● Les attributs permettent d'ajouter des informations complémentaires à un
élément XML.
● Ils sont définis sous la forme de couples nom/valeur directement dans la balise
ouvrante de l’élément.
● Exemple :
<bureau campus="Informatique" Batiment="C">3</bureau>
o campus : attribut avec la valeur Informatique.
o Batiment : attribut avec la valeur C.
Utilisation dans les éléments vides
● Les attributs peuvent également être utilisés dans des éléments vides.
● Exemple : <image source="[Link]" />
26
Contenu d’Élément XML vs. Attributs : Que Choisir ?
27
Contenu d’Élément XML vs. Attributs : Que Choisir ?
28
Contenu d’Élément XML vs. Attributs : Que Choisir ?
31
Documents XML valides
32
Documents XML valides
Le rôle de la DTD :
● Sert de modèle pour décrire la structure d’un document XML.
● Permet de vérifier automatiquement qu'un document respecte les règles
définies.
● Assure la cohérence au sein d'un groupe de documents XML similaires en
garantissant qu’ils suivent la même structure.
33
Spécification d'une DTD
DTD interne :
● Incluse directement dans le document XML.
● Se place après le prologue et avant l'élément racine.
● Exemple :
<!DOCTYPE nom_élément_racine [
<!-- insérer la DTD ici -->
]>
34
Spécification d'une DTD (la suite)
DTD externe :
● Se trouve dans un fichier séparé, ce qui est préférable, car cela permet de
réutiliser la même DTD pour plusieurs documents.
● La référence à la DTD se fait dans le prologue du document.
Exemple :
<!DOCTYPE nom_élément_racine SYSTEM "URI">
<!DOCTYPE annuaireModules SYSTEM « [Link]">
35
Spécification d'une DTD (la suite)
Déclaration des types d'éléments
● La déclaration d’un type d’élément suit le format :
<!ELEMENT nom_élément contenu>
● Exemple : <!ELEMENT nom (#PCDATA)>
Types de contenus possibles :
● Données textuelles : #PCDATA (Parsed Character Data)
● Élément vide : EMPTY
● Tout contenu légal : ANY
● Séquence ordonnée d'éléments : (élement1, élément2, …,élémentN)
o Exemple : <!ELEMENT prof (nom, courriel, cours)>
● Choix entre éléments : (élement1 | élément2 | … | élémentN)
o Exemple : <!ELEMENT uri (http | ftp | mailto | telnet)>
36
Spécification d'une DTD (la suite)
Multiplicité des éléments :
● Les règles de multiplicité permettent de définir combien de fois un élément peut
apparaître :
o 0 ou 1 occurrence : ?
o 1 à n occurrences : +
o 0 à n occurrences : *
● Exemples :
o Un élément montagne avec plusieurs noms, une hauteur optionnelle et un
pays obligatoire : <!ELEMENT montagne (nom+, hauteur?, pays)>
o Un élément montagne avec des occurrences multiples des sous-éléments :
<!ELEMENT montagne (nom, hauteur, pays)*>
37
Spécification d'une DTD (la suite)
39
Spécification d'une DTD (la suite)
Définition des attributs :
● Nom de l’attribut
● Type de l’attribut
● Valeur par défaut : Si un attribut est marqué #REQUIRED, il ne peut pas avoir
de valeur par défaut.
Types d’attributs :
● Chaîne de caractères : CDATA
● Token :
o ID : L'attribut doit être unique pour chaque élément.
o IDREF/IDREFS : La valeur de l’attribut référence un ou plusieurs autres éléments ayant un
attribut ID. Les valeurs multiples sont séparées par des espaces.
● Énumération : Liste de valeurs possibles. Exemple : <!ATTLIST bureau
Dept_Info(Bloc A | Labo) « Labo"> 40
Les entités dans une DTD
Définition :
● Une entité est une constante définie dans une DTD qui peut être utilisée
comme référence dans un document XML conforme à cette DTD.
● Elle permet de centraliser certaines valeurs récurrentes pour en faciliter
l’utilisation et la maintenance.
Déclaration d'une entité dans une DTD : <!ENTITY nom valeur>
Exemple : <!ENTITY dom-ull2 "[Link]">
Utilisation d'une entité dans un document XML :
● Les entités sont référencées avec &nom; à l'endroit souhaité dans le
document XML.
Exemple : <courriel>[Link]@&dom-ull2;</courriel>
<siteweb>[Link]
41
XML Schema : un standard évolué pour la validation des documents XML
Limites des DTD : (présentent certaines restrictions)
● Syntaxe spécifique : La syntaxe des DTD n’est pas basée sur XML, ce qui
peut rendre leur utilisation moins intuitive.
● Typage faible : Elles ne permettent pas une définition précise des types de
données.
● Absence de modélisation partielle : Elles ne prennent pas en charge des
définitions plus flexibles ou partielles des éléments.
● Avantage : Les DTD restent lisibles et compréhensibles pour les humains.
42
XML Schema : un standard évolué pour la validation des documents XML
44
Structure et utilisation d'un document XML Schema (XSD)
46
Spécification des éléments dans XML Schema
47
Types de données simples
48
Types complexes dans XML Schema
Séquence (xsd:sequence)
● Les éléments sont définis dans un ordre précis.
● Chaque élément doit apparaître dans la séquence spécifiée.
● Exemple :
<xsd:sequence>
<xsd:element name="nom" type="xsd:string" />
<xsd:element name="cours" type="xsd:string" />
<xsd:element name="courriel" type="xsd:string" />
</xsd:sequence>
● Les éléments nom, cours, et courriel doivent apparaître dans cet ordre exact.
49
Types complexes dans XML Schema
Choix (xsd:choice)
● Un seul des éléments définis peut apparaître.
● Exemple :
<xsd:choice>
<xsd:element name="http" type="xsd:string" />
<xsd:element name="ftp" type="xsd:string" />
<xsd:element name="mailto" type="xsd:string" />
<xsd:element name="telnet" type="xsd:string" />
</xsd:choice>
● Ici, le document peut contenir uniquement un des éléments : http, ftp, mailto,
ou telnet
50
Types complexes dans XML Schema
Tout (xsd:all)
● Tous les éléments définis doivent apparaître (au moins une fois), mais dans
n’importe quel ordre.
● Exemple :
<xsd:all>
<xsd:element name="adresse" type="xsd:string" />
<xsd:element name="courriel" type="xsd:string" />
<xsd:element name="tel" type="xsd:string" />
</xsd:all>
● Les éléments adresse, courriel, et tel doivent tous être présents, mais leur
ordre n’est pas imposé.
51
Types complexes dans XML Schema
Référence à un élément complexe
● Permet de réutiliser une définition d'élément complexe ailleurs dans le schéma.
● Exemple :
<xsd:element ref="prof" />
● Définition de l'élément complexe :
<xsd:element name="prof">
<xsd:complexType>
<!-- Contenu de l'élément -->
</xsd:complexType>
</xsd:element>
● Ici, l'élément prof peut être référencé dans d'autres parties du document,
évitant ainsi les redondances.
52
Spécification des attributs
Définition d’un attribut
● Les attributs dans XML Schema permettent de définir des propriétés
supplémentaires pour les éléments.
● Ils sont définis au sein d’un type complexe ou d’un élément, et peuvent inclure
des types de données simples, des valeurs par défaut, des contraintes
d'obligation, et des restrictions spécifiques.
● Exemples :
<xsd:attribute name="miseajour" type="xsd:date" default="2024-11-29" />
<xsd:element ref="prof" />
<xsd:attribute name="montant" type="xsd:integer" use="required" />
53
Spécification des attributs
Restriction de type d’un attribut
● Les attributs peuvent être restreints à une liste de valeurs prédéfinies.
● Exemple :
<xsd:attribute name="bureau" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value=“A12" />
<xsd:enumeration value=“A13" />
</xsd:restriction>
</xsd:simpleType> • L'attribut bureau est obligatoire (use="required").
• Il accepte uniquement l'une des valeurs : A12 ou A13.
</xsd:attribute> • La restriction est basée sur le type de base string.
54
Spécification des attributs
55
Déclaration des attributs dans XML Schema
Attributs dans des éléments de type simple
● Les éléments de type simple peuvent inclure des attributs en utilisant une
extension (xsd:extension) basée sur leur type de données de base.
● Exemple :
<xsd:element name="post-blog">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="date-envoi" type="xsd:date" />
</xsd:extension> • L'élément post-blog est basé sur un type simple
</xsd:simpleContent> (xsd:string).
• L’attribut date-envoi est ajouté pour spécifier une date
</xsd:complexType> associée à l'élément. 56
</xsd:element>
Déclaration des attributs dans XML Schema
Attributs dans des éléments de type complexe
● Les éléments de type complexe peuvent inclure des attributs en plus des sous-
éléments.
● Exemple : • L'élément prof contient une séquence de sous-éléments,
<xsd:element name="prof"> comme nom et cours.
• L’attribut bureau est ajouté pour indiquer un emplacement
<xsd:complexType> ou une référence liée au professeur.
<xsd:sequence>
<!-- Définition de sous-éléments -->
<xsd:element name="nom" type="xsd:string" />
<xsd:element name="cours" type="xsd:string" />
</xsd:sequence>
<xsd:attribute name="bureau" type="xsd:string" />
57
</xsd:complexType>
Déclaration des attributs dans XML Schema
Attributs par référence
● Les attributs peuvent être définis indépendamment dans le schéma et utilisés
par référence dans d'autres éléments.
● Exemple :
<xsd:attribute name="bureau" type="xsd:string" />
<xsd:element name="prof"> • L’attribut bureau est déclaré une fois avec
<xsd:complexType> son type (xsd:string).
• Il est référencé dans l’élément prof avec
<xsd:sequence> l’attribut ref.
<!-- Définition de s-éléments --> • L’attribut est obligatoire dans ce contexte
</xsd:sequence> grâce à use="required".
59
Exemple d'un schéma XML : Gestion d'un annuaire de professeurs
Le schéma XML complet (suite) :
<!-- Définition de l'élément "prof" -->
<xsd:element name="prof">
<xsd:complexType>
<xsd:sequence>
<!-- Sous-élément "nom" de type chaîne -->
<xsd:element name="nom" type="xsd:string" />
<!-- Sous-élément "cours" avec cardinalité -->
<xsd:element name="cours" type="xsd:string" minOccurs="1" maxOccurs="unbounded" />
<!-- Sous-élément "courriel" de type chaîne -->
<xsd:element name="courriel" type="xsd:string" />
</xsd:sequence>
<!-- Attribut "bureau" associé au professeur -->
<xsd:attribute name="bureau" type="xsd:string" />
</xsd:complexType>
</xsd:element>
60
</xsd:schema>
Exemple d'un schéma XML : Gestion d'un annuaire de professeurs
Explications des éléments et attributs :
Élément racine : annuaireProfs
● Regroupe les informations sur plusieurs professeurs.
● Son type est complexe, défini avec une séquence qui peut contenir un ou
plusieurs éléments prof :
o minOccurs="0" : Aucun professeur n'est obligatoire.
o maxOccurs="unbounded" : Il peut y avoir un nombre illimité de professeurs.
Élément prof
● Décrit un professeur avec trois sous-éléments et un attribut :
o nom : Nom du professeur, de type xsd:string.
o cours : Liste des cours enseignés, avec une cardinalité : minOccurs="1" : Au moins un cours
est obligatoire; maxOccurs="unbounded" : Un professeur peut enseigner plusieurs cours.
o courriel : Adresse e-mail, de type xsd:string.
61
Exemple d'un schéma XML : Gestion d'un annuaire de professeurs
Explications des éléments et attributs :
Attribut bureau
● Optionnel, il indique le bureau du professeur et est de type xsd:string.
Référence entre éléments
● L'élément prof est défini séparément pour être utilisé par d'autres structures
(comme annuaireProfs) via une référence (<xsd:element ref="prof" />).
62
Exemple d'un schéma XML : Gestion d'un annuaire de professeurs
Interprétation du fichier XML basé sur ce schéma
● Exemple de document XML valide conforme au schéma :
<?xml version="1.0" encoding="utf-8" ?>
<annuaireProfs>
<prof bureau="A12">
<nom>Aymen Karam</nom>
<cours>Base de données avancée</cours>
<cours>Base de données </cours>
<courriel>[Link]@[Link]</courriel>
</prof>
<prof bureau="A13">
<nom>Nada Raghad</nom>
<cours>Architecture des ordinateurs</cours>
<courriel>[Link]@[Link]</courriel>
</prof> 63
</annuaireProfs>
Interrogation de document XML
Manipulation avec XPath
64
Généralités sur Xpath (XML Path Language)
● Objectif principal : XPath est conçu pour extraire ou sélectionner des parties
spécifiques d’un document XML.
● Utilisation : Il est fréquemment intégré à d’autres langages, tels que XQuery,
XSLT, ou des bibliothèques dans des langages de programmation (par
exemple, Python, Java).
● Syntaxe : Les expressions XPath se basent sur des chemins pour naviguer
dans la structure en arbre d’un document XML et identifier des nœuds
pertinents.
65
Généralités sur XPath
66
Exemples d'expressions XPath
<?xml version="1.0" encoding="utf-8"?>
<collection>
<bd id="1">
<auteur>Fmurrr</auteur>
<titre>Sabotage et pâturage</titre>
<annee>1995</annee>
</bd>
</collection>
o /collection/bd : Sélectionne tous les nœuds <bd> directement sous le nœud racine
<collection>.
o //auteur : Sélectionne tous les nœuds <auteur> présents dans le document, peu importe leur
emplacement dans la hiérarchie.
o collection/bd/annee[text() = 1995]/parent::node() : Identifie le nœud <annee> dont le
contenu est "1995". Remonte ensuite à son parent immédiat, qui est ici le nœud <bd>. 67
Syntaxe complète d’une expression XPath
Structure générale : axe::test[prédicat]/…/axe::test[prédicat]
● Axe : Définit la direction ou le type de relation entre les nœuds (par exemple,
child, parent, ancestor, etc.).
● Test : Identifie les nœuds correspondant au nom ou type spécifié (par
exemple, un nom de balise).
● Prédicat : (optionnel) Définit une condition pour affiner la sélection des nœuds.
● Une expression XPath est une suite d’étapes successives.
● Chaque étape est écrite sous la forme : axe::test[prédicat].
● Évaluation des expressions :
o Depuis la racine : Si l'expression commence par un slash /, la sélection commence à partir
du nœud racine. Par exemple, /collection sélectionne le nœud <collection> racine.
o Depuis le nœud courant : Sans slash initial, l’évaluation commence à partir du nœud de
contexte actuel. 68
Syntaxe complète d’une expression XPath
● Chaque étape d’une expression XPath restreint ou modifie la liste des nœuds
sélectionnés.
● Les étapes sont évaluées dans l’ordre pour affiner progressivement la
sélection.
● Exemple d’utilisation complète :
o /collection/child::bd[attribute::id='1']/child::titre : Sélectionne le nœud <titre> de l'élément
<bd> ayant un attribut id égal à 1, sous le nœud <collection>.
● Syntaxe compacte :
o Utilise des raccourcis pour simplifier l'écriture (par exemple, // pour sélectionner tous les
descendants).
o Elle ne respecte pas strictement la syntaxe complète, mais est largement utilisée pour sa
simplicité.
69
Axes XPath : Navigation dans l'arbre XML
Un axe détermine la direction dans laquelle naviguer à partir d’un nœud courant
dans l'arbre XML.
Axes en arrière (navigation vers les ancêtres et précédents) : Ces axes
remontent dans l’arbre XML :
● ancestor : Sélectionne tous les ancêtres (parent, grand-parent, etc.) du nœud
courant.
● ancestor-or-self : Sélectionne les ancêtres et inclut le nœud courant.
● parent : Sélectionne uniquement le parent immédiat du nœud courant.
● preceding : Sélectionne tous les nœuds qui précèdent le nœud courant dans
le document, à l’exclusion des ancêtres.
● preceding-sibling : Sélectionne tous les nœuds frères qui précèdent le nœud
courant. 70
Axes XPath : Navigation dans l'arbre XML
Un test de nœud filtre les nœuds sélectionnés par un axe en fonction de leur
nom ou de leur type.
Nom spécifique :
Sélectionne uniquement les nœuds avec le nom donné.
● Exemple : collection sélectionne tous les éléments <collection>.
Astre (*) :
Sélectionne tous les nœuds élément, quel que soit leur nom.
● Exemple : /collection/* sélectionne tous les enfants de <collection>.
node() : Sélectionne tous les types de nœuds (éléments, texte, attributs, etc.).
● Exemple : /collection/node() sélectionne tous les enfants, y compris le contenu
texte et les éléments.
73
Tests de nœud dans XPath
Un test de nœud filtre les nœuds sélectionnés par un axe en fonction de leur
nom ou de leur type.
attribute() :
Sélectionne tous les nœuds de type attribut.
● Exemple : /collection/bd/attribute() sélectionne tous les attributs de <bd>.
text() :
Sélectionne uniquement les nœuds contenant du texte.
● Exemple : /collection/bd/titre/text() sélectionne le contenu texte du nœud
<titre>.
74
Les prédicats dans XPath
Un prédicat est un filtre appliqué aux nœuds sélectionnés pour ne conserver que
ceux qui remplissent une condition booléenne (comparable à la clause WHERE
en SQL).
Principes des prédicats :
● Un prédicat retourne vrai si l'expression évaluée produit un résultat non vide
ou une valeur vraie.
● Les opérateurs logiques comme and et or permettent de définir plusieurs
critères. Ex: /collection/bd[annee=1995 and auteur='Fmurrr']
● Les prédicats peuvent inclure des fonctions booléennes ou non booléennes.
Ex: /collection/bd[contains(auteur, 'Marie')] : Sélectionne les nœuds <bd> dont
le champ auteur contient le texte Marie.
● Les prédicats peuvent utiliser un chemin XPath, évalué à partir du nœud
75
courant.
Abréviations courantes dans XPath
77
Exemples d'expressions XPath
79
Exemples d'utilisation des fonctions XPath
81
Généralités sur Xquery (XML Query)
82
Structure et Syntaxe des Requêtes FLWOR
83
Comparaisons et Fonctions en XQuery
84
Comparaisons et Fonctions en XQuery
● La fonction doc(): Utilisée pour ouvrir un document XML externe dans une
requête XQuery. Elle est suivie d’une expression XPath pour cibler les
éléments.
● Exemple : Lister les titres de tomes publiés après 2000 et dont l'auteur contient
la lettre "g".
for $x in doc("[Link]")/collection/serie/tome
where $x/annee > 2000 and contains($x/auteure/text(), "g")
order by $x/titre
return $x/titre
85
Comparaisons et Fonctions en XQuery
86
Exemple de requête FLWOR en XQuery
for $to in //tome
let $ti := $to/titre
where $to/@numero > 5
order by $ti descending
return
<album>{$to/@numero}
{$ti}
<serie>{$to/../nom/text()}</serie>
</album>
o for $to in //tome : Sélectionne tous les éléments <tome> dans le document XML. Chaque
élément est assigné à la variable $to.
o let $ti := $to/titre : Crée une nouvelle variable $ti qui contient le titre du tome, extrait avec la
sous-expression $to/titre.
o where $to/@numero > 5 : Applique une condition filtrante : uniquement les tomes dont
l'attribut numero est supérieur à 5 sont considérés.
o order by $ti descending : Trie les tomes par titre ($ti) dans l’ordre décroissant (du Z vers A). 87
Exemple de requête FLWOR en XQuery
for $to in //tome
let $ti := $to/titre
where $to/@numero > 5
order by $ti descending
return
<album>{$to/@numero}
{$ti}
<serie>{$to/../nom/text()}</serie>
</album>
return <album> ... </album> : La clause return génère un nouveau document XML pour chaque
tome. À l'intérieur de la balise <album>, plusieurs valeurs sont insérées :
o {$to/@numero} : Insertion de l'attribut numero du tome.
o {$ti} : Insertion du titre du tome.
o <serie>{$to/../nom/text()}</serie> : Insertion du nom de la série parent du tome, extrait en
remontant dans l'arbre XML via ../ pour accéder à l'élément <serie>.
88
Exemple de requête FLWOR en XQuery
for $to in //tome
let $ti := $to/titre
where $to/@numero > 5
order by $ti descending
return
<album>{$to/@numero}
{$ti}
<serie>{$to/../nom/text()}</serie>
</album>
Le résultat (clause return) mélange des balises XML avec des expressions XQuery pour
construire un nouveau document :
89
Fin du chapitre
90