Sie sind auf Seite 1von 72

Fondement XML

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

Les balises permettent de structurer de manière hiérarchisée et organisée


les données d'un document.
Maurice AHOUMENOU 3
Les objectifs du XML
•Objectif du XML est de faciliter les échanges de données entre les
machines.

•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

Les balises et les attributs


En XML, on distingue 2 types de balises : les balises par paires et les
balises uniques.
Les règles de nommages:
Les noms peuvent contenir des lettres, des chiffres ou des caractères spéciaux.
Les noms ne peuvent pas débuter par un nombre ou un caractère de
ponctuation.
Les noms ne peuvent pas commencer par les lettres XML (quelle que soit la
casse).
Les noms ne peuvent pas contenir d'espaces.
On évitera les caractères - , ; . < et > qui peuvent être mal interprétés dans
vos programmes.
Maurice AHOUMENOU 5
Exemple de balise et d’attribut XML: <prix devise= "FCFA">25000</prix>

Dans l'exemple ci-dessus, l'information principale est le prix. L'attribut devise


nous permet d'apporter des informations supplémentaires sur ce prix, mais ce
n'est pas l'information principale que souhaite transmettre la balise <prix/>.

Syntaxe des commentaires:


<!-- Ceci est un commentaire -->

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.

Testons ce exemple avec Editix

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>


<repertoire>
<personne>Roger</personne>
<personne>John</personne>
</repertoire>

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

Un document valide est un document bien formé conforme à une


définition.
Il existe deux technologies pour écrire les définitions d’un document XML
(DTD «Document Type Definition » et les Schémas XML

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

Exemple: <!ELEMENT nom (contenu)> DTD


<nom>Maurice</nom> XML

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>

Cas d'une balise contenant une valeur


on utilise le mot clef #PCDATA

Exemple: <!ELEMENT personne (nom)>


<!ELEMENT nom (#PCDATA)>

Maurice AHOUMENOU 13
Cas d'une balise vide:
On utilise le mot clef EMPTY

Exemple: <!ELEMENT personne (nom)>


<!ELEMENT nom EMPTY>

Exemple XML:
<personne>
<nom />
</personne>

Cas d'une balise pouvant tout contenir


on utilise le mot-clef ANY
Exemple:
<!ELEMENT personne (nom)>
<!ELEMENT nom ANY>

Exemple XML:
<personne>
<nom>Maurice AHOUMENOU</nom>
</personne>
Maurice AHOUMENOU 14
Structurer le contenu des balises

La séquence: elle permet de définir l’enchaînement des balises


Syntaxe: <!ELEMENT balise (balise2, balise3, balise4, balise5, etc.)>
Exemple DTD:
<!ELEMENT personne (nom, prenom, age)>
<!ELEMENT nom (#PCDATA)>
<!ELEMENT prenom (#PCDATA)>
<!ELEMENT age (#PCDATA)>
Cette définition impose que la balise <personne /> contienne
obligatoirement les balises <nom />, <prenom /> et
<age /> dans cet ordre.

Maurice AHOUMENOU 15
La liste de choix

Permet de dire qu'une balise contient l'une des balises décrites


Syntaxe: <!ELEMENT balise (balise2 | balise3 | balise4 | balise5 | etc.)>
Exemple DTD: <!ELEMENT personne (nom | prenom)>
<!ELEMENT nom (#PCDATA)>
<!ELEMENT prenom (#PCDATA)>

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.

Syntaxe: <!ELEMENT balise (balise2, balise3*, balise4)>


Code DTD:
<!ELEMENT repertoire (personne*)>
<!ELEMENT personne (nom, prenom)>
<!ELEMENT nom (#PCDATA)>
<!ELEMENT prenom (#PCDATA)>

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:

<!-- valide -->


<repertoire> <!-- invalide -->
<personne> <!-- la balise personne doit être
<nom>AHOUMENOU</nom> présente au moins une fois-->
<prenom>Maurice</prenom> <repertoire />
</personne>
<personne>
<nom>KIKI</nom>
<prenom>joanes</prenom>
</personne>
</repertoire>
Maurice AHOUMENOU 20
Un document valide est un document bien formé conforme à une
définition.
Un document conforme à une définition est un document qui
respecte toutes les règles qui lui sont imposées dans les fameuses
définitions.
Il existe les DTD internes et les DTD externes .
Il est possible d'écrire de nombreuses règles grâce aux DTD.
Le mot clef ELEMENT permet de d'écrire les règles relatives aux balises
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>

Code DTD: <!ATTLIST personne sexe (masculin | féminin) mode>


Maurice AHOUMENOU 22
Exemple XML:
<!-- valide -->
<personne sexe="masculin" />
<!-- valide -->
<personne sexe="féminin" />
<!-- invalide -->
<personne sexe="autre" />

Cas d'un attribut ayant pour type du texte non "parsé"


Derrière le terme "texte non "parsé"" se cache en fait la possibilité de mettre
ce que l'on veut comme valeur : un nombre, une lettre, une chaîne de caractères,
etc. Il s'agit de données qui ne seront pas analysées par le "parseur" au moment
de la validation et/ou l'exploitation de votre document XML.
Dans le cas où notre attribut contient du texte non "parsé", on utilise le mot
clef CDATA.

Syntaxe: <!ATTLIST balise attribut CDATA mode>

Maurice AHOUMENOU 23
Code DTD: <!ATTLIST personne sexe CDATA mode>

Exemple document XML:


<!-- valide -->
<personne sexe="masculin" />
<!-- valide -->
<personne sexe="féminin" />
<!-- valide -->
<personne sexe="autre" />
<!-- valide -->
<personne sexe="12" />

Cas d'un attribut ayant pour type un identifiant unique


Pour indiquer que la valeur de l'attribut est unique, on utilise le mot clef ID
comme Identifiant
Syntaxe: <!ATTLIST balise attribut ID mode>

Règle DTD: <!ATTLIST personne position ID 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" />

Cas d'un attribut ayant pour type une référence à un identifiant


unique
Pour faire référence à un identifiant unique, on utilise le mot clef IDREF.
Exemple règle DTD:
<!ATTLIST pere id ID mode >
<!ATTLIST fils id ID mode
Pere IDREF mode>

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

Le Mode: permet de donner une information supplémentaire sur l'attribut


comme par exemple une indication sur son obligation ou sur sa valeur.

Maurice AHOUMENOU 26
Cas d'un attribut obligatoire
Lorsqu'on souhaite qu'un attribut soit obligatoirement renseigné, on
utilise le mot clef #REQUIRED.

Règle DTD: <!ATTLIST personne sexe (masculin | féminin) #REQUIRED>

Exemple de document XML


<!-- valide -->
<personne sexe="masculin" />
<!-- valide -->
<personne sexe="féminin" />
<!-- invalide -->
<personne />

Maurice AHOUMENOU 27
Cas d'un attribut optionnel
on utilise le mot clef #IMPLIED
Règle DTD: <!ATTLIST personne sexe CDATA #IMPLIED>

Exemple du document XML:


<!-- valide -->
<personne sexe="masculin" />
<!-- valide -->
<personne sexe="féminin" />
<!-- valide -->
<personne sexe="15" />
<!-- valide -->
<personne />

Maurice AHOUMENOU 28
Cas d'une valeur par défaut

Règle DTD: <!ATTLIST personne sexe CDATA "masculin">

Exemples de document valide:


<!-- valide -->
<personne sexe="masculin" />
<!-- valide -->
<personne sexe="féminin" />
<!-- valide -->
<!-- l'attribut sexe vaut "masculin" -->
<personne />

Cas d'une constante


Il est possible de rendre obligatoire un attribut et de fixer sa valeur
grâce au mot clef #FIXED suivi de ladite valeur.

Règle DTD: <!ATTLIST objet devise CDATA #FIXED "Euro">


<!-- invalide -->
Exemple: <objet devise="Dollar" />
<!-- valide --> <!-- invalide -->
<objet devise="Euro" /> <objet />
Maurice AHOUMENOU 29
Les entités

Une entité peut-être considérée comme un alias permettant de réutiliser des


informations au sein du document XML ou de la définition DTD.

Ils existent 3 types d'entités: les entités générales, les entités paramètres
et les entités externes.

Les entités générales

Les entités générales sont les entités simples.

Elles permettent d'associer un alias à une information afin de l'utiliser

dans le document XML.

Syntaxe: <!ENTITY nom "valeur">

Pour l’utiliser dans un document XML, il faut faire ceci &nom;

Maurice AHOUMENOU 30
Les entités

Les entités générales

Exemple du document XML

<!ENTITY samsung "Samsung">


<!ENTITY apple "Apple">
<telephone>
<marque>&samsung;</marque>
<modele>Galaxy S3</modele>
</telephone>
<telephone>
<marque>&apple;</marque>
<modele>iPhone 4</modele>
</telephone>

Les entités paramètres


Contrairement aux entités générales qui apparaissent dans les documents XML,
les entités paramètres n'apparaissent que dans les définitions DTD.
Elles permettent d'associer un alias à une partie de la déclaration de la DTD.
Maurice AHOUMENOU 31
Les entités paramètres
Syntaxe: <!ENTITY % nom "valeur">
Pour utiliser une entité paramètre dans notre DTD,
il suffit d'utiliser la syntaxe suivante : %nom;
Prenons cet exemple:
<telephone marque="Samsung" />
<telephone marque="Apple" />

Règle DTD correspondante:

<!ATTLIST telephone marque (Samsung|Apple) #REQUIRED>

Avec l’aide de l’entité paramètre, la règle devient:

<!ENTITY % listeMarques "marque (Samsung|Apple) #REQUIRED">


<!ATTLIST telephone %listeMarques; >

Maurice AHOUMENOU 32
Les entités externes

Les entités externes analysées ont sensiblement le même


rôle que les entités générales, c'est à dire qu'elles permettent
d'associer un alias à une information afin de l'utiliser dans le
document XML. Mais, dans le cas

des entités externes analysées, les informations sont stockées


dans un fichier séparé.

Syntaxe: <!ENTITY nom SYSTEM "URI">

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>

<!-- Contenu du fichier samsung.xml -->


<marque>Samsung</marque>
<!-- Contenu du fichier apple.xml -->
<marque>Apple</marque>

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

Exemple d’un document XML contenant une DTD

<?xml version = "1.0" encoding="UTF-8" standalone="yes" ?>


<!DOCTYPE boutique [
<!ELEMENT boutique (telephone*)>
<!ELEMENT telephone (marque, modele)>
<!ELEMENT marque (#PCDATA)>
<!ELEMENT modele (#PCDATA)>
]>

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

Exemple de la norme xHTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
les DTD externe SYSTEM permet d'indiquer au document XML l'adresse
du document DTD
Syntaxe: <!DOCTYPE racine SYSTEM "URI">

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.

Exemple du document XML complet:


<?xml version = "1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE boutique SYSTEM "doc1.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 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

Schéma XML: les fichier portent l’extension .xsd


Le schéma XML aussi est constitué d’un prologue et d’un corps
L’élément racine du corps est fixe <xsd:schema />

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

Schéma XML décrivant un espace de noms:


Code:
xsi:schemaLocation="chemin_vers_fichier.xsd">

Schéma XML ne décrivant pas un espace de noms


Code:
xsi:noNamespaceSchemaLocation="chemin_vers_fichier.xsd">

Exemple complet du document XML:

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


<racine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="chemin_vers_fichier.xsd">

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

Un attribut d'une balise peut également être considéré comme un élément


simple.
En effet, la valeur d'un attribut est un type simple.

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

On utilise le mot clé element précédé de <xsd:>


Syntaxe: <xsd:element name="mon_nom" type="xsd:mon_type" />

Soit les éléments simple suivant:


<nom>DURAND</nom>
<prenom>Roger</prenom>
<age>38</age>

Correspondance de la déclaration d’un schema:

<xsd:element name="nom" type="xsd:string" />


<xsd:element name="prenom" type="xsd:string" />
<xsd:element name="age" type="xsd:int" />

Valeur par défaut et valeur inchangeable


valeur par défaut
on utilise l’attribut default
Exemple:

<xsd:element name="prenom" type="xsd:string" default="Roger" />


Maurice AHOUMENOU 44
Schéma XML : les éléments simples
Valeur par défaut et valeur constante

<!-- valide -->


<prenom>Jean</prenom>
<!-- valide -->
<prenom>Marie</prenom>
<!-- valide -->
<!-- la balise prenom vaut "Robert" -->
<prenom />

valeur par constante


on utilise l’attribut fixed
Exemple:

<xsd:element name="prenom" type="xsd:string" fixed="Robert" />

<!-- valide -->


<prenom>Robert</prenom>
<!-- invalide -->
<prenom>Marie</prenom>
<!-- invalide -->
<prenom/>
Maurice AHOUMENOU 45
Schéma XML : les éléments simples

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

Valeur par défaut, obligatoire et constante d’un attribut

• 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" />

•Pour définir un attribut obligatoire, on utilise la propriété Use qui prend la


valeur required dans la balise <attribute />
Exemple:
<xsd:attribute name="prenom" type="xsd:string" use="required" />

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

Schéma XML : les types simples


Il existe quatre catégories de type simple

Maurice AHOUMENOU 48
Les types chaînes de caractères

Type Description Commentaire


string représente une chaîne de attention aux caractères
caractères spéciaux
normalizedString représente une chaîne de basé sur le type string
caractères normalisée
token représente une chaîne de basé sur le type
caractères normalisée sans normalizedString
espace au début et à la fin
language représente le code d'une basé sur le type token
langue
NMTOKEN représente une chaîne de basé sur le type token
caractère "simple" applicable uniquement
aux attributs
Name représente un nom XML basé sur le type token

NCName représente un nom XML basé sur le type Name


sans le caractère :

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:

<!-- 10 heures et 24 minutes -->


<monheure>10:24:00</monheure>
<!-- 2,5 secondes -->
<monheure>00:00:02.5</monheure>

Maurice AHOUMENOU 51
Les types numériques

Type Description Commentaire


float représente un nombre flottant sur
32 bits conforme à la norme IEEE
754
double représente un nombre flottant sur
64 bits conforme à la norme IEEE
754
decimal représente une nombre décimal
integer représente un nombre entier basé sur le type decimal
long représente un nombre entier basé sur le type integer
int représente un nombre entier basé sur le type long
short représente un nombre entier basé sur le type int
byte représente un nombre entier basé sur le type short
nonPositiveInt représente un nombre entier non basé sur le type integer
eger positif

Maurice AHOUMENOU 52
Les types numériques

Type Description Commentaire


negativeIntege représente un nombre entier basé sur le type
r négatif nonPositiveInteger
nonNegativeIn représente un nombre entier non basé sur le type integer
teger négatif
positiveInteger représente un nombre entier basé sur le type
positif nonNegativeInteger
unsignedLong représente un nombre entier basé sur le type
positif nonNegativeInteger
unsignedInt représente un nombre entier basé sur le type
positif unsignedLong
unsignedShort représente un nombre entier basé sur le type
positif unsignedInt
unsignedByte représente un nombre entier basé sur le type
positif unsignedShort

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>

Les types booléens

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

Déclarer un élément complexe


Pour déclarer un élément de type complexe, on utilise le mot clef complexType
Syntaxe:
<xsd:element name="mon_nom">
<xsd:complexType>
<!-- contenu ici -->
</xsd:complexType>
</xsd:element>

Maurice AHOUMENOU 56
Schéma XML : les types complexes

Déclarer un élément complexe

Exemple code XML:


<personne>
<nom>AHOUMENOU</nom>
<prenom>Maurice</prenom>
</personne>

Exemple de déclaration du schéma correspondant:

<xsd:element name="personne">
<xsd:complexType>
<!-- contenu ici -->
</xsd:complexType>
</xsd:element>

Les contenus de type complexe

Il existe 3 types de contenus possibles :


Les contenus simples.
Les contenus "standards".
Les contenus mixtes.

Maurice AHOUMENOU 57
Schéma XML : les types complexes

Les contenus simples

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>

Syntaxe Schema XML:

<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

Les contenus simples


Exemple:
Document XML:
<prix devise="euros">35</prix>
Schéma XML:
<xsd:element name="prix">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:positiveInteger">
<xsd:attribute name="devise" type="xsd:string" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>

Maurice AHOUMENOU 59
Schéma XML : les types complexes

Les contenus "standards "

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.

Exemple de document XML


<personne>
<nom>AHOUMENOU</nom>
<prenom>Maurice</prenom>
</personne>
<!-- contient un attribut -->
<voiture marque= " Toyota" />

Balise contenant d'autres éléments

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

Cas d'un type complexe encapsulant un type complexe

Exemple de document XML:


<?xml version="1.0" encoding="UTF-8"?>
<personne>
<identite>
<nom>AHOUMENOU</nom>
<prenom>Maurice</prenom>
</identite>
</personne>

Maurice AHOUMENOU 66
Schéma XML : les types complexes

Cas d'un type complexe encapsulant un type complexe

Schéma XML illustrant cet exemple:

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

<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

Les contenus mixtes

Un contenu mixte est le contenu d'un élément complexe qui est composé
d'attributs, d'éléments et de texte.

Exemple de document XML illustrant un contenu mixte:


<balise1>
Ceci est une chaîne de caractères
<balise2>10</balise2>
7.5
</balise1>

Syntaxe du Schéma XML:

<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

Les contenus mixtes

Exemple de document XML:


<facture>
<acheteur>Rony</acheteur>, doit payer
<somme>1000</somme>€
.</facture>
Schéma XML:

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

Pour indiquer le nombre minimum d'occurrences d'un élément, on utilise l'attribut


minOccurs, sa valeur doit être supérieure à zéro.

Pour indiquer le nombre maximum d'occurrences d'un élément, on utilise l'attribut


maxOccurs, on peut également ne pas spécifier le nombre d’occurrence en
Utilisant l’attribut unbounded.

Exemple de schema XML:

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

Pour indiquer le nombre minimum d'occurrences d'un élément, on utilise l'attribut


minOccurs, sa valeur doit être supérieure à zéro.

Pour indiquer le nombre maximum d'occurrences d'un élément, on utilise l'attribut


maxOccurs, on peut également ne pas spécifier le nombre d’occurrence en
Utilisant l’attribut unbounded.

Exemple de schema XML:

<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

Réutilisation des types complexes

Pour diviser le document XML dans le but de réutiliser les blocs d’éléments,
on utilise le mot clef ref

Syntaxe: <xsd:element ref= "nom_ref" />


Exemple:
<xsd:element name= " Montant " type= " xsd:string " />
<xsd:element name= " compte" >
<xsd:comptexType>
<xsd:element ref= " Montant " />
</xsd:complexType>
</xsd:element>

Maurice AHOUMENOU 72

Das könnte Ihnen auch gefallen