Vous êtes sur la page 1sur 46

Données semi-structurées

II. Introduction au langage XML

Pour les étudiants en Licence 3 Informatique SI


Enseignante : S. Zebboudj
Réalisé en collaboration avec S. Bouchelaghem

2021/2022
Qu’est-ce que XML ?
XML ou eXtensible Markup Language est un langage informatique de balisage générique.

Langage informatique décrire et structurer un


ensemble de données
selon un jeu de règles et
des contraintes définies.

Langage de Langage de
Langage de requête
programmation description
(SQL, XQuery, …)
(C, Java, C++, ...) (HTML, XML, …)

XML est un langage qui permet de décrire des données à l'aide de balises et de règles que l'on peut
personnaliser. Ces balises permettent de structurer de manière hiérarchisée et organisée ces données.

2
Comment est né XML ?
● Au début, il y avait SGML (Standard Generalized Markup Langage):
○ Standard pour définir des langages de balisage pour la représentation de documents
électroniques (métalangage).
○ Une DTD (Document Type Definition) spécifie les règles sur un ensemble de balises pour
définir un langage.
○ L’idée est de pouvoir décrire la structure d’un document et de ses éléments sans donner
des spécification sur la présentation (peu importe son extension – html, docx, txt, pdf,
etc.–).
○ Complexe et ambigu (une balise ouvrante n’est pas forcément suivie d’une balise
fermante).

3
Comment est né XML ? (suite)
● Ensuite, il y a eu HTML (HyperText Markup Language), entre autres.
○ Une application de SGML pour décrire des documents pour le Web (pages Web).
○ Trop de balises qui décrivent plutôt la présentation (<b>, <blink>, <i>) que la structure
(<body>, <title>, <acronym>).
○ CSS (Cascading Style Sheet) pour décrire la présentation du contenu d’un document HTML
et laisser HTML ne décrire que la structure et le sens des éléments.
○ Trop de balises qui décrivent la présentation quand même.
○ Erreurs de syntaxe HTML sont très souvent ignorées par les navigateurs Web.
○ Difficile pour une application (Ex. moteurs de recherche) d’analyser (parser) un contenu
HTML erroné.

4
Comment est né XML ? (suite)
● XML (eXtensible Markup Language)
○ Version simplifiée de SGML
○ XML adopte des conventions qui le rendent le document plus facile à parser (Ex. balise
ouvrante => balise fermante)
○ Extensible, car les balises ne sont pas prédéfinies comme c’est le cas en HTML.

5
Objectifs du langage XML

● Faciliter les échanges de données entre les machines ;


● Décrire les données de manière aussi bien compréhensible par les hommes qui écrivent les
documents XML que par les machines qui les exploitent ;
● Le XML se veut également compatible avec le web afin que les échanges de données puissent se
faire facilement à travers le réseau Internet.

6
Langages apparentés
Plusieurs technologies et langages se sont développés autour de XML :

● XLink et XPointer : établir des liens entre les documents ou des fragments de documents XML
● XPath : pour sélectionner des éléments du document XML
● XQuery : s’apparente à SQL mais pour XML
● Schéma XSD : pour valider des documents XML
● XSLT : feuille de style pour transformer des documents XML

7
Où trouver XML ?
● Documents Microsoft Office Word (.docx)

8
Où trouver XML ?
● Keyhole Markup Language (KML) pour la géolocalisation : https://developers.google.com/kml

9
Où trouver XML ?
● Really Simple Syndication (RSS) et Atom Syndication Format

10
Principe de base
Un document XML contient du texte organisé sous forme de balises.
Balises
Une balise porte un nom qui est entouré de chevrons; elle commence par un < et se termine par un >.

Exemple 1 : <titre> définit une balise nommée “titre”

On distingue deux (02) types de balises : les balises par paires et les balises uniques.
1. Balises par paires : elles sont composées d’une balise ouvrante et d’une balise fermante.

Exemple 2 : <balise> </balise>

11
Principe de base (suite)
Une balise par paires peut contenir une valeur simple : chaîne de caractères, nombre entier, réel, etc.
Exemple 3 : <balise1>Hello World !</balise1>
<balise2>12.5</balise2>

Une balise par paires peut contenir une autre balise. On parle alors d’arborescence.
Exemple 4 : <balise1>
<balise2>Hello World !</balise2>
</balise1>
Une balise par paires peut également contenir un mélange de valeurs simples et de balises.

12
Principe de base (suite)
2. Balises uniques : ce sont des balises par paires, qui n’ont pas de contenu.
Elles désignent donc des éléments vides.
Exemple 5 : <balise/>

Quelques règles de nommage des balises


● Les noms peuvent contenir des lettres, des chiffres ou les caractères spéciaux (_), (-), (.)
● Les noms ne doivent renfermer aucun espace, et ne peuvent commencer par un tiret, un point ou
un chiffre
● Le signe de ponctuation deux-points (:) est autorisé mais est réservé pour les espaces de noms
● Les noms qui commencent par les lettres xml (quelle que soit la casse) sont réservés et ne
doivent pas être utilisés.
13
Structure d’un document XML
Un document XML peut être découpé en deux (02) parties : le prologue et le corps du document.
1. Prologue : il correspond à la première ligne du document, appelée en-tête XML, et sert à donner
les caractéristiques globales du document.

Syntaxe : <?xml version=”...” encoding=”...” standalone=”...” ?>

● La version XML, soit 1.0 ou 1.1.


● Le jeu de caractères employé (encoding). Par défaut, c’est le standard UTF-8 qui est employé.
● Le champ standalone indique si le document XML est autonome ou si un autre document lui est
rattaché. Sa valeur par défaut est “no”.

14
Structure d’un document XML (suite)
2. Corps du document : il est constitué de l'ensemble des éléments qui décrivent les données.
Un élément unique, désigné comme l’élément racine, contient tous les autres éléments.
Éléments
Un élément est habituellement formé d’une balise ouvrante, d’un contenu et d’une balise fermante.
Le contenu de l’élément peut être constitué de :
● Données caractères : ce sont du texte correspondant au contenu informatif de l’élément.

Exemple 1 : <titre>XML : guide de l’administrateur</titre>

15
Structure d’un document XML (suite)
● Éléments emboîtés : des éléments sont correctement emboîtés si un élément débutant à
l’intérieur d’un autre élément se termine aussi à l’intérieur du même élément.
Exemple 2 :
<livre>
<titre>XML : guide de l’administrateur</titre>
<auteur>William Stanek</auteur>
<pages>388</pages>
<prix>22.71</prix>
</livre>

<livre><titre>XML : guide de l’administrateur</livre></titre>


16
Structure d’un document XML (suite)
● Références d’entités générales : une entité peut être perçue comme un raccourci vers une
autre valeur. On peut définir comme entité un bloc de texte fréquemment utilisé, ce qui
permet de l’insérer rapidement, là où on le souhaite.
Exemple 3 :
<pagetitre>
Auteur : &auteur;
Titre : XML. Guide de l’administrateur
</pagetitre>

Le parseur XML va remplacer la référence d’entité &auteur; par le contenu de l’entité et


traiter ce contenu comme s’il avait été saisi dans le document à la position de la référence.
17
Structure d’un document XML (suite)
Déclaration d’une entité
Les références d’entités sont définies à l’aide d’une déclaration ENTITY dans une DTD.
Cette déclaration spécifie le nom de l’entité et la chaîne de caractères associée entre guillemets.

Exemple 4 : <?xml version=”1.0”?>


<!DOCTYPE racine [
...
<!ENTITY auteur “William Stanek”>
...
]>
Après avoir effectué cette déclaration, on peut se servir de cette entité n’importe où dans le document
pour éviter de recopier la valeur correspondante.
18
Structure d’un document XML (suite)
● Références de caractères : elles permettent d’insérer un caractère qui n’est pas sur le
clavier ou un caractère qu’il serait illégal d’insérer littéralement dans le contexte courant.
Exemple 5 :
<pagetitre>
Auteur : John Doe
Nom de document : Comment insérer le caractère &#228;
</pagetitre>
La référence de caractère &#228; est utilisée pour insérer le caractère ä.
On peut spécifier la valeur du caractère soit en décimal soit en hexadécimal.

19
Structure d’un document XML (suite)
● Références d’entités prédéfinies
On peut également utiliser une référence à une entité prédéfinie pour insérer l’un des
cinq (05) caractères suivants dans un document XML.

Référence d’entité prédéfinie Caractère inséré Référence de caractère équivalente

&amp; & &#38;

&lt; < &#60;

&gt; > &#62;

&apos; ‘ &#39;

&quot; “ &#34;

20
Structure d’un document XML (suite)

● Sections CDATA : lorsqu’on ajoute du texte à un élément, on peut insérer n’importe quel
caractère excepté les caractères <, & ou la chaîne ]]>.
Le parseur XML interpréterait < comme le début d’un élément emboîté, & comme le
début d’une entité ou d’une référence de caractères, et ]]> comme la fin d’une section
CDATA.
Une section CDATA est un bloc de texte dans lequel on peut insérer librement n’importe
quel caractère excepté la chaîne ]]>.

21
Structure d’un document XML (suite)
Exemple 6 :
<page>
Voici un exemple de page HTML très simple :
< ! [CDATA[
<HTML>
<HEAD>
<TITLE> Données semi-structurées </TITLE>
</HEAD>
<BODY>
<P> Insertion de sections CDATA </P>
</BODY>
</HTML>
]]>
</page>
22
Structure d’un document XML (suite)
Attributs
Un attribut est une paire (nom, valeur) associée à la définition d’un élément.
Il ajoute une information sur le contenu de l’élément.
Il peut être inséré dans le marqueur d’ouverture d’un élément ou dans un marqueur d’élément vide.
Exemple 7 : <prix devise=”euro”> 22.71 </prix>
Quelques règles :
● Les règles de nommage sont les mêmes que pour les balises.
● La valeur d'un attribut doit être délimitée par des guillemets simples ou doubles.
● La valeur d’un attribut ne peut contenir le caractère < ou &.
● Un attribut étant unique, il ne peut apparaître qu'une seule fois dans la même balise.
23
Structure d’un document XML (suite)
Commentaire
Un commentaire est une annotation dans le document XML que le programmeur peut lire mais que le
parseur XML ignore.

Exemple 8 : <!-- Ceci est un commentaire -->

Instructions de traitement
Elles servent à donner des informations à l’application qui utilise le document XML et peuvent être
placées à n’importe quel endroit du document, après le prologue.

Exemple 9 : <?xml−stylesheet type="text/xsl" href="affichage.xsl"?>


24
Exemple d’un document XML
<?xml version="1.0" encoding="UTF−8"?>
<!-- Date de création : 30/04/2021 -->
<cours> Un document XML bien formé
<titre>Données semi−structurées</titre> est un document conforme aux
<enseignant nom=”Bouchelaghem” prenom=”Siham”/> règles syntaxiques décrites tout
<enseignant nom=”Zebboudj” prenom=”Sofia”/> au long de cette première partie
de cours.
<plan>
Introduction
<chapitre>Structure d’un document XML</chapitre>
Syntaxe et règles de nommage
</plan>
</cours>
25
En résumé
● Un document XML doit posséder exactement un seul élément racine.
● Chaque balise d’ouverture doit être accompagnée d’une balise de fermeture correspondante.
● Les éléments doivent être correctement emboîtés.
● Le nom de l’élément placé dans la balise d’ouverture doit correspondre très exactement au nom
placé dans la balise de fermeture.
● XML est sensible à la casse ; il fait la distinction entre les majuscules et les minuscules.
● Les noms des attributs à l’intérieur d’un même élément doivent être uniques.
● Les caractères bruts < et & ne doivent pas apparaître dans le contenu d’un élément ou dans la
valeur d’un attribut.
26
Exercice 1
<?xml version="1.0"?>
<!-- ceci est une note -->
<note date=3 janvier>
<to>Bob</To> Questions :
<from>Alice</from>
Observez le document XML ci-contre.
<heading>Rappel</heading>
<body>Prépare toi aux examens !</body> 1. Ce document est-il bien formé ?
</note>
2. S’il ne l’est pas, corrigez les erreurs identifiées.
<note date="5 janvier" <!-- ceci est une note --> >
<to>Alice</to>
<from>Bob
<body>Merci de me l’avoir rappelé</body>
</note>
<note/>
27
Solution
<?xml version="1.0"?>
<!-- ceci est une note -->
<document>
<note date=”3 janvier”>
<to>Bob</to>
<from>Alice</from>
<heading>Rappel</heading>
<body>Prépare toi aux examens !</body>
</note>
<note date="5 janvier">
<!-- ceci est une note -->
<to>Alice</to>
<from>Bob</from>
<body>Merci de me l’avoir rappelé</body>
</note>
</document>
28
Exercice 2
Enoncé :
On souhaite écrire un livre en utilisant le formalisme XML.
Le livre est structuré en sections, en chapitres et en paragraphes.
Le livre doit contenir la liste des auteurs (avec nom et prénom).
Tous les éléments doivent posséder un titre, sauf le paragraphe qui contient du texte.
Question :
Proposez une structuration XML du document livre1.xml.
Considérez un livre avec 2 auteurs, 2 sections, 2 chapitres par section et 2 paragraphes par chapitre.

29
Solution (1)
<?xml version="1.0" encoding="UTF-8"?>
<livre titre="XML étape par étape">
<auteurs>
<auteur nom="Young" prenom="Michael"/>
<auteur nom="Smith" prenom="John"/>
</auteurs>
<sections>
<section titre="Section 1">
<chapitre titre="Chapitre 1">
<paragraphe>Premier paragraphe</paragraphe>
<paragraphe>Deuxième paragraphe</paragraphe>
</chapitre>
<chapitre titre="Chapitre 2">
<paragraphe>Premier paragraphe</paragraphe>
<paragraphe>Deuxième paragraphe</paragraphe>
</chapitre>
</section> 30
Solution (2)
<section titre="Section 2">
<chapitre titre="Chapitre 1">
<paragraphe>Premier paragraphe</paragraphe>
<paragraphe>Deuxième paragraphe</paragraphe>
</chapitre>
<chapitre titre="Chapitre 2">
<paragraphe>Premier paragraphe</paragraphe>
<paragraphe>Deuxième paragraphe</paragraphe>
</chapitre>
</section>
</sections>
</livre>

31
Exercice 3
On se propose de créer un nouveau document livre2.xml reprenant l’exercice précédent.
Placez dans deux paragraphes un bloc de texte contenant l’extrait suivant :
<element id="10">&gt;</element>
Pour le premier paragraphe, employez les entités prédéfinies.
Pour le deuxième paragraphe, employez une section CDATA.

32
Solution
<?xml version="1.0" encoding="UTF-8"?>
<livre titre="XML étape par étape">
...
<chapitre titre="Chapitre1">
<paragraphe> &lt;element id="10"&gt; &amp;gt; &lt;/element&gt; </paragraphe>
<paragraphe>
<![CDATA[
<element id="10">&gt;</element>
]]>
</paragraphe>
</chapitre>
...
</livre>
33
Exercice 4
Proposez une structuration XML pour représenter l'agenda électronique suivant :
Dans l'agenda de M. Jack, il y a son nom, son numéro de téléphone (0965 29 07), des dates d'anniversaire, des rendez-vous et des
notes.
Sa femme, Sally, est née un 23 Mars, son fils Charles est né un 15 Juillet et son ami David est né un 26 Décembre. Sa mémoire
n'étant pas très fiable, il a dû faire des rappels une semaine à l'avance pour chaque anniversaire et noter les idées de cadeaux
qu'il comptait leur offrir. Son anniversaire à lui est prévu le 19 Octobre, mais il n'a pas jugé nécessaire d'ajouter un rappel dans
son agenda.
Il a prévu une partie de pétanque avec ses amis le 15 Juin à 10h30. Il doit ensuite retrouver sa femme et son fils pour déjeuner
vers 13h00 et rendre visite à David vers 16h00 au café du quartier. Le 20 Juin, il a rendez-vous chez son médecin à 10h00.
Dans son agenda, il a aussi noté une liste de courses (lait, farine et 5 oeufs) ainsi que le titre d'un livre (100 ans de solitude), qu'il
voulait lire plus tard.

34
Espaces de noms
Les espaces de noms servent à éviter les conflits de noms d'éléments et d’attributs intervenant dans
différentes structures de données d’un même document ou lors de l’intégration de documents XML à
partir de différentes applications.

Exemple 1 :
<employe>
<livre>
<nom>Doe</nom>
<titre>XML: Guide de l’admin</titre>
<prenom>John</prenom>
<auteur>William Stanek</titre>
<titre>Administrateur réseau</titre>
<pages>388</pages>
<age>35</age>
</livre>
</employe>

35
Déclaration d’un espace de noms
Les conflits de nom dans XML peuvent facilement être évités en utilisant un préfixe de nom.
La déclaration d’un espace de noms s’effectue alors en ajoutant le préfixe approprié aux éléments
et aux attributs. On parle ainsi de noms qualifiés.

Syntaxe : prefixe_espace_de_noms:partie_locale

où prefixe_espace_de_noms : correspond au préfixe de l’espace de noms;


partie_locale : correspond au nom de l’élément ou de l’attribut à modifier.

Exemple 2 : <book:titre>XML étape par étape</book:titre>

Le préfixe d’un espace de noms doit être ajouté uniformément (aux deux balises).
36
Associer des URI à des espaces de noms
Chaque espace de noms déclaré dans un document doit être associé à un URI.
Un URI (Uniform Resource Identifier) est une chaîne de caractères qui identifie une ressource Internet.
L'URI le plus courant est l'URL qui identifie une adresse de domaine Internet.
On associe un URI à un espace de noms en définissant l’attribut xmlns.

Syntaxe : <prefixe:element xmlns:prefixe=”URI”> … </prefixe:element>

Exemple 3 : <book:titre xmlns:book=”http://recherche.univ-bejaia.dz/books”>


XML étape par étape
</book:titre>
L'URI de l'espace de noms n'est pas utilisé par le parseur pour rechercher des informations.
Le but de l'utilisation d'un URI est de donner à l'espace de noms un nom unique.
37
Associer des URI à des espaces de noms (suite)
Lorsqu'un espace de noms est défini pour un élément, tous les éléments enfants avec le même
préfixe sont associés au même espace de noms.

Exemple 4 :
<book:livre xmlns:book=”http://recherche.univ-bejaia.dz/books”>
<book:titre>XML étape par étape</book:titre>
<book:auteur>Michael Young</book:auteur>
<book:pages>388</book:pages>
</book:livre>
<staff:employe xmlns:staff=”http://www.univ-bejaia.dz/staff”>
<staff:nom>John Doe</staff:nom>
<staff:titre>Administrateur réseau</staff:titre>
</staff:employe>
38
Associer des URI à des espaces de noms (suite)
Exemple 5 :
<document xmlns:book=”http://recherche.univ-bejaia.dz/books”
xmlns:staff=”http://www.univ-bejaia.dz/staff”>
<book:livre>
<book:titre>XML étape par étape</book:titre>
<book:auteur>Michael Young</book:auteur>
<book:pages>388</book:pages>
</book:livre>
<staff:employe>
<staff:nom>John Doe</staff:nom>
<staff:titre>Administrateur réseau</staff:titre>
</staff:employe>
</document>
39
Application d’un espace de noms sur un attribut
Les espaces de noms peuvent s’appliquer via un préfixe sur un attribut ou une valeur d’attribut.

Exemple 6 :
<livre>
<titre>XML : guide de l’administrateur</titre>
<auteur>William Stanek</auteur>
<format xmlns:p=”http://www.print.com” xmlns:l=”http://www.read.com” p:pages=”388” l:pages=“200”>
<papier type=”p:A4”/>
</format>
</livre>

Ceci peut servir à contourner la règle qui veut que l’on ne puisse pas avoir plusieurs fois un attribut
de même nom sur une déclaration d’élément.
40
Espaces de noms par défaut
La définition d'un espace de noms par défaut pour un élément nous évite d'utiliser des préfixes dans
tous les éléments enfants. Il suffit alors de définir un attribut xmlns sans aucun préfixe.

Exemple 7 :
<livre xmlns=”http://www.recherche.univ-bejaia.dz/books”>
<titre>XML : guide de l’administrateur</titre>
<auteur>William Stanek</auteur>
<pages>388</pages>
</livre>

L’élément livre déclare un espace de noms par défaut associé à l’URI http://www.recherche.univ-bejaia.dz/books.
Les éléments titre, auteur et pages se trouvent automatiquement dans l’espace de noms par défaut.
41
Quelques espaces de noms classiques
● XML L'espace de noms identifié par l’URI “http://www.w3.org/XML/1998/namespace” définit
l’espace de noms XML.
● XLink L'espace de noms identifié par l’URI “http://www.w3.org/1999/xlink” permet de créer
des hyperliens dans des documents XML.
● XHTML L'espace de noms "http://www.w3.org/1999/xhtml" identifie des éléments XHTML.
● XSLT L'espace de noms identifié par l’URI "http://www.w3.org/1999/XSL/Transform" permet
de décrire des éléments XSLT.
● XML Schemas L'espace de noms “http://www.w3.org/2001/XMLSchema” permet de décrire
des schémas XML.
42
Exercice 4

Créez un document livre3.xml sur la base de livre1.xml en respectant les points suivants :
● Mettez tous les éléments dans l’espace de noms http://www.books.com sans utiliser d’espace de
noms par défaut.
● Mettez la deuxième section dans un espace de noms http://www.imprimeur.com.
● Mettez le dernier paragraphe du dernier chapitre de la dernière section sans espace de noms.

43
Solution (1)
<p1:livre titre="XML étape par étape" xmlns:p1="http://www.books.com" xmlns:p2="http://www.imprimeur.com">
<p1:auteurs>
<p1:auteur nom="Young" prenom="Michael"/>
<p1:auteur nom="Smith" prenom="John"/>
</p1:auteurs>
<p1:sections>
<p1:section titre="Section 1">
<p1:chapitre titre="Chapitre 1">
<p1:paragraphe>Premier paragraphe</p1:paragraphe>
<p1:paragraphe>Deuxième paragraphe</p1:paragraphe>
</p1:chapitre>
<p1:chapitre titre="Chapitre 2">
<p1:paragraphe>Premier paragraphe</p1:paragraphe>
<p1:paragraphe>Deuxième paragraphe</p1:paragraphe>
</p1:chapitre>
</p1:section>
44
Solution (2)
<p2:section titre="Section 2">
<p2:chapitre titre="Chapitre 1">
<p2:paragraphe>Premier paragraphe</p2:paragraphe>
<p2:paragraphe>Deuxième paragraphe</p2:paragraphe>
</p2:chapitre>
<p2:chapitre titre="Chapitre 2">
<p2:paragraphe>Premier paragraphe</p2:paragraphe>
<paragraphe>Deuxième paragraphe</paragraphe>
</p2:chapitre>
</p2:section>
</p1:sections>
</p1:livre>

45
Références

● M. J. Young, XML étape par étape. Éditions Microsoft Press, 2001.


● W. R. Stanek, XML: Guide de l’Administrateur. Éditions Microsoft Press, 2002.
● A. Brillant, XML: Cours et exercices. Éditions Eyrolles, 2007.
● O. Carton, L’essentiel de XML. Cours XML, Université Paris Diderot, 2015.
● G. Merzougui, Les bases de XML. Cours Données semi-structurées, Université de Batna, 2021.
● G. Merzougui, XML et DTD. Cours Données semi-structurées, Université de Batna, 2021.

46

Vous aimerez peut-être aussi