0% ont trouvé ce document utile (0 vote)
26 vues90 pages

BD XML

Le chapitre 5 traite des bases de données XML dans le cadre des bases de données avancées. Il aborde les données structurées, non structurées et semi-structurées, en détaillant leurs caractéristiques, avantages et inconvénients, ainsi que la gestion et le stockage des données semi-structurées. Le chapitre se termine par une introduction au langage XML, ses règles d'écriture, et la distinction entre éléments et attributs dans un document XML.

Transféré par

mohameddrk05
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
26 vues90 pages

BD XML

Le chapitre 5 traite des bases de données XML dans le cadre des bases de données avancées. Il aborde les données structurées, non structurées et semi-structurées, en détaillant leurs caractéristiques, avantages et inconvénients, ainsi que la gestion et le stockage des données semi-structurées. Le chapitre se termine par une introduction au langage XML, ses règles d'écriture, et la distinction entre éléments et attributs dans un document XML.

Transféré par

mohameddrk05
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Chapitre 5.

Bases de données XML


Unité d’enseignement : Bases de Données Avancées
3éme année Ingénieur Informatique (Semestre 5)
Spécialité : Réseaux
2024-2025

Dr. Mohamed Amine NEMMICH


Département d'Informatique
Université Djillali Liabès de Sidi Bel Abbès
Introduction

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

Description uniforme des entités d'un même groupe :


● Toutes les entités appartenant à une même classe partagent :
o Les mêmes attributs : Chaque entité est décrite par un ensemble de propriétés fixes.
o Les mêmes types d'attributs : Les propriétés suivent un type bien défini (ex. texte, nombre,
date).
o La même taille d'attributs : La taille des valeurs est uniforme (par exemple, une chaîne de
caractères peut être limitée à 50 caractères).
o La présence de tous les attributs : Chaque entité possède toutes les propriétés définies
dans le modèle.
o Un ordre des attributs fixe : Les propriétés apparaissent toujours dans un ordre précis.

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

● Facilité d'interrogation : Grâce à leur organisation, ces données peuvent être


interrogées efficacement avec des langages comme SQL.
● Contrôle d'intégrité : Les schémas assurent que les données respectent des
règles précises (types, tailles, etc.).
● Compatibilité avec les outils de gestion : Les bases de données
relationnelles et leurs systèmes de gestion sont conçus pour traiter ces
donné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

Données de tous types :


● Texte, multimédia, ou autres formats divers.
Absence de schéma ou séquence prédéfinie :
● Ne sont pas organisées selon un schéma spécifique. Il n’y a pas de format de
données standard ni de relation définie entre les éléments.
Absence de règles définies :
● Il n’existe pas de contraintes précises pour décrire ou organiser ces données.
Non-prévisibilité :
● Le contenu et le format des données non structurées peuvent varier
considérablement, ce qui les rend difficiles à analyser ou à traiter sans
techniques spécialisées (comme l'analyse de texte, la reconnaissance
d'images, etc.). 9
Données Semi-Structurées

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

Données Données Données


structurées semi-structurées non structurées

10
Caractéristiques des Données Semi-Structurées

● Organisation en Entités Sémantiques


● Groupes d'Entités Similaires : Les entités similaires forment des groupes,
mais les attributs de ces entités peuvent varier d'un élément à l'autre au sein
du même groupe.
● Attributs Variables : Les entités d'un même groupe peuvent avoir :
o Des attributs ayant des types différents.
o Des valeurs d'attributs de tailles différentes.
o Des attributs manquants ou dupliqués.
o L’ordre des attributs n’est pas essentiel.
● Autodescriptivité des Données Semi-Structurées : ce qui signifie que leur
structure est incluse dans les données elles-mêmes. Cela permet de
comprendre facilement comment les données sont organisées sans avoir
besoin d'un schéma externe. 11
Modèle de Données Semi-Structuré

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

entièrement les données existantes.


Modèle de Données Semi-Structuré

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

Modélisation des Données Semi-Structurées


● Modèle Conceptuel : Graphes (Object Exchange Model - OEM) : Ce modèle
est basé sur des objets et leurs relations, souvent représentées sous forme de
nœuds et de liens dans un graphe.
● Modèle Logique : DTD, XML-Schema : Ces outils permettent de spécifier les
types d'éléments, les attributs, et les relations possibles dans un document
XML, tout en offrant une validation de la structure des données.
● Modèle Physique : XML : Les données sont stockées sous forme de
documents XML qui permet de représenter la hiérarchie et les relations entre
les éléments de données tout en restant flexible et extensible.

14
Gestion des Données Semi-Structurées

Requêtage des Données Semi-Structurées


● Xpath : un langage de requête pour naviguer dans un document XML. Il
permet de sélectionner des éléments ou des attributs spécifiques en fonction
de leur position ou de leur valeur dans l'arbre XML.
● Xquery : un langage de requête conçu pour interroger des documents XML.
Contrairement à XPath, qui se limite à la navigation, XQuery permet d’effectuer
des opérations plus complexes, comme la combinaison de plusieurs
documents ou l’application de fonctions sur les données.

15
Gestion des Données Semi-Structurées

Stockage des Données Semi-Structurées


● Fichiers Plats : comme des fichiers texte ou des fichiers XML, qui conservent
la structure des données tout en restant simples à manipuler.
● Bases de données relationnelles : souvent dans des colonnes de type texte
ou XML.
● Bases de données relationnelles-objets
● Bases de données natives XML : spécifiquement conçues pour stocker des
documents XML et faciliter leur gestion et leur requêtage de manière optimale.

16
Présentation et syntaxe de XML

17
Introduction au langage XML

XML (Extensible Markup Language)


● Un langage utilisé pour structurer des données et des documents sur Internet,
dérivé du SGML (Standard Generalized Markup Language).
● Conçu pour faciliter la définition, la gestion, la création, la transmission et le
partage de documents entre différentes applications.
XML : Un standard du W3C SGML
● 1996 : Première ébauche (brouillon).
● 1997 : Publication officielle de la version XML 1.0.
● 2004 : Introduction de la version améliorée XML 1.1. HTML 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)

● Documents bien formés : Un document XML est considéré comme bien


formé s’il respecte toutes ces règles.
● Exigence minimale : Tout document XML doit être bien formé.
● Documents valides : En plus d’être bien formé, un document XML peut être
valide s’il respecte une structure définie par une DTD (Document Type
Definition) ou un Schéma XML.

23
Les Éléments en XML

● Caractères non autorisés : Certains caractères ne peuvent pas apparaître


directement dans le contenu XML : <, &, et ]]>. Pour les inclure, utilisez des
entités : < devient &lt;, & devient &amp;.
● Éléments emboîtés : peuvent être imbriqués sans limite de profondeur.
Exemple :
<annuaireProfs>
<prof>
<nom>
<nom_famille>Benmhamed</nom_famille>
<prenom>Aymen</prenom>
<prenom>Mohammed</prenom>
</nom>
</prof>
</annuaireProfs>
24
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 ?

● Exemple avec Élément XML :


<prof>
<nom>Karam</nom>
</prof>
● Exemple avec Attribut XML :
<prof nom="Karam" />

27
Contenu d’Élément XML vs. Attributs : Que Choisir ?

4 Principes pour Décider (d’après Uche Ogbuji, Fourthought, Inc.) :


● Contenu Principal :
o Utilisez un élément pour l'information essentielle.
o Utilisez un attribut pour les informations secondaires ou périphériques.
● Information Structurée :
o Utilisez un élément pour des données hiérarchisées ou structurées.
o Utilisez un attribut pour des données atomiques, c'est-à-dire des valeurs
simples et uniques.

28
Contenu d’Élément XML vs. Attributs : Que Choisir ?

4 Principes pour Décider (d’après Uche Ogbuji, Fourthought, Inc.) :


● Lisibilité :
o Un élément est plus adapté à l’affichage et à la lecture par un utilisateur
humain.
o Un attribut est préféré lorsqu'il s'agit de traitement automatique par une
machine ou pour des métadonnées.
● Relation Élément/Attribut :
o Un élément est préférable lorsque l’information est précisée par une autre,
impliquant une relation hiérarchique.
o Un attribut décrit une caractéristique ou une propriété de l'élément sans être
directement hiérarchique.
29
Contenu d’Élément XML vs. Attributs : Que Choisir ?

Exemple de Relation Élément/Attribut :


<stock>
<produit quantité="2000">
<nom>Ordinateur</nom>
</produit>
<produit quantité="350">
<nom>Imprimante</nom>
</produit>
</stock> • <produit> est un élément qui contient des informations
structurées (nom du produit, quantité).
• quantité est un attribut qui décrit une propriété de
l'élément <produit>
30
Un document XML valide (DTD, XML Schéma)

31
Documents XML valides

Documents XML valide


● Document bien formé : le document respecte la syntaxe correcte du XML,
sans erreurs de balises, de structure ou d’encodage.
● DTD (Document Type Definition) : La DTD définit la structure attendue du
document XML, en spécifiant les éléments, leurs relations et attributs.
● Conformité à la DTD : L'élément racine du document doit respecter la
structure définie par la DTD pour être considéré comme valide.

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)

Emboîtement des sous-éléments


● Exemple de structure avec des sous-éléments imbriqués :
<!ELEMENT montagne (nom, hauteur, (pays, région, département))>
Exemple global de DTD
<!ELEMENT annuaireProfs (prof)*>
<!ELEMENT prof (nom, (courriel | tel), cours (titre, heures)+)>
<!ELEMENT nom (#PCDATA)>
<!ELEMENT courriel (#PCDATA)>
<!ELEMENT tel (#PCDATA)>
<!ELEMENT titre (#PCDATA)>
<!ELEMENT heures (#PCDATA)>
38
Spécification d'une DTD (la suite)

Déclaration des attributs d’un élément


Les attributs sont définis de la manière suivante :
<!ATTLIST nom_élément définition_attributs>
Exemple :
<!ATTLIST bureau campus CDATA "UDL de SBA" bâtiment CDATA
#REQUIRED>
Dans cet exemple :
o bureau est l'élément
o campus et bâtiment sont des attributs.

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

Caractéristiques de XML Schema : XML Schema, souvent préféré aux DTD,


surmonte leurs limitations et apporte des avantages significatifs :
● Format XML : Il s'agit d'un document XML, ce qui le rend plus cohérent avec
les documents qu'il valide.
● Typage fort : Il permet de spécifier des types de données précis (par exemple,
chaînes, nombres, dates).
● Modélisation partielle : Il offre une flexibilité pour décrire des structures
complexes ou partielles.
● Usage principalement par des machines : XML Schema est davantage
conçu pour être interprété par des programmes que directement par des
humains.
43
Structure et utilisation d'un document XML Schema (XSD)

Structure d'un schéma XML dans un fichier externe :


● Un fichier XML Schema (extension .xsd) est un document XML qui définit les
règles de structure et de contenu des documents XML associés.
● Structure de base :
<?xml version="1.0" encoding="utf-8" ?>
<!-- Exemple : mon_schemaXML.xsd -->
<xsd:schema xmlns:xsd="[Link]
<!-- Définition des éléments -->
</xsd:schema>

44
Structure et utilisation d'un document XML Schema (XSD)

Référence au schéma dans un document XML :


● Pour associer un fichier XML à son schéma, il faut inclure une référence au
fichier .xsd dans le document XML. Cela se fait via les attributs :
o xmlns:xsi : Spécifie l'espace de noms XML pour les schémas XML Schema.
o xsi:noNamespaceSchemaLocation : Indique le chemin du fichier XSD qui
valide le document.
● Exemple :
<racine xmlns:xsi="[Link]
xsi:noNamespaceSchemaLocation="mon_schemaXML.xsd">
<!-- Contenu du document -->
</racine>
45
Spécification des éléments dans XML Schema

Déclaration d’un élément de type simple :


● Exemple : une chaîne de caractères
<xsd:element name="nom" type="xsd:string" />
Définition du nombre d'occurrences :
● Pour indiquer combien de fois un élément peut apparaître, on utilise les
attributs minOccurs et maxOccurs (maxOccurs >= minOccurs) :
<xsd:element name="cours" type="xsd:string"
minOccurs="1" maxOccurs="unbounded" />
o unbounded signifie illimité

46
Spécification des éléments dans XML Schema

Déclaration d’un élément de type complexe :


● Un élément peut contenir d'autres éléments ou des attributs, ce qui en fait un
type complexe. Sa définition utilise <xsd:complexType> :
<xsd:element name="prof">
<xsd:complexType>
<!-- Spécification des éléments internes ou attributs -->
</xsd:complexType>
</xsd:element>

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

Résumé des options pour les attributs


● name : Nom de l’attribut.
● type : Type de données de l’attribut (par exemple, xsd:string, xsd:date, etc.).
● default : Valeur par défaut si aucune valeur n'est spécifiée dans le document
XML.
● use : Définit si l’attribut est requis ou facultatif :
o optional : Par défaut, l’attribut est facultatif.
o required : L’attribut est obligatoire.
o prohibited : L’attribut ne peut pas être utilisé.

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".

<xsd:attribute ref="bureau" use="required" />


</xsd:complexType>
58
</xsd:element>
Exemple d'un schéma XML : Gestion d'un annuaire de professeurs
Le schéma XML complet :

<?xml version="1.0" encoding="utf-8" ?>


<xsd:schema xmlns:xsd="[Link]

<!-- Élément racine : annuaireProfs -->


<xsd:element name="annuaireProfs">
<xsd:complexType>
<xsd:sequence>
<!-- Référence à l'élément "prof" -->
<xsd:element ref="prof" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>

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

● Inspiration : La syntaxe des chemins XPath rappelle celle des chemins de


fichiers dans les systèmes Unix.
● Versions disponibles :
o Une version compacte : facile à utiliser mais avec des fonctionnalités limitées.
o Une version complète : plus détaillée et flexible, mais également plus verbeuse.

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

Axes en avant (navigation vers les descendants et suivants) : Ces axes


descendent ou progressent dans l’arbre XML :
● attribute : Sélectionne les attributs du nœud courant.
● child : Sélectionne les enfants immédiats du nœud courant.
● descendant : Sélectionne tous les descendants (enfants, petits-enfants, etc.)
du nœud courant.
● descendant-or-self : Sélectionne les descendants et inclut le nœud courant.
● following : Sélectionne tous les nœuds qui suivent le nœud courant dans le
document, à l’exclusion des descendants.
● following-sibling : Sélectionne tous les nœuds frères qui suivent le nœud
courant.
● self : Sélectionne uniquement le nœud courant.
71
Axes XPath : Navigation dans l'arbre XML

Exemples d'utilisation des axes : <?xml version="1.0" encoding="utf-8"?>


● ancestor : <collection>
<bd id="1">
Expression : bd/ancestor::collection
<auteur>Fmurrr</auteur>
Résultat : Sélectionne <collection>. <titre>Sabotage et pâturage</titre>
● descendant : <annee>1995</annee>
</bd>
Expression : /collection/descendant::titre </collection>
Résultat : Sélectionne <titre>.
● preceding-sibling :
Expression : auteur/preceding-sibling::titre
Résultat : Sélectionne <titre>.
● self :
Expression : /collection/self::collection 72

Résultat : Sélectionne <collection> (le nœud lui-même).


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.
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

Abrév Équivalent Exemple


iation complet
Parent du nœud .. parent::node() /collection/bd/titre/.. Sélectionne le nœud <bd>
courant parent du nœud <titre>
Le nœud courant . self::node() ./titre Sélectionne le nœud <titre> enfant du
lui-même nœud courant.
Tous les // descendant-or- //titre Sélectionne tous les nœuds <titre> dans
descendants, y self::node()/ le document, peu importe leur position.
compris le nœud
courant
Enfant d’un type balise child::balise /collection/bd Sélectionne les nœuds <bd>
donné enfants directs du nœud <collection>.
Attribut d’un nœud @att attribute::att /collection/bd/@id l’attribut id des nœuds <bd>.
Position d’un nœud [X] [fn:position() = X] /collection/bd[1] Sélectionne le premier nœud
76
dans une liste <bd> dans <collection>.
Exemples d'expressions XPath

Tous les titres de tome (contenu texte uniquement) :


//titre/text()
● Sélectionne uniquement le contenu texte
des balises <titre> situées n'importe
où dans le document.
Les tomes qui possèdent un genre :
//tome[genre]
● Sélectionne tous les nœuds <tome>
qui contiennent un sous-nœud <genre>

77
Exemples d'expressions XPath

Le nom des séries contenant un tome numéro 13 :


//serie[tome/@numero = 13]/nom
● Sélectionne les nœuds <nom> des séries qui contiennent un tome ayant un
attribut numero égal à 13.
Les tomes avec un genre et un numéro supérieur ou égal à 1 :
//tome[genre and @numero >= 1]
● Sélectionne tous les nœuds <tome> qui possèdent un sous-nœud <genre> et
un attribut numero dont la valeur est supérieure ou égale à 1.
Le titre des tomes avec un numéro inférieur ou égal à 12 :
//tome[@numero <= 12]/titre
● Sélectionne les nœuds <titre> des tomes dont l'attribut numero est inférieur ou
égal à 12. 78
Fonctions XPath

● fn:round(num) : Arrondit un nombre (num) à l'entier le plus proche.


● fn:position() : Renvoie la position d’un nœud dans l’ordre de sélection.
● fn:not(expr) : Retourne vrai si l’expression (expr) est fausse.
● fn:contains(foin, aiguille) : Évalue à vrai si la chaîne foin contient la chaîne
aiguille.
● fn:count(elem, elem, …) : Retourne le nombre de nœuds spécifiés.
● …

79
Exemples d'utilisation des fonctions XPath

Nombre total de séries dans la collection :


/collection/fn:count(node()) ou fn:count(//serie)
o fn:count : Permet de compter le nombre de nœuds dans un document XML ou dans un
chemin spécifique.
Sélection des tomes en deuxième position :
//tome[2]
Séries dont un nœud textuel commence par "T" :
//serie[descendant::node()[fn:starts-with(child::text(), "T")]]
o fn:starts-with : Vérifie si une chaîne de caractères commence par une valeur donnée (ici,
"T").
Séries où aucun nœud textuel ne commence par "T" :
//serie[fn:not(descendant::node()[fn:starts-with(child::text(), "T")])]
o fn:not : Filtre les éléments qui ne respectent pas la condition (absence de nœud textuel 80

débutant par "T").


Interrogation de document XML
Manipulation avec XQuery

81
Généralités sur Xquery (XML Query)

● Un langage conçu pour manipuler et interroger des documents XML


(couramment utilisé par les SGBD XML).
● Permet de générer ou reconstruire des fragments de documents XML à partir
de données existantes.
● Norme établie par le W3C, et reposant sur le langage XPath.
● S’appuie sur des requêtes structurées autour de plusieurs clauses FLWOR
(For, Let, Where, Order by, Return).

82
Structure et Syntaxe des Requêtes FLWOR

for $var in chemin_xpath ou intervalle


let $var1 := val1, …, $varn := valn
where condition
order by expression
return expression_xquery
● for : Parcourt une séquence de nœuds XML ou une plage de valeurs, chaque élément étant
assigné à la variable $var.
● let : Associe une séquence ou une valeur à une variable, sans créer de boucle ou d’itération.
● where : Applique un filtre sur les nœuds sélectionnés en combinant des conditions avec des
opérateurs comme and ou or.
● order by : Trie les résultats en ordre croissant (ascending) ou décroissant (descending).
● return : Produit un résultat par nœud sélectionné. C'est la seule clause obligatoire.

83
Comparaisons et Fonctions en XQuery

● Opérateurs multiples pour les comparaisons :


● =, !=, <, <=, >, >= : Vérifient si au moins une correspondance existe entre
deux séquences.
● eq, ne, lt, le, gt, ge : Vérifient exactement une correspondance entre deux
valeurs uniques.
● Utilisation de conditions : Une condition if - then - else peut être insérée
dans la clause return pour personnaliser les résultats.
● Fonctions disponibles : XQuery prend en charge les fonctions standards de
XPath, comme : fn:round(), fn:contains(), fn:substring(), …

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

● Explications des étapes :


o doc("[Link]") : Charge le document XML nommé [Link].
o /collection/serie/tome : Parcourt les nœuds des tomes dans l’arbre XML.
o where : Applique les conditions suivantes : L'année doit être supérieure à 2000 ET Le nom de
l'auteur doit contenir la lettre "g".
o order by : Trie les titres des tomes par ordre alphabétique.
o return : Retourne les titres des tomes correspondant aux conditions.

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

Vous aimerez peut-être aussi