XML L2 - Irt
XML L2 - Irt
XML (eXtensible Markup Language) a été développé dans les années 1990 par le World Wide Web
Consortium (W3C), une organisation internationale responsable des standards pour le Web. XML tire
son origine de SGML (Standard Generalized Markup Language), un langage de balisage complexe
conçu dans les années 1980 pour structurer des documents volumineux et complexes. Le W3C a
voulu simplifier SGML afin de répondre aux besoins croissants de structuration de données dans les
applications web. La première spécification officielle d'XML a été publiée en 1998. Grâce à sa
flexibilité et sa facilité d’utilisation, XML est rapidement devenu un standard essentiel pour l'échange
de données.
❖ Définition et utilité
XML est un langage de balisage générique, conçu pour structurer des données de façon hiérarchique
et lisible aussi bien par les humains que par les programmes. En pratique, XML permet de baliser des
données avec des étiquettes personnalisées, ce qui en fait un outil adaptable pour divers contextes.
Il sert principalement à organiser et à échanger des informations de manière standardisée entre
différents systèmes et applications, facilitant ainsi l’interopérabilité et l’intégration. Contrairement à
HTML, qui se concentre sur la mise en page visuelle, XML met l’accent sur le contenu et sa structure,
permettant ainsi à des programmes de traiter les données en fonction de leur signification.
XML est utilisé dans un large éventail d'applications qui nécessitent une structure de données flexible
et interopérable :
• Échange de données entre systèmes : XML est couramment utilisé pour échanger des
informations entre des applications et des serveurs, souvent dans le contexte des services
web. Par exemple, des protocoles comme SOAP (Simple Object Access Protocol) se basent
sur XML pour la structuration de données lors de la communication entre applications.
• Formats de documents : XML est à la base de nombreux formats de documents, tels que
DocBook pour les manuels et les livres, ou encore XHTML pour les pages web structurant le
contenu de manière standardisée.
• Stockage de données : XML est également utilisé pour enregistrer des configurations de
logiciels ou des préférences utilisateur, notamment dans des fichiers de configuration (.xml)
lisibles et éditables facilement.
• Applications web et mobiles : De nombreuses applications utilisent XML pour structurer les
informations qu'elles récupèrent depuis un serveur. Par exemple, une application mobile qui
reçoit des informations météo d’un serveur utilise souvent XML pour structurer les données
météorologiques.
Les objectifs du XML
XML (eXtensible Markup Language) a été conçu avec des objectifs spécifiques pour répondre aux
besoins de structuration, d’échange et de lisibilité des données, tant par des machines que par des
humains. Voici les principaux objectifs de XML :
L’un des principaux objectifs de XML est de permettre la structuration hiérarchique et flexible des
données. XML permet aux utilisateurs de créer des balises personnalisées qui décrivent précisément
les données qu’elles contiennent, ce qui rend XML adapté à divers domaines d’application.
XML a été conçu pour être indépendant de la plateforme et du langage, ce qui le rend idéal pour
l’échange de données entre différents systèmes et applications. Avec XML, les données peuvent être
échangées et lues facilement entre des systèmes qui utilisent des technologies variées.
Contrairement à d’autres formats de données qui peuvent être complexes ou illisibles pour les
humains, XML se veut lisible à la fois par des programmes et par les humains, facilitant la
compréhension et la manipulation des données sans nécessiter d'outils spécialisés.
En établissant un format standard pour structurer les données, XML favorise l’interopérabilité entre
des applications et des systèmes de différentes entreprises ou organisations, qui peuvent ainsi
partager et utiliser des données sans conflit.
XML prend en charge des outils de validation (comme les DTD et les schémas XML) qui permettent de
vérifier la conformité et la cohérence des données. Cette validation garantit que les données
échangées respectent une structure définie, réduisant ainsi les erreurs d’intégration.
XML est conçu pour être extensible ce qui lui permet de s'adapter à un large éventail de domaines,
allant des documents de texte structuré aux bases de données et aux protocoles de communication,
offrant une grande polyvalence dans les applications possibles.
❖ Les bases du XML
• Langages de programmation : utilisés pour créer des logiciels et des applications, ils incluent
des langages comme C, Java, C++, Objective-C, C#, PHP, Basic, Python, etc.
• Langages de requête : conçus pour interroger et manipuler des données dans des bases de
données, comme SQL et XQuery.
• Langages de description : dédiés à la structuration et à la présentation des données, comme
SGML, XML, ou HTML.
Les balises dans XML permettent de structurer les données de manière hiérarchique et organisée, ce
qui facilite leur interprétation et leur exploitation par les systèmes informatiques.
En XML, les balises sont des éléments essentiels qui délimitent et organisent les données. On
distingue deux types de balises :
• Balises par paires : Ce sont les balises les plus courantes, qui encadrent le contenu avec une
balise ouvrante et une balise fermante. Par exemple :
<titre>Introduction à XML</titre>
• Balises uniques : Elles ne contiennent pas de contenu et sont auto-fermantes. Par exemple :
Pour garantir la validité et l’interopérabilité des documents XML, certaines règles de nommage des
balises doivent être respectées :
• Les noms de balises peuvent contenir des lettres, des chiffres ou des caractères spéciaux.
• Ils ne doivent pas commencer par un nombre ni par un signe de ponctuation.
• Les noms de balises ne peuvent pas commencer par les lettres "XML" (quelle que soit la
casse).
• Les noms ne doivent pas contenir d'espaces.
• Il est recommandé d’éviter certains caractères spéciaux tels que -, ;, ., <, et >, car ils peuvent
être mal interprétés par les parsers XML.
❖ Les attributs dans XML
Les attributs sont utilisés pour ajouter des informations supplémentaires aux éléments, sans que ces
informations ne soient le contenu principal. Les attributs apparaissent dans la balise ouvrante et
suivent le format nom="valeur".
<prix devise="FCFA">25000</prix>
Dans cet exemple, l'élément <prix> contient la valeur principale 25000, tandis que l'attribut devise
fournit une information supplémentaire en précisant l’unité monétaire (FCFA).
Les commentaires en XML permettent d’ajouter des notes ou des explications pour les lecteurs du
code sans que ces informations ne soient interprétées par les programmes. La syntaxe d’un
commentaire XML est la suivante :
Par exemple :
• Le corps : Il est constitué de l'ensemble des balises qui décrivent les données. Dans un
document XML, une balise racine (ou élément racine) englobe tous les autres éléments. Cette
balise racine est essentielle et doit contenir l'intégralité du contenu du document. Voici un
exemple de structure avec une balise racine :
<racine>
<balise_paire>texte</balise_paire>
<balise_paire2>texte</balise_paire2>
</racine>
<repertoire>
<personne>Bernard</personne>
<personne>Patrick</personne>
</repertoire>
❖ Règles de formation d’un document XML valide
Pour qu’un document XML soit bien formé, il doit respecter certaines règles fondamentales :
Ce document respecte toutes les règles mentionnées et peut être validé à l'aide d'un éditeur XML tel
qu'Editix, qui vérifiera sa conformité.
Exercice 1 : Structure et balises XML
A) <balise>contenu</balise>
B) balise[contenu]
C) balise=contenu
D) <balise;contenu;>
Objectif : Apprendre à créer un document XML structuré avec des balises et des attributs, en respectant les
règles de syntaxe et de nommage.
Consignes :
1. Créez un document XML représentant une bibliothèque avec plusieurs livres. Chaque livre doit avoir un
titre, un auteur, une année de publication, et un prix.
2. Ajoutez un attribut pour indiquer la devise du prix (par exemple : FCFA, USD, etc.).
3. Incluez une balise racine, et assurez-vous que toutes les balises sont correctement fermées et que les
attributs sont entourés de guillemets.
4. Validez votre document en vous assurant qu’il respecte les règles suivantes :
a. Une seule balise racine.
b. Les noms des balises et des attributs sont conformes aux conventions XML.
c. Les balises sont bien fermées et les attributs correctement renseignés.
❖ Introduction aux définitions en XML
Les définitions d'un document XML sont des ensembles de règles spécifiques imposées à la structure
et au contenu dudit document. Ces règles permettent de décrire la manière dont le document XML
doit être construit et validé, en définissant les éléments (balises) attendus, leur ordre, et les types de
données autorisés. Elles sont essentielles pour garantir que le document XML est conforme aux
attentes et est interprété de manière cohérente par divers systèmes.
Un document XML est dit valide lorsqu'il est non seulement bien formé, mais aussi conforme aux
règles définies. Deux principales technologies permettent d'écrire les définitions d’un document XML
: la DTD (Document Type Definition) et les Schémas XML.
Les DTD sont des fichiers de définition pour documents XML qui établissent les règles de structure et
de contenu des balises. Les DTD peuvent être internes (directement incluses dans le document XML)
ou externes (stockées dans un fichier .dtd).
Pour définir les règles associées aux balises, le mot-clé ELEMENT est utilisé.
• Syntaxe :
• Exemple :
1. Définir l'inclusion d'une balise : Pour inclure une balise à l’intérieur d’une autre, on utilise la
syntaxe suivante :
Si une balise référencée (ex. <nom>) n’est pas définie, le document ne sera pas valide.
Exemple :
<personne>
<nom>Charles GBOYOU</nom>
</personne>
2. Balise contenant une valeur : On utilise le mot-clé #PCDATA pour indiquer que la balise
contient du texte brut.
3. Balise vide : Le mot-clé EMPTY est utilisé pour indiquer qu'une balise ne contient pas de
contenu.
Exemple XML :
<personne>
<nom />
</personne>
4. Balise pouvant contenir n'importe quel contenu : Le mot-clé ANY permet à une balise
d’accepter n’importe quel contenu.
Exemple XML :
<personne>
<nom>Charles GBOYOU</nom>
</personne>
→ Structurer le contenu des balises avec DTD
1. Séquence :
a. Syntaxe :
b. Exemple XML :
<personne>
<nom>Dupont</nom>
<prenom>Jean</prenom>
<age>30</age>
</personne>
2. Liste de choix :
a. Syntaxe :
<!ELEMENT personne (nom | prenom)>
b. Exemple XML :
<personne>
<nom>Dupont</nom>
</personne>
3. Balise optionnelle :
a. Syntaxe :
<!ELEMENT personne (nom, prenom?)>
b. Exemple XML :
<personne>
<nom>Dupont</nom>
</personne>
Pour permettre une répétition optionnelle d’une balise, on utilise une étoile *.
a. Syntaxe :
<repertoire>
<personne>
<nom>Dupont</nom>
<prenom>Jean</prenom>
</personne>
<personne>
<nom>Martin</nom>
<prenom>Paul</prenom>
</personne>
</repertoire>
Pour indiquer qu'une balise peut se répéter au moins une fois, on utilise un plus +.
a. Syntaxe :
<!ELEMENT repertoire (personne+)>
Un document XML est considéré comme valide lorsqu'il respecte toutes les règles définies dans sa
DTD ou son schéma. Ces règles portent sur la structure, les types de données, et l’organisation des
balises. Il existe des DTD internes (écrites dans le document XML lui-même) et externes (fichiers
séparés avec l'extension .dtd), offrant de la flexibilité dans la définition et la réutilisation de la
structure XML.
En XML, le mot-clé ELEMENT est fondamental pour établir les règles de structure, facilitant ainsi la
validation et garantissant que les données XML répondent aux exigences de leur application
spécifique.
❖ DTD : Les attributs et les entités
Pour définir des règles associées aux attributs d'une balise, on utilise le mot-clé ATTLIST. La syntaxe
de base est la suivante :
Syntaxe :
Cette déclaration se compose de cinq éléments : ATTLIST, le nom de la balise, le nom de l'attribut, le
type de l'attribut et le mode (obligatoire ou optionnel). Voici quelques cas d’utilisation :
1. Attribut avec une liste de valeurs possibles : Dans certains cas, on souhaite restreindre les
valeurs d'un attribut à une liste prédéfinie. On utilise pour cela la syntaxe suivante :
Exemple XML :
2. Attribut contenant du texte non "parsé" (CDATA) : Si l'attribut peut contenir tout type de
texte sans restriction (texte brut, nombres, lettres), on utilise le mot-clé CDATA :
Exemple XML :
3. Attribut de type identifiant unique (ID) : Pour qu'un attribut soit unique dans le document, on
utilise le type ID :
Exemple XML :
Exemple XML :
Le mode détermine si un attribut est obligatoire, optionnel ou possède une valeur par défaut.
Les entités permettent de définir des alias pour réutiliser des valeurs ou fragments de texte.
2. Entités paramètres : Utilisées uniquement dans les DTD, elles permettent de référencer des
valeurs réutilisables.
3. Entités externes : Les entités externes référencent des données stockées dans des fichiers
séparés.
Les DTD peuvent être incluses de deux façons : directement dans le document XML (DTD interne) ou
dans un fichier séparé (DTD externe).
• DTD externe : Stockée dans un fichier .dtd séparé, référencée via le mot-clé SYSTEM ou
PUBLIC.
Ces définitions DTD assurent que le document XML respecte une structure préétablie, garantissant
ainsi une compatibilité et une cohérence dans l’utilisation des données.
Exercice 1 : Création d'un document XML simple
Objectif : Définir une structure de document XML en utilisant une DTD interne.
1. En utilisant le document XML créé dans l’exercice 1, ajoutez une DTD interne qui impose la
présence des éléments suivants :
a. Une balise racine bibliotheque.
b. Des éléments livre avec des sous-éléments titre, auteur, annee, et prix.
2. Ajoutez un attribut devise pour l’élément prix avec une valeur par défaut "Euro".
3. Validez le document XML en vous assurant qu'il est conforme à la DTD.
TP :
1 - Créer un document XML pour gérer une bibliothèque universitaire. Cette bibliothèque contient
plusieurs types de ressources (livres, articles, et supports multimédias) ainsi que des informations
sur les auteurs, éditeurs, et catégories de chaque ressource. Vous devez inclure les éléments et
attributs suivants dans le document XML.
Instructions :
1. Éléments de la bibliothèque :
a. La racine du document doit être bibliotheque.
b. La bibliothèque contient plusieurs ressources.
2. Ressources :
a. Chaque ressource doit avoir un type (livre, article, multimedia), défini par un attribut
type.
b. Les sous-éléments d’une ressource varient en fonction de son type :
i. livre : contient les sous-éléments obligatoires titre, auteur, annee, editeur, et un
attribut optionnel genre.
ii. article : contient les sous-éléments obligatoires titre, auteur, publication, pages
et un attribut revue (obligatoire).
iii. multimedia : contient les sous-éléments titre, format et un sous-élément
optionnel description.
3. Auteurs :
a. Chaque ressource peut avoir plusieurs auteurs, chacun ayant un identifiant unique id.
b. Les auteurs sont définis séparément dans un élément auteurs contenant plusieurs
éléments auteur (nom, prénom, affiliation).
c. Les ressources référencent les auteurs par leurs identifiants IDREF (ex. auteur_ref).
4. Entités :
a. Définissez une entité pour représenter une devise par défaut (ex. EUR pour euro).
b. Utilisez cette entité dans les éléments de prix.
5. Exigences supplémentaires :
a. Les valeurs possibles pour le genre d’un livre doivent être limitées à "roman", "essai",
ou "manuel".
b. Les formats de multimedia doivent être "CD", "DVD", ou "Blu-ray".
c. Assurez-vous que chaque ressource est correctement structurée selon son type.
2 - Créez une DTD ([Link]) qui valide la structure du document XML en respectant les
critères suivants :
Les DTD (Définitions de Type de Document) présentent certaines limites : elles ne sont pas écrites en
XML et ne permettent pas la gestion des typages de données avancés. Pour pallier ces limitations, les
schémas XML sont souvent préférés.
Les fichiers de schéma XML utilisent l'extension .xsd. Comme tout document XML, un schéma XML
comporte un prologue et un corps. L’élément racine du corps est toujours <xsd:schema />.
Exemple :
Pour référencer un schéma XML dans un document XML, on utilise des attributs au niveau de
l’élément racine.
Un élément simple contient une valeur de type simple sans attributs ni éléments imbriqués. Un
attribut peut également être considéré comme un élément simple, car il ne contient qu’une seule
valeur de type simple.
Pour déclarer un élément simple, on utilise <xsd:element> avec les attributs name et type.
Exemple :
Les attributs, considérés comme des éléments simples, sont déclarés avec <xsd:attribute>.
Exemple :
Les types simples se divisent en plusieurs catégories, notamment les chaînes de caractères, les
dates, les nombres, et les types booléens.
Type Description
string Chaîne de caractères
normalizedString Chaîne de caractères normalisée
token Chaîne de caractères sans espaces initiaux ou finaux
language Code de langue
Name Nom XML valide
NCName Nom XML sans le caractère :
Types dates
Type Description
date Représente une date
time Représente une heure
dateTime Représente une date et un temps
gYear Représente une année
duration Représente une durée
Types numériques
Type Description
integer Nombre entier
float Nombre flottant (32 bits)
double Nombre flottant (64 bits)
decimal Nombre décimal
Type Description
boolean Représente vrai ou faux
anyURI Représente une URI
base64Binary Donnée binaire en Base64
hexBinary Donnée binaire en hexadécimal
Schéma XML : Les Éléments Complexes
Un élément complexe peut contenir d'autres éléments et/ou des attributs. Dans un schéma XML, les
éléments complexes sont déclarés à l'aide de <xsd:complexType>.
<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>
Dans cet exemple, l'élément personne contient deux sous-éléments (nom et prenom) et un attribut
(sexe).
<xsd:element name="contact">
<xsd:complexType>
<xsd:choice>
<xsd:element name="email" type="xsd:string"/>
<xsd:element name="telephone" type="xsd:string"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
Dans cet exemple, contact peut être soit un email soit un telephone, mais pas les deux à la fois.
❖ Types de Restriction dans un Schéma XML
Les schémas XML permettent de restreindre les valeurs d'un élément ou d'un attribut en utilisant des
types simples avec des restrictions spécifiques. On utilise pour cela <xsd:restriction>.
Exemples de Restrictions :
• Valeurs autorisées : Utilise <xsd:enumeration> pour définir une liste de valeurs possibles.
<xsd:element name="couleur">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="rouge"/>
<xsd:enumeration value="bleu"/>
<xsd:enumeration value="vert"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="age">
<xsd:simpleType>
<xsd:restriction base="xsd:int">
<xsd:minInclusive value="0"/>
<xsd:maxInclusive value="120"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="codePostal">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:length value="5"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
Les groupes d'éléments et d'attributs facilitent la réutilisation des structures XML dans les schémas.
1. Groupe d'Éléments : Défini avec <xsd:group>, il permet de regrouper des éléments qui
apparaîtront ensemble.
<xsd:group name="nomComplet">
<xsd:sequence>
<xsd:element name="nom" type="xsd:string"/>
<xsd:element name="prenom" type="xsd:string"/>
</xsd:sequence>
</xsd:group>
<xsd:element name="employe">
<xsd:complexType>
<xsd:group ref="nomComplet"/>
<xsd:element name="poste" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:attributeGroup name="identite">
<xsd:attribute name="id" type="xsd:int" use="required"/>
<xsd:attribute name="sexe" type="xsd:string"/>
</xsd:attributeGroup>
<xsd:element name="client">
<xsd:complexType>
<xsd:attributeGroup ref="identite"/>
</xsd:complexType>
</xsd:element>
Les schémas XML peuvent être divisés en plusieurs fichiers pour faciliter leur gestion et permettre
leur réutilisation.
• Inclusion : Utilisée pour inclure un schéma sans espace de noms avec <xsd:include>.
<xsd:include schemaLocation="fichier_inclus.xsd"/>
• Importation : Utilisée pour importer un schéma avec un espace de noms différent en utilisant
<xsd:import>.
<xsd:import namespace="[Link] schemaLocation="fichier_importe.xsd"/>
Schéma XML : Définition et Utilisation des Types Complexes
Un élément complexe est un élément XML qui peut contenir d'autres éléments imbriqués ou inclure
des attributs.
Exemples :
Pour définir un élément complexe dans un schéma XML, utilisez l'élément <xsd:complexType>.
Syntaxe :
<xsd:element name="mon_nom">
<xsd:complexType>
<!-- contenu ici -->
</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>
1. Contenus Simples
a. Ce type de contenu contient uniquement des attributs et du texte simple.
Exemple :
<prix devise="euros">35</prix>
Déclaration :
<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>
2. Contenus Standards
a. Ce type de contenu est composé d'éléments enfants (simples ou complexes) ou
d'attributs uniquement.
Exemple :
<personne>
<nom>GBOYOU</nom>
<prenom>Charles</prenom>
</personne>
Déclaration :
<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:complexType>
</xsd:element>
3. Contenus Mixtes
a. Un contenu mixte contient des attributs, des éléments et du texte.
Exemple :
<facture>
<acheteur>Rony</acheteur>, doit payer
<somme>1000</somme>€
</facture>
Déclaration :
<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>
• La Séquence : Définit un ordre strict pour l'apparition des éléments dans l'élément complexe.
Syntaxe :
<xsd:element name="mon_nom">
<xsd:complexType>
<xsd:sequence>
<!-- éléments ici -->
</xsd:sequence>
</xsd:complexType>
</xsd:element>
• Le Choix : Permet à un élément de prendre la valeur de l'un des éléments prédéfinis dans la
liste.
Syntaxe :
<xsd:element name="mon_nom">
<xsd:complexType>
<xsd:choice>
<!-- éléments ici -->
</xsd:choice>
</xsd:complexType>
</xsd:element>
Par défaut, un élément n'apparaît qu'une seule fois. Utilisez minOccurs pour le nombre minimal
d'occurrences et maxOccurs pour le maximum. Pour un nombre illimité, utilisez
maxOccurs="unbounded".
Exemple :
<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>
Syntaxe :
<xsd:element ref="nom_ref"/>
Exemple :
Créez un schéma XML pour le document suivant, qui représente un produit avec un nom et un prix, où
le prix doit inclure une devise comme attribut.
Document XML :
<produit>
<nom>Stylo</nom>
<prix devise="USD">1.99</prix>
</produit>
Question : Écrivez le schéma XML qui déclare cet élément complexe, en définissant nom comme une
chaîne (string) et prix comme un nombre (decimal).
Dans cet exercice, nous avons une liste de commandes dans laquelle chaque commande contient
un ou plusieurs articles, identifiés par un nom et une quantité.
Document XML :
<commande>
<article>
<nom>Clavier</nom>
<quantite>2</quantite>
</article>
<article>
<nom>Souris</nom>
<quantite>1</quantite>
</article>
</commande>
Question : Définissez le schéma XML pour cet élément complexe en utilisant une séquence et
spécifiez que l'élément article peut apparaître plusieurs fois (minOccurs=1,
maxOccurs="unbounded").
Vous devez créer un schéma XML pour un élément contact qui contient soit un numéro de téléphone,
soit une adresse email.
Document XML :
<contact>
<email>contact@[Link]</email>
</contact>
ou
<contact>
<telephone>+123456789</telephone>
</contact>
Question : Déclarez le schéma XML pour l'élément contact, en utilisant <choice> pour permettre soit
un élément email (de type string), soit un élément telephone (de type string).
Exercice :
L'exercice suivant propose un document XML complexe, représentant un client d'une entreprise,
avec ses informations personnelles, son adresse, ses contacts, et une liste de commandes passées.
Document XML :
<client>
<identite>
<nom>Dupont</nom>
<prenom>Marie</prenom>
</identite>
<adresse type="residence">
<ligne1>123 Rue de la Paix</ligne1>
<ville>Paris</ville>
<codePostal>75001</codePostal>
<pays>France</pays>
</adresse>
<contacts>
<email>[Link]@[Link]</email>
<telephone>+33123456789</telephone>
</contacts>
<commandes>
<commande date="2024-11-01">
<article>
<nom>Stylo</nom>
<quantite>2</quantite>
<prix devise="EUR">1.99</prix>
</article>
<article>
<nom>Cahier</nom>
<quantite>5</quantite>
<prix devise="EUR">2.50</prix>
</article>
</commande>
<commande date="2024-10-15">
<article>
<nom>Classeur</nom>
<quantite>3</quantite>
<prix devise="EUR">4.75</prix>
</article>
</commande>
</commandes>
</client>
Question :
Écrivez le schéma XML pour ce document. Prenez en compte les éléments suivants :
1. Utilisez <sequence> pour définir l'ordre des éléments dans les sections identite, adresse, et
commandes.
2. Déclarez des attributs pour adresse (type) et prix (devise).
3. Utilisez minOccurs et maxOccurs pour gérer les occurrences de l'élément article dans chaque
commande.
4. Assurez-vous que l'élément commande contient la date de commande en attribut (date).
5. Utilisez des types complexes imbriqués pour définir les différentes sections du document
(identite, adresse, contacts, et commandes).
Les Web Services
Les Web Services sont des applications ou des services en ligne permettant à différents systèmes
d'interagir via le réseau, en s'appuyant sur des protocoles de communication standardisés,
indépendamment de leur langage de programmation ou de leur système d'exploitation. Ils
permettent de réaliser une architecture distribuée où des applications, parfois dans des
environnements très différents, peuvent partager des informations et interagir.
Les Web Services s'appuient généralement sur des protocoles standard pour la communication,
parmi lesquels :
• HTTP/HTTPS : les protocoles de transport les plus courants pour les Web Services, ils
permettent l'échange de données entre le client et le serveur via Internet.
• SOAP (Simple Object Access Protocol) : un protocole standard basé sur XML pour l'échange
structuré de messages entre applications.
• REST (Representational State Transfer) : une architecture de services Web qui repose sur
HTTP et utilise des formats comme JSON et XML.
XML est souvent utilisé pour représenter les données échangées dans les Web Services, surtout dans
les services SOAP. Il permet de structurer les données avec des balises hiérarchiques et des
attributs, facilitant ainsi l'interopérabilité entre des systèmes hétérogènes.
SOAP utilise XML comme langage de base pour structurer ses messages. Un message SOAP se
compose généralement de :
• Enveloppe : l'élément principal qui encadre le message SOAP.
• En-tête : une partie facultative qui peut contenir des informations sur le traitement du
message.
• Corps : contient les données ou les commandes que le client ou le serveur souhaite
transmettre.
<soap:Envelope xmlns:soap="[Link]
<soap:Header>
<authToken>12345</authToken>
</soap:Header>
<soap:Body>
<getWeather>
<city>Paris</city>
</getWeather>
</soap:Body>
</soap:Envelope>
Le WSDL est un document XML qui décrit l'interface d'un Web Service. Il spécifie les méthodes
disponibles, les paramètres attendus, les types de données, et les formats de réponse. Le WSDL
permet ainsi au client de découvrir automatiquement les services qu’il peut consommer et comment
les appeler.
Bien que le format JSON soit devenu populaire avec les services REST en raison de sa légèreté, XML
est également pris en charge par de nombreux services REST, notamment dans les environnements
où une structure de données plus complexe est nécessaire ou pour des raisons de compatibilité avec
des systèmes existants.
<weather>
<city>Paris</city>
<temperature>18</temperature>
<unit>Celsius</unit>
</weather>
Avantages
Inconvénients
• Verbosité : XML est plus verbeux que JSON, ce qui peut augmenter la taille des messages.
• Complexité de Parsing : le traitement de XML peut être plus lent et complexe par rapport à
JSON.
• Moins adapté aux environnements modernes : les API modernes et les architectures
microservices favorisent de plus en plus JSON.
Exercice 1 : Web Service REST avec XML (PHP ou Java)
Créer un Web Service REST qui gère des informations de livres (ID, titre, auteur) et qui renvoie des
réponses en XML.
1. Ajouter un livre : Accepter une requête POST avec les détails d’un livre en XML et ajouter le
livre dans une liste.
2. Lister les livres : Accepter une requête GET pour renvoyer la liste des livres sous forme XML.
3. Supprimer un livre : Accepter une requête DELETE pour supprimer un livre par son ID.