PARTIE 3 : XML
EXERCICE 1
DÉFINITION
- XSD : XML Schema Definition
- XSL : eXtensible Stylesheet Language
- XML : eXtensible Markup Language
- DTD : Document Type Definition
📄 Un document XML (eXtensible Markup Language) est un fichier qui contient des données
structurées encodées sous forme lisible par un ordinateur. Il est utilisé pour stocker et transporter des
informations de manière hiérarchique et est un élément clé du web sémantique.
🔤 Un élément dans un document XML est une entité de base qui peut contenir des données ou
d’autres éléments. Il est délimité par des balises ouvrantes et fermantes, par exemple :
<nom>John</nom>.
🕳️Un élément vide, également appelé « élément autonome » ou « élément auto-fermant », est un
élément qui ne contient pas de données ni d’autres éléments. Il est écrit sous forme raccourcie avec
une balise unique suivie éventuellement d’attributs, par exemple : <br/>.
🔖 Un attribut d’un élément est une paire nom-valeur qui fournit des informations supplémentaires
sur cet élément. Les attributs sont spécifiés dans la balise ouvrante de l’élément, par exemple :
<personne nom= »Doe » age= »30 »/>.
Un document bien formé est un document XML qui est correctement structuré, respectant les règles
de syntaxe de base telles que l’imbrication correcte des balises et l’utilisation correcte des caractères
spéciaux.
✅ Un document valide est un document XML qui est bien formé et qui correspond à une structure
définie par une DTD (Document Type Definition) ou un schéma XML. Cela signifie que le document
respecte les règles et la structure spécifiées par sa DTD ou son schéma associé.
2-Un document XML a une structure d’arbre parce qu’il est conçu pour représenter des données de
manière hiérarchique. Cette structure arborescente permet de représenter les relations entre les
différents éléments de manière claire et organisée. Chaque élément dans un document XML peut
avoir des éléments enfants, ce qui correspond à la structure d’un arbre où chaque nœud peut avoir
des nœuds enfants. Cette conception facilite le stockage, la manipulation et le traitement des
données, ce qui est l’une des raisons pour lesquelles XML est largement utilisé pour représenter et
échanger des données structurées.
3-Indiquer comment écrire un document en définissant sa grammaire associée de type schéma
(xsd) dans un fichier externe biblio.xsd ?
Pour écrire un document XML en définissant sa grammaire associée de type schéma (XSD) dans un
fichier externe appelé « biblio.xsd », vous pouvez suivre les étapes suivantes :
Créer un fichier nommé « biblio.xsd » et l’ouvrir avec un éditeur de texte ou un outil de
développement XML.
Définir la structure de votre document XML en utilisant les éléments XML et leurs attributs, et
spécifier les contraintes et les règles qui doivent être respectées en utilisant la syntaxe XSD.
Voici un exemple simple de contenu pour le fichier « biblio.xsd » qui définit une structure
pour un catalogue de livres :
< ?xml version= »1.0 » ?>
<xs :schema xmlns :xs= »http://www.w3.org/2001/XMLSchema »>
<xs :element name= »biblio »>
<xs :complexType>
<xs :sequence>
<xs :element name= »livres » type= »livresType »/>
</xs :sequence>
</xs :complexType>
</xs :element>
<xs :complexType name= »livresType »>
<xs :sequence>
<xs :element name= »livre » type= »livreType » maxOccurs= »unbounded »/>
</xs :sequence>
</xs :complexType>
<xs :complexType name= »livreType »>
<xs :sequence>
<xs :element name= »titre » type= »xs :string »/>
<xs :element name= »auteur » type= »xs :string »/>
<xs :element name= »année » type= »xs :integer »/>
</xs :sequence>
<xs :attribute name= »id » type= »xs :string » use= »required »/>
</xs :complexType>
</xs :schema>
Ensuite, pour attacher cette structure à un document XML, vous devez inclure une référence
à « biblio.xsd » dans le document XML à l’aide d’une déclaration xmlns attribuée à un espace
de noms. Voici un exemple de document XML utilisant la structure définie dans
« biblio.xsd » :
< ?xml version= »1.0 » ?>
<biblioxmlns :xsi= »http://www.w3.org/2001/XMLSchema-instance »
Xsi :noNamespaceSchemaLocation= »biblio.xsd »>
<livres>
<livre id= »1 »>
<titre>Le Seigneur des Anneaux</titre>
<auteur>J.R.R. Tolkien</auteur>
<année>1954</année>
</livre>
<livre id= »2 »>
<titre>Fondation</titre>
<auteur>Isaac Asimov</auteur>
<année>1951</année>
</livre>
</livres>
</biblio>
En utilisant ce fichier « biblio.xsd », les logiciels de traitement XML pourront valider la conformité des
documents XML aux règles définies dans le schéma XSD. 📝
4- Une feuille de style, souvent désignée sous l’abréviation « CSS » pour « Cascading Style Sheets »
en anglais, est un langage de conception graphique utilisé pour définir l’apparence et la mise en page
des documents web écrits en HTML et XHTML. Les feuilles de style permettent de séparer la structure
du contenu d’une page web de sa présentation, en décrivant de manière précise comment les
éléments HTML doivent être affichés à l’écran, sur papier ou via d’autres médias.
Les feuilles de style permettent de contrôler des éléments tels que la couleur du texte, la taille des
polices, la disposition des éléments sur la page, les marges, les espacements, les bordures, etc. Elles
offrent également des fonctionnalités avancées telles que les animations, les transitions, et les
adaptations responsives pour rendre les sites web adaptatifs à différents types d’appareils et de
tailles d’écran
En résumé, les feuilles de style sont utilisées pour concevoir et personnaliser l’apparence des pages
web, en permettant aux développeurs de contrôler précisément l’aspect visuel de leur contenu. 🎨
EXERCICE 3
Soit la DTD suivante qui indique que l’ordre d’apparition des éléments identification,
Titre et salaire n’est pas important, donner une solution à l’aide d’un schéma XML qui evite
l’énumération des combinaisons autorisées.
Réponse : Utilisation du constructeur « all »
Tout à fait ! Pour représenter la DTD donnée en utilisant un schéma XML qui évite l’énumération des
combinaisons autorisées, vous pouvez utiliser le constructeur « all » qui spécifie que tous les
éléments énumérés doivent apparaître au moins une fois, sans ordre spécifique. Voici un exemple de
schéma XML utilisant le constructeur « all » pour représenter la DTD donnée :
<xs :element name= »employé »>
<xs :complexType>
<xs :all>
<xs :element name= »identification » type= »xs :string »/>
<xs :element name= »titre » type= »xs :string »/>
<xs :element name= »salaire » type= »xs :decimal »/>
</xs :all>
</xs :complexType>
</xs :element>
Ce schéma XML indique que les éléments identification, titre et salaire peuvent apparaître dans
n’importe quel ordre, sans avoir à énumérer toutes les combinaisons possibles.
EXERCICE 5
On dispose de la DTD cdtheque.dtd :
==========================
< !ELEMENT cdtheque (cd*) >
< !ATTLIST cdtheque date CDATA #REQUIRED>
< !ATTLIST cdtheque auteur CDATA #REQUIRED>
< !ELEMENT cd (titre,artiste,style ?)>
< !ELEMENT titre (#PCDATA)>
< !ELEMENT style (#PCDATA)>
< !ELEMENT artiste (#PCDATA)>
==========================
1. Créez un document XML vérifiant cette DTD en incluant la DTD dans le
Document.
2. Créez un document XML vérifiant cette DTD en externalisant la DTD.
Bien sûr ! Voici comment vous pouvez procéder :
Créer un document XML incluant la DTD :
< ?xml version= »1.0 » encoding= »UTF-8 » ?>
< !DOCTYPE cdtheque [
< !ELEMENT cdtheque (cd*)>
< !ATTLIST cdtheque date CDATA #REQUIRED>
< !ATTLIST cdtheque auteur CDATA #REQUIRED>
< !ELEMENT cd (titre, artiste, style ?)>
< !ELEMENT titre (#PCDATA)>
< !ELEMENT style (#PCDATA)>
< !ELEMENT artiste (#PCDATA)>
]>
<cdtheque date= »2023-12-17 » auteur= »VotreNom »>
<cd>
<titre>Titre de CD 1</titre>
<artiste>Artiste 1</artiste>
<style>Style 1</style>
</cd>
<cd>
<titre>Titre de CD 2</titre>
<artiste>Artiste 2</artiste>
</cd>
</cdtheque>
Créer un document XML en externalisant la DTD :
Fichier cdtheque.dtd :
< !ELEMENT cdtheque (cd*)>
< !ATTLIST cdtheque date CDATA #REQUIRED>
< !ATTLIST cdtheque auteur CDATA #REQUIRED>
< !ELEMENT cd (titre, artiste, style ?)>
< !ELEMENT titre (#PCDATA)>
< !ELEMENT style (#PCDATA)>
< !ELEMENT artiste (#PCDATA)>
Fichier XML
< ?xml version= »1.0 » encoding= »UTF-8 » ?>
< !DOCTYPE cdtheque SYSTEM « cdtheque.dtd »>
<cdtheque date= »2023-12-17 » auteur= »VotreNom »>
<cd>
<titre>Titre de CD 1</titre>
<artiste>Artiste 1</artiste>
<style>Style 1</style>
</cd>
<cd>
<titre>Titre de CD 2</titre>
<artiste>Artiste 2</artiste>
</cd>
</cdtheque>
Ces deux exemples respectent la DTD que vous avez fournie. N’hésitez pas à les adapter en fonction
de vos besoins spécifiques. 😊
EXERCICE 6
On souhaite gérer une filmographie. Quelle va être la structure du document XML
Associé à un film ?
Créer la DTD correspondante.
Bien sûr ! Voici à quoi pourrait ressembler la structure XML pour représenter un film, avec une DTD
correspondante :
< !DOCTYPE filmographie [
< !ELEMENT filmographie (film+)>
< !ELEMENT film (titre, année, realisateur, genre, acteurs, resume)>
< !ELEMENT titre (#PCDATA)>
< !ELEMENT année (#PCDATA)>
< !ELEMENT realisateur (prénom, nom)>
< !ELEMENT prénom (#PCDATA)>
< !ELEMENT nom (#PCDATA)>
< !ELEMENT genre (#PCDATA)>
< !ELEMENT acteurs (acteur+)>
< !ELEMENT acteur (prénom, nom)>
< !ELEMENT resume (#PCDATA)>
]>
<filmographie>
<film>
<titre>Titre du film</titre>
<année>Année de sortie</année>
<realisateur>
<prénom>Prénom du réalisateur</prénom>
<nom>Nom du réalisateur</nom>
</realisateur>
<genre>Genre du film</genre>
<acteurs>
<acteur>
<prénom>Prénom de l’acteur</prénom>
<nom>Nom de l’acteur</nom>
</acteur>
< !-- … d’autres acteurs
</acteurs>
<resume>Résumé du film</resume>
</film>
< !-- … d’autres films
</filmographie>
Cette structure XML représente une filmographie avec des informations sur chaque film, telles que le
titre, l’année, le réalisateur, le genre, les acteurs et un résumé. La DTD fournit la spécification des
éléments autorisés et de leur structure pour valider un document XML représentant une
filmographie. 📽️
EXERCICE 7
Ecrire un document XML modélisant votre Curriculum Vitae (réfléchir à ce qui doit Etre mémorisé
et comment structurer l’information).
Ecrire la DTD associée.
Bien sûr ! Voici un exemple simple d’un document XML modélisant un Curriculum Vitae, ainsi que sa
DTD associée :
Le document XML :
< ?xml version= »1.0 » encoding= »UTF-8 » ?>
< !DOCTYPE cv SYSTEM « cv.dtd »>
<cv>
<personalInformation>
<name>John Doe</name>
<contact>
<email>[email protected]</email>
<phone>123-456-7890</phone>
<adresse>
<street>123 Main St</street>
<city>Anytown</city>
<zip>12345</zip>
</adresse>
</contact>
</personalInformation>
<éducation>
<dégrée>
<titre>Bachelor of Science</titre>
<major>Computer Science</major>
<université>Université XYZ</université>
<year>2015</year>
</dégrée>
</éducation>
<expérience>
<job>
<titre>Software Développer</titre>
<company>ABC Corp</company>
<year>2015-2018</year>
<description>Developed web applications using Java and Spring framework.</description>
</job>
</expérience>
<skills>
<skill>Java</skill>
<skill>Python</skill>
<skill>HTML/CSS</skill>
</skills>
</cv>
La DTD associée :
< !ELEMENT cv (personalInformation, éducation, expérience, skills)>
< !ELEMENT personalInformation (name, contact)>
< !ELEMENT name (#PCDATA)>
< !ELEMENT contact (email, phone, adresse)>
< !ELEMENT email (#PCDATA)>
< !ELEMENT phone (#PCDATA)>
< !ELEMENT adresse (street, city, zip)>
< !ELEMENT street (#PCDATA)>
< !ELEMENT city (#PCDATA)>
< !ELEMENT zip (#PCDATA)>
< !ELEMENT éducation (dégrée)>
< !ELEMENT dégrée (titre, major, université, year)>
< !ELEMENT titre (#PCDATA)>
< !ELEMENT major (#PCDATA)>
< !ELEMENT université (#PCDATA)>
< !ELEMENT year (#PCDATA)>
< !ELEMENT expérience (job)>
< !ELEMENT job (titre, company, year, description)>
< !ELEMENT skills (skill*)>
< !ELEMENT skill (#PCDATA)>
Cette structure permet de modéliser les informations les plus courantes d’un Curriculum Vitae,
comme les informations personnelles, l’éducation, l’expérience professionnelle et les compétences.