Beruflich Dokumente
Kultur Dokumente
Présentation
XML est un langage de balisage générique qui permet de structurer des
données afin qu'elles soient lisibles aussi bien par les humains que par des
programmes de toute sorte. Il est souvent utilisé pour faire des échanges de
données entre un programme et un serveur ou entre plusieurs programmes.
Exemple:
Une application demande à un serveur web les dernières informations dont il
dispose. Après être allé les chercher, ce dernier doit les communiquer. C'est là
qu'intervient le XML. Le serveur web se sert du XML pour structurer les
informations qu'il doit renvoyer à l'application téléphonique. Lorsque cette
dernière reçoit les informations ainsi structurées, elle sait comment les lire et
les exploiter rapidement !
Maurice AHOUMENOU 2
Les bases du XML
Le XML ou eXtensible Markup Language est un langage informatique
de balisage générique.
En informatique il y a plusieurs centaines de langages, qui peuvent être
regroupé en trois catégories:
• langages de programmation.
C, le Java, C++, Objective-C, C#, PHP, Basic, Python, etc
•langages de requête.
SQL, Xquery, etc
•langages de description.
SGML, XML ou HTML
•De 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.
•XML se veut également compatible avec le web afin que les échanges de
données puissent se faire facilement à travers le réseau Internet.
Le XML se veut donc standardisé, simple, mais surtout extensible et
configurable afin que n'importe quel type de données puisse être décrit.
Maurice AHOUMENOU 4
Les outils
Notepad++, Editix, oXygen
Maurice AHOUMENOU 6
Structure d’un document XML
Un document XML peut être découpé en 2 parties : le prologue et le
corps.
Le prologue est la première ligne du document
Exemple: <?xml version = "1.0" encoding="UTF-8" standalone="yes" ?>
Le corps d'un document XML est constitué de l'ensemble des balises qui
décrivent les données.
Dans la constitution du document, il faut retenir qu’il y a une balise paire
qui doit contenir tout le reste, on l’appelle élément racine
Exemple: <racine>
<balise_paire>texte</balise_paire>
<balise_paire2>texte</balise_paire2>
<balise_paire>texte</balise_paire>
</racine>
Maurice AHOUMENOU 7
Exemple de description d’un répertoire téléphonique
<repertoire>
<personne>Bernard</personne>
<personne>Patrick</personne>
</repertoire>
Pour qu’un document XML soit bien formé, il faut qu’il respecte les
règles ci-dessous:
•S'il s'agit d'un document utilisant la version 1.1 du XML, le prologue
doit être bien renseigné.
•Le document XML ne possède qu'une seule balise racine.
•Le nom des balises et des attributs est conforme aux règles de
nommage.
•Toutes les balises en paires sont correctement fermées.
Maurice AHOUMENOU 8
• Toutes les valeurs des attributs sont entre guillemets simples ou doubles.
Les balises de votre document XML ne se chevauchent pas, il existe une
arborescence dans votre document.
Maurice AHOUMENOU 9
TP1: Structuration d’un répertoire téléphonique
Le but de ce TP est de créer un document XML structurant les données d'un
répertoire.
Votre répertoire doit comprendre au moins 2 personnes. Pour chaque
personne, on souhaite connaître les informations suivantes
Son sexe (homme ou femme).
Son nom.
Son prénom.
Son adresse.
Un ou plusieurs numéros de téléphone (téléphone
portable, fixe, bureau, etc.).
Une ou plusieurs adresses e-mail (adresse personnelle,
professionnelle, etc.).
Maurice AHOUMENOU 10
Introduction aux définitions
Une définition d'un document XML est un ensemble de règles que l'on
impose au document. Ces règles permettent de décrire la façon dont le
document XML doit être construit. Elles peuvent être de natures
différentes. Par exemple, ces règles peuvent imposer la présence d'un
attribut ou d'une balise, imposer l'ordre d'apparition des balises dans le
document ou encore, imposer le type d'une donnée (nombre entier, chaîne
de caractères, etc.).
Maurice AHOUMENOU 11
DTD «Document Type Definition »
Où écrire les DTD?
Fichiers internes (dans le fichier XML) ou externes dont l’extension est .dtd
Les Syntaxes de défintion des éléments:
Pour définir les règles portant sur les balises, on utilise le mot clef
ELEMENT.
Syntaxe: <!ELEMENT balise (contenu)>
Maurice AHOUMENOU 12
Cas d’une règle qui définit l’inclusion de balise
<!ELEMENT personne (nom)> //ce document n’est pas valide car nous
n’avons pas définit une règle pour la balise nom
Exemple:
<personne>
<nom>Maurice AHOUMENOU</nom>
</personne>
Maurice AHOUMENOU 13
Cas d'une balise vide:
On utilise le mot clef EMPTY
Exemple XML:
<personne>
<nom />
</personne>
Exemple XML:
<personne>
<nom>Maurice AHOUMENOU</nom>
</personne>
Maurice AHOUMENOU 14
Structurer le contenu des balises
Maurice AHOUMENOU 15
La liste de choix
Exemple XML:
<!-- valide -->
<personne>
<nom>Maurice</nom>
</personne>
Maurice AHOUMENOU 16
La balise optionnelle permet d’indiquer qu'une balise est optionnelle, on
fait suivre son nom par un point d’interrogation
Syntaxe: <!ELEMENT balise (balise2, balise3?, balise4)>
Exemple DTD:
<!ELEMENT personne (nom, prenom?)>
<!ELEMENT nom (#PCDATA)>
<!ELEMENT prenom (#PCDATA)>
Exemple document XML:
<personne>
<nom>AHOUMENOU</nom>
</personne>
Maurice AHOUMENOU 17
La balise répétée optionnelle Une balise peut être répétée plusieurs fois
même si elle est optionnelle. Pour indiquer une telle balise, on fait suivre son
nom par une étoile.
Maurice AHOUMENOU 18
Exemple XML:
<!-- valide --> <!-- invalide -->
<repertoire> <!-- il manque la balise prenom dans la
<personne> seconde balise personne-->
<nom>AHOUMENOU</nom> <repertoire>
<prenom>Maurice</prenom> <personne>
</personne> <nom>AHOUMENOU</nom>
<personne> <prenom>Maurice</prenom>
<nom>KIKI</nom> </personne>
<prenom>Steeve</prenom> <personne>
</personne> <nom>KIKI</nom>
</repertoire> </personne>
</repertoire>
La balise répétée Une balise peut être répétée plusieurs fois. Pour
indiquer une telle balise, on fait suivre son nom par un plus
Maurice AHOUMENOU 19
Syntaxe: <!ELEMENT balise (balise2, balise3+, balise4)>
Code DTD:
<!ELEMENT repertoire (personne+)>
<!ELEMENT personne (nom, prenom)>
<!ELEMENT nom (#PCDATA)>
<!ELEMENT prenom (#PCDATA)>
Exemple XML:
Maurice AHOUMENOU 21
DTD : les attributs et les entités
Les attributs: Pour indiquer que notre règle porte sur un attribut, on
utilise le mot clef ATTLIST
Syntaxe: <!ATTLIST balise attribut type mode>
Cette règle peut donc se diviser en 5 mots clefs : ATTLIST, balise, attribut,
type et mode.
Prenons cet exemple XML: <personne sexe="masculin" />
Code DTD: <!ATTLIST personne sexe type mode>
Le type ici peut être les valeurs possible de sexe, du texte ou un identifiant
Cas d'un attribut ayant pour type la liste des valeurs possibles
Syntaxe: <!ATTLIST balise attribut (valeur 1 | valeur 2 | valeur 3 | etc.)
mode>
Maurice AHOUMENOU 23
Code DTD: <!ATTLIST personne sexe CDATA mode>
Maurice AHOUMENOU 24
Exemple d’un document XML:
<!-- valide -->
<personne position= " 1" />
<personne position= " 2" />
<personne position= " 3" />
<!-- invalide -->
<personne position= " 1" />
<personne position= " 1" />
<personne position= " 2" />
Maurice AHOUMENOU 25
Exemple du document XML:
<!-- valide -->
<pere id="PER-1" />
<fils id="PER-2" pere="PER-1" />
<!-- invalide -->
<!-- l'identifiant PER-0 n'apparaît nulle part -->
<pere id="PER-1" />
<fils id="PER-2" pere="PER-0" />
Maurice AHOUMENOU 26
Cas d'un attribut obligatoire
Lorsqu'on souhaite qu'un attribut soit obligatoirement renseigné, on
utilise le mot clef #REQUIRED.
Maurice AHOUMENOU 27
Cas d'un attribut optionnel
on utilise le mot clef #IMPLIED
Règle DTD: <!ATTLIST personne sexe CDATA #IMPLIED>
Maurice AHOUMENOU 28
Cas d'une valeur par défaut
Ils existent 3 types d'entités: les entités générales, les entités paramètres
et les entités externes.
Maurice AHOUMENOU 30
Les entités
Maurice AHOUMENOU 32
Les entités externes
Utilisation: &nom;
Maurice AHOUMENOU 33
Les entités externes
Exemple de document XML:
<!ENTITY samsung SYSTEM "samsung.xml">
<!ENTITY apple SYSTEM "apple.xml">
<telephone>
&samsung;
<modele>Galaxy S3</modele>
</telephone>
<telephone>
&apple;
<modele>iPhone 4</modele>
</telephone>
Maurice AHOUMENOU 34
Où écrire les DTD
On distingue deux type de DTD, que sont: les DTD externes et internes
Les DTD internes
une DTD est écrite dans le même fichier que le document XML. Elle s'écrit dans ce
qu'on appelle le DOCTYPE. On le place sous le prologue du document et au
dessus du contenu XML.
Syntaxe: <!DOCTYPE racine [ ]>
Le mot racine est l’élément racine du document XML
Maurice AHOUMENOU 35
Où écrire les DTD
<boutique>
<telephone>
<marque>samsung</marque>
<modele>galaxy s3</modele>
</telephone>
<telephone>
<marque>apple</marque>
<modele>iphone 4</modele>
</telephone>
<telephone>
<marque3636>nokia</marque>
<modele>lumia 800</modele>
</telephone>
</boutique>
Maurice AHOUMENOU 36
Où écrire les DTD
<boutique>
<telephone>
<marque>samsung</marque>
<modele>galaxy s3</modele>
</telephone>
<telephone>
<marque>apple</marque>
<modele>iphone 4</modele>
</telephone>
<telephone>
<marque>nokia</marque>
<modele>lumia 800</modele>
</telephone>
</boutique>
Maurice AHOUMENOU 37
Où écrire les DTD
Les DTD externes
Une DTD externe est une DTD qui est écrite dans un autre document que
le document XML. Un fichier contenant uniquement une DTD porte l'extension
.dtd. Il existe deux type de DTD externes à savoir les DTD externes
PUBLIC et les DTD externes SYSTEM.
les DTD externe PUBLIC sont utilisés lorsqu’il s’agit d’une norme
Syntaxe:
<!DOCTYPE racine PUBLIC "identifiant" "url">
Maurice AHOUMENOU 38
Où écrire les DTD
Les DTD externes SYSTEM
Énoncé: Une boutique possède plusieurs téléphones. Chaque téléphone
est d'une certaine marque et d'un certain modèle, tous les 2 représentés
par une chaîne de caractère.
Maurice AHOUMENOU 39
Schéma XML
Quelques limitent des DTD, ce n’est pas écrit en XML et il ne gère pas les typages
de données
Exemple:
<!-- Prologue -->
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Elément racine -->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
</xsd:schema>
Référencer un schema XML
Le référencement d'un schéma XML se fait au niveau de l'élément racine du fichier
XML grâce à l'utilisation de 2 attributs.
L’espace de noms:
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
Maurice AHOUMENOU 40
Schéma XML
</racine>
Maurice AHOUMENOU 41
Schéma XML : les éléments simples
Un élément simple est un élément qui ne contient qu'une valeur dont le type
est dit simple. Il ne contient pas d'autres éléments.
Un élément simple peut donc être une balise qui ne contient aucun attribut
et dans laquelle aucune autre balise n'est imbriquée.
Maurice AHOUMENOU 42
Schéma XML : les éléments simples
Exemple:
<!-- Ne contient ni attribut ni aucun autre élément => élément simple -->
<nom>Roger</nom>
<!-- Contient un attribut => n'est pas un élément simple -->
<!-- Cependant l'attribut "sexe" est un élément simple -->
<personne sexe="masculin>Roger DURAND</personne>
<!-- La balise personne contient d'autres éléments (les balises nom
et prénom) => n'est pas un élément simple -->
<personne>
<!-- Ne contient ni attribut ni aucun autre élément => élément simple -->
<nom>DURAND</nom>
<!-- Ne contient ni attribut ni aucun autre élément => élément simple -->
<prenom>Roger</prenom>
</personne>.
Maurice AHOUMENOU 43
Schéma XML : les éléments simples
Déclarer une balise comme un élément simple
Les attributs
Il sont considérés comme des éléments simple parce qu’ils ne peuvent
prendre
qu’une valeur de type simple (Nombre, chaîne de caractère, entier, etc).
Pour déclarer un attribut, on utilise le mot clef attribute
Syntaxe:
<xsd:attribute name="mon_nom" type="xsd:mon_type" />
Exemple d’une balise XML:
<personne sexe="masculin">Maurice AHOUMENOU</personne>
Schéma XML correspondant:
<xsd:attribute name="sexe" type="xsd:string" />
Maurice AHOUMENOU 46
Schéma XML : les éléments simples
Les attributs
• pour définir une valeur par défaut, on utilise le mot clef default dans la
balise <attribute />
Exemple de règle:
<xsd:attribute name="prenom" type="xsd:string" default="Maurice" />
Maurice AHOUMENOU 47
Schéma XML : les éléments simples
Les attributs
•Pour définir une valeur constante, on utilise la propriété fixed dans la balise
<attribute />
Exemple:
<xsd:attribute name="prenom" type="xsd:string" fixed="Maurice" />
Maurice AHOUMENOU 48
Les types chaînes de caractères
Maurice AHOUMENOU 49
Les types dates
Type Description
duration représente une durée
date représente une date
time représente une heure
dateTime représente une date et un temps
gYear représente une année
gYearMonth représente une année et un mois
gMonth représente un mois
gMonthDay représente un mois et un jour
gDay représente un jour
Maurice AHOUMENOU 50
Exemple:
<xsd:element name="monheure" type="xsd:time" />
Exemple du document XML:
Maurice AHOUMENOU 51
Les types numériques
Maurice AHOUMENOU 52
Les types numériques
Maurice AHOUMENOU 53
Les types numériques
Exemple Schema XML:
<xsd:element name="nombre" type="xsd:float" />
Exemple XML:
<nombre>42</nombre>
<nombre>-42.25</nombre>
<nombre>3E4</nombre>
<nombre>10e-5</nombre>
Type Description
boolean représente l'état vrai ou faux
QName représente un nom qualifié
NOTATION représente une notation
anyURI représente une URI
base64Binary représente une donnée binaire au format Base64
hexBinary représente une donnée binaire au format hexadecimal
Maurice AHOUMENOU 54
Schéma XML : les types complexes
Définition:
Un élément complexe est un élément qui contient au moins un attribut ou
d’autres éléments imbriqués.
Exemple:
<!-- la balise personne contient d'autres balises => élément complexe -->
<personne>
<!-- la balise nom est un élément simple -->
<nom>AHOUMENOU</nom>
<!-- la balise prenom est un élément simple -->
<prenom>Maurice</prenom>
</personne>
<!-- la balise personne possède un attribut => élément complexe -->
<personne sexe="masculin">Maurice AHOUMENOU</personne>
Maurice AHOUMENOU 55
Schéma XML : les types complexes
Maurice AHOUMENOU 56
Schéma XML : les types complexes
<xsd:element name="personne">
<xsd:complexType>
<!-- contenu ici -->
</xsd:complexType>
</xsd:element>
Maurice AHOUMENOU 57
Schéma XML : les types complexes
On appelle contenu simple, le contenu d'un élément complexe qui n'est composé
que d'attributs et d'un texte de type simple.
Exemple:
<prix devise="FCFA">100</prix>
<!-- contient un attribut et du texte -->
<voiture marque="Toyota">Avensis</voiture>
<xsd:element name="mon_nom">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="mon_type">
<xsd:attribute name="mon_nom" type="mon_type" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
Maurice AHOUMENOU 58
Schéma XML : les types complexes
Maurice AHOUMENOU 59
Schéma XML : les types complexes
c'est le contenu d'un élément complexe qui n'est composé que d'autres éléments
(simples ou complexes) ou uniquement d'attributs.
La séquence
On utilise une séquence lorsqu’on souhaite que les éléments contenus dans un
type complexe apparaissent dans un ordre précis.
Maurice AHOUMENOU 60
Schéma XML : les types complexes
La séquence
Syntaxe:
<xsd:element name="mon_nom">
<xsd:complexType>
<xsd:sequence>
<!-- liste des éléments -->
</xsd:sequence>
<!-- listes des attributs -->
</xsd:complexType>
</xsd:element>
Exemple:
<xsd:element name="personne">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="nom" type="xsd:string"/>
<xsd:element name="prenom" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="sexe" type="xsd:string" />
</xsd:complexType>
</xsd:element>
Maurice AHOUMENOU 61
Schéma XML : les types complexes
Le type all
On utilise le type all lorsqu’on souhaite que les éléments contenu dans un type
complexe apparaissent dans n’importe quel ordre.
Syntaxe:
<xsd:element name="mon_nom">
<xsd:complexType>
<xsd:all>
<!-- liste des éléments -->
</xsd:all>
<!-- listes des attributs -->
</xsd:complexType>
</xsd:element>
Maurice AHOUMENOU 62
Schéma XML : les types complexes
Le type all
Exemple:
<xsd:element name="personne">
<xsd:complexType>
<xsd:all>
<xsd:element name="nom" type="xsd:string"/>
<xsd:element name="prenom" type="xsd:string"/>
</xsd:all>
</xsd:complexType>
</xsd:element>
Maurice AHOUMENOU 63
Schéma XML : les types complexes
Le choix
On utilise le choix lorsqu’on souhaite que les éléments contenu s dans un type
complexe soient choisis dans une liste prédéfinie.
Syntaxe:
<xsd:element name="mon_nom">
<xsd:complexType>
<xsd:choice>
<!-- liste des éléments -->
</xsd:choice>
<!-- listes des attributs -->
</xsd:complexType>
</xsd:element>
Maurice AHOUMENOU 64
Schéma XML : les types complexes
Le choix
Exemple:
<xsd:element name="personne">
<xsd:complexType>
<xsd:choice>
<xsd:element name="nom" type="xsd:string"/>
<xsd:element name="prenom" type="xsd:string"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
Maurice AHOUMENOU 65
Schéma XML : les types complexes
Maurice AHOUMENOU 66
Schéma XML : les types complexes
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="personne">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="identite">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="nom" type="xsd:string"/>
<xsd:element name="prenom" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Maurice AHOUMENOU 67
Schéma XML : les types complexes
Un contenu mixte est le contenu d'un élément complexe qui est composé
d'attributs, d'éléments et de texte.
<xsd:element name="mon_nom">
<xsd:complexType mixed="true">
<!-- liste des éléments -->
</xsd:complexType>
<!-- liste des attributs -->
</xsd:element>
Maurice AHOUMENOU 68
Schéma XML : les types complexes
<xsd:element name="facture">
<xsd:complexType mixed="true">
<xsd:sequence>
<xsd:element name="acheteur" type="xsd:string" />
<xsd:element name="somme" type="xsd:int" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
Maurice AHOUMENOU 69
Schéma XML : les types complexes
Le nombre d'occurrences
Par défaut, si rien n’est précisé, la balise n’apparaît qu’une et une seule fois.
<xsd:complexType name="personne">
<xsd:sequence>
<xsd:element name="nom" type="xsd:string" />
<xsd:element name="prenom" type="xsd:string" minOccurs="2"
maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
Maurice AHOUMENOU 70
Schéma XML : les types complexes
Le nombre d'occurrences
Par défaut, si rien n’est précisé, la balise n’apparaît qu’une et une seule fois.
<xsd:complexType name="personne">
<xsd:sequence>
<xsd:element name="nom" type="xsd:string" />
<xsd:element name="prenom" type="xsd:string" minOccurs="2"
maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
Maurice AHOUMENOU 71
Schéma XML : les types complexes
Pour diviser le document XML dans le but de réutiliser les blocs d’éléments,
on utilise le mot clef ref
Maurice AHOUMENOU 72