Académique Documents
Professionnel Documents
Culture Documents
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
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
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
Schéma XML
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 11
Schéma XML
</racine>
Maurice AHOUMENOU 12
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 13
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 14
Schéma XML : les éléments simples
Déclarer une balise comme un élément simple
Maurice AHOUMENOU 17
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 18
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 19
Les types chaînes de caractères
Maurice AHOUMENOU 20
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 21
Exemple:
<xsd:element name="monheure" type="xsd:time" />
Exemple du document XML:
Maurice AHOUMENOU 22
Les types numériques
Maurice AHOUMENOU 23
Les types numériques
Maurice AHOUMENOU 24
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 25
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 26
Schéma XML : les types complexes
Maurice AHOUMENOU 27
Schéma XML : les types complexes
Déclarer un élément complexe
<xsd:element name="personne">
<xsd:complexType>
<!-- contenu ici -->
</xsd:complexType>
</xsd:element>
Maurice AHOUMENOU 28
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 29
Schéma XML : les types complexes
Maurice AHOUMENOU 30
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 31
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 32
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 33
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 34
Schéma XML : les types complexes
Le choix
On utilise le choix lorsqu’on souhaite que les éléments contenus 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 35
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 36
Schéma XML : les types complexes
Maurice AHOUMENOU 37
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 38
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 39
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 40
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 41
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
Exemple: écrivez le document XML qui représente une banque et ses clients.
Pour chaque client, on connaît son identité, le montant de son livret A ainsi que le
montant de son compte courant.
Maurice AHOUMENOU 42
Schéma XML : les types complexes
Solution:
<?xml version="1.0" encoding="UTF-8"?>
<banque>
<client>
<identite>
<nom>NOE</nom>
<prenom>Talk</prenom>
</identite>
<comptes>
<livretA>
<montant>2500</montant>
</livretA>
<courant>
<montant>4000</montant>
</courant>
</comptes>
</client>
</banque>
Maurice AHOUMENOU 43
Schéma XML : les types complexes
Les types à créer peuvent être de deux types à savoir le type simple et complexe
Type simple
Syntaxe:
Utilisation:
<xsd:element name="mon_nom" type="mon_type_perso" />
Maurice AHOUMENOU 44
Schéma XML : les types complexes
Les types à créer peuvent être de deux types à savoir le type simple et complexe
Type complexe
Syntaxe:
<xsd:ComplexeType name="mon_type_perso">
<!-- personnalisation du type complexe -->
</xsd:ComplexeType>
Utilisation:
<xsd:element name="mon_nom" type="mon_type_perso" />
Maurice AHOUMENOU 45
Schéma XML : les types complexes
L'héritage
L'héritage permet de réutiliser les éléments d'un Schéma XML pour en construire de nouveau. Il
existe deux types d’héritage:
L’héritage par restriction et par extension. Dans les deux cas, c'est le mot clef base qu’on
utilise pour indiquer un héritage.
Elle peut s'appliquer aussi bien aux éléments qu'aux attributs et qui permet de déterminer plus
précisément la valeur attendue via la détermination d'un certain nombre de contraintes.
Syntaxe:
<xsd:element name="mon_nom">
<xsd:simpleType>
<xsd:restriction base="type_de_base">
<!-- détail de la restriction -->
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
Maurice AHOUMENOU 46
Schéma XML : les types complexes
Maurice AHOUMENOU 47
Schéma XML : les types complexes
L'héritage par restriction
Nom de la Description
restriction
minExclusive permet de définir une valeur minimale exclusive
minInclusive permet de définir une valeur minimale inclusive
maxExclusive permet de définir une valeur maximale exclusive
maxInclusive permet de définir une valeur maximale inclusive
totalDigits permet de définir le nombre exact de chiffres qui
composent un nombre
fractionDigits permet de définir le nombre de chiffres autorisés après
la virgule
length permet de définir le nombre exact de caractères d'une
chaîne
Maurice AHOUMENOU 48
Schéma XML : les types complexes
L'héritage par restriction
Nom de la Description
restriction
minLength permet de définir le nombre minimum de caractères
d'une chaîne
maxLength permet de définir le nombre maximum de caractères
d'une chaîne
enumeration permet d'énumérer la liste des valeurs possibles
Maurice AHOUMENOU 49
Schéma XML : les types complexes
L'héritage par restriction
Exemple:
<xsd:complexType name="personne">
<xsd:attribute name="age">
<xsd:simpleType>
<xsd:restriction base="xsd:nonNegativeInteger">
<xsd:minExclusive value="17" />
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
Maurice AHOUMENOU 50
Schéma XML : les types complexes
L'héritage par extension
Elle permet d'ajouter des informations à un type existant. On peut, par exemple, vouloir
ajouter un élément ou un attribut.
Syntaxe:
Maurice AHOUMENOU 51
Schéma XML : les types complexes
L'héritage par extension
Exemple:
Maurice AHOUMENOU 52
XPATH
C’est une technologie qui repose sur l'écriture d'expressions permettant d'extraire de manière très
précise les informations contenues dans un document XML.
Quelques vocabulaires:
Parent
Le parent d'un nœud est le nœud qui est directement au-dessus de lui d'un point de vue hiérarchique.
Chaque nœud a au moins un parent.
Enfant
Un nœud a pour enfants tous les nœuds situés un niveau en dessous dans la hiérarchie. Un nœud
peut donc avoir une infinité d'enfants.
Descendant
Un nœud a pour descendants tous les nœuds situés en dessous dans la hiérarchie. Un nœud peut
donc avoir une infinité de descendants.
Maurice AHOUMENOU 53
XPATH
Dissection d’une étape
L'axe va nous permettre de définir le sens de la recherche. Par exemple, si l'on souhaite se
diriger vers un nœud enfant ou au contraire remonter vers un nœud parent voir un ancêtre.
Le nœud va nous permettre d'affiner notre recherche en indiquant explicitement le nom d'un
nœud ou le type de nœud dont les informations nous intéressent.
Maurice AHOUMENOU 54
XPATH
Rôle des 3 éléments:
Les prédicats, dont le nombre n'est pas limité, agissent comme un filtre et vont nous
permettre de gagner en précision lors de nos recherches. Ainsi, grâce aux prédicats, il sera par
exemple possible de sélectionner les informations à une position précise.
Syntaxe:
axe::nœud[predicat][predicat]...[predicat]
Maurice AHOUMENOU 55
XPATH
Maurice AHOUMENOU 56
XPATH
Maurice AHOUMENOU 57
XPATH
Maurice AHOUMENOU 58
XPATH
Exemple:
Code xpath:
/child::repertoire/child::personne/child::adresse/child::pays
Maurice AHOUMENOU 59
XPATH
Tableau récapitulatif des prédicats
Exemple:
Code Xpath:
/repertoire/personne/telephones/telephone[attribute::type="fixe"]
Maurice AHOUMENOU 60
XPATH
TRAVAUX PRATIQUES
Maurice AHOUMENOU 61
XSLT
XSLT ou eXtensible Stylesheet Language Transformations est une technologie qui permet de
transformer les informations d'un document XML vers un autre type de document comme un autre
document XML ou encore une page web.
Maurice AHOUMENOU 62
XSLT
Structure d'un document XSLT
Prologue:
<?xml version="1.0" encoding="UTF-8" ?>
Le corps d'un fichier XSLT est constitué d'un ensemble de balises dont l'élément racine
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
</xsl:stylesheet>
La balise output
Elle permet de décrire le document à générer à l'issue des différentes transformations.
Elle contient les attributs suivantes :
Maurice AHOUMENOU 63
XSLT
La balise output
Elle permet de décrire le document à générer à l'issue des différentes transformations.
Elle contient les attributs suivantes :
L'attribut method
L'attribut encoding
<xsl:output
method="xml"
encoding="UTF-8"
indent="yes"
/>
Maurice AHOUMENOU 64
XSLT
</xsl:stylesheet>
Maurice AHOUMENOU 65
XSLT
Référencer un document XSLT
Le référencement d'un document XSLT se fait au niveau du document XML dont les informations seront utilisées au
cours de la transformation.
Les templates
name qui permet de donner un nom au template. Cet attribut permet d’identifier de
manière unique le template dans le document XSLT.
Maurice AHOUMENOU 66
XSLT
<?xml version="1.0" encoding="UTF-8"?>
Les templates <xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
priority qui permet de renseigner la priorité >
<xsl:output
mode qui permet de définir un mode. method="html"
encoding="UTF-8"
doctype-public="-//W3C//DTD HTML
<xsl:template 4.01//EN"
match="expression XPath"
name="nom du template" doctype-system="http://www.w3.org/TR/html4/strict.
> dtd"
<!-- contenu du template --> indent="yes"
</xsl:template> />
<xsl:template match="/">
<html>
<head>
<title>Mon document XSLT</title>
</head>
<body>
<p>Bonjour !</p>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Maurice AHOUMENOU 67
XSLT
Les fonctions
value-of
Cette fonction possède un attribut select auquel il convient de renseigner une expression XPath
for-each
La fonction <xsl:for-each /> permet de parcourir l'ensemble des résultats obtenus pour y
appliquer une transformation particulière.
Maurice AHOUMENOU 68
XSLT
Les fonctions
if
Tests
Condition Explication
a=b Cette condition vérifie que la valeur de l'élément a est égale à la valeur
de l'élément b.
not(a = b) Cette condition vérifie que la valeur de l'élément a n'est pas égale à la
valeur de l'élément b.
Maurice AHOUMENOU 69
XSLT
Les fonctions
Les tests
Condition Explication
Maurice AHOUMENOU 70
XSLT
Les fonctions
<xsl:template match="/">
<html>
<head>
<title>Test de la fonction if</title>
</head>
<body>
<xsl:for-each select="repertoire/personne">
<xsl:if test="@sexe = 'masculin'">
<p><xsl:value-of select="nom" /> <xsl:value-of select="prenom"
/></p>
</xsl:if>
</xsl:for-each>
</body>
</html>
</xsl:template>
Maurice AHOUMENOU 71
CSS appliqué à XML
Pour inclure une feuille de style dans un document XML, on utilise la syntaxe
suivante:
Exemple:
Maurice AHOUMENOU 72
FIN!
Maurice AHOUMENOU 73