Cours Structuration d'un document XML
Site: | PLATEFORME DE MUTUALISATION DES ENSEIGNEMENTS TRANSVERSAUX |
Cours: | L3 D2A : Technologies XML |
Livre: | Cours Structuration d'un document XML |
Imprimé par: | Visiteur anonyme |
Date: | jeudi 21 novembre 2024, 15:09 |
Description
Consigne: ce document contient l'essentiel de ce qu'il faut lire pour réaliser les activités dans cette séquence du cours.
-Chaque étudiant est invité à le lire et se l'approprier avant de démarrer les activités prévues
1. Présentation de XML
Le Langage XML (eXtensible Markup Language) est une spécification du W3C depuis Février 1998. Il n'est pas une nouveauté, mais une succession d'un ensemble de technologies tels que le SGML et le HTML.
Contrairement à HTML, XML permet de structurer des données en utilisant ses propres balises, ce qui fait de lui un langage extensible et en employant un format texte comme support. Par exemple l'information: L'étudiant Moussa Gaye habitant bambey et agé de 18 ans peut être décrite sous forme d'un document XML comm suit:
<etudiant>
<nom>GAYE</nom>
<prenom>Moussa</prenom>
<adresse>Bambey</adresse>
<age>18</age>
</etudiant>
Dans cet exemple <etudiant>, <nom>, <prenom>, <adresse> et <age> sont des éléments, balises ou tags. Les balises sont des chaînes de carractères unicode, encadrées par les carractères "<" et ">". Entre une balise de début <etudiant> et la balise de fin correspondante </etudiant>, on peut trouver du texte et/ou d'autres balises.
Lorsque des éléments sont imbriqués dans d'autres éléments, ils génèrent des structures arborescentes.
2. Principe du Langage XML
La possibilité qu'offre XML de définir ses propres balises n'est pas sans conséquences. Lorsque deux apllications par exemple échangent des informations. Il est en effet nécessaire de définir des règles que les documents doivent respecter. Sans cela, il est impossible d'échanger ou de traiter de manière automatique les documents.
Comme tout langage, pour se comprendre, il est impératif de définir un vocabulaire qui est l'ensemble des noms de balises utilisables, mais aussi une grammaire qui fixe la relation qui existe entre ces différentes balises (leur imbrication) et leurs natures (simples ou complexes).
Les processeurs XML sont des programmes permettant de vérifier que des documents XML sont bien formés.
Ils traitent le contenu des éléments de manière déterministe. On parle aussi d’analyseurs syntaxiques XML (XML parsers)
Le fonctionnement d’un processeur XML peut être décrit de la manière suivante :
- À la rencontre d’une balise de début, entrer dans l’état de traitement de cette balise
- À la rencontre de la balise de fin correspondante, sortir de cet état et revenir à l’état précédent
- S’il n’y a pas d’état précédent, alors on vient de quitter l’état de traitement de l’élément racine : par conséquent, le document est bien formé.
- Si une balise de fin ne correspond pas à l’état en cours, le document est mal formé
Quelques exemples:
mauvaise imbrication
<personne>
<nom><prenom></nom></prenom>
</personne>
sensibilité à la casse
<personne></Personne>
balise non fermée
<personne>
<nom><prenom></prenom>
<personne>
Quelques exemples de langage basés sur XML:
MathML Mathematical Markup Language notation mathématique sur le web
CML Chemical Markup Language pour la publication Internet des formules chimiques, de molécules
VML Vector Markup Language langage de balisage d'information graphique vectorielle
SMIL Synchronized Multimedia Integration Language pour la création multimédia, il spécifie comment et quand des éléments multimédia peuvent apparaître dans une page web
WML Wireless Markup Language le langage de balisage pour l'internet mobile
3. Format d'un document XML
La structure logique d'un document XML peut être représsentée sous forme d'une arborescence hierrachique et ordonnée.
Le document XML a un élément racine contenant un ensemble d'éléments simples (en vert ici: c'est des éléments qui ne peuvent contenir d'autres éléments, ils constituent les feuilles de l'arbre) et complexes (en bleu ici, c'est des éléments pouvant contenir d'autres).
En plus des éléments, le document peut contenir éventuellement des déclarations contenues dans le préambule, des commentaires et d'instructions de traitement.
Le préambule n'est pas obligatoire, mais lorsqu'il est présent, doit préceder le corps du document XML (la partie délimitée par l'élément racine). Il peut contenir la déclaration XML, la déclaration du type de document et des instructions de taritement.
-
Déclaration XML: <?xml version='1.0" encoding="ISO-8859-1" ?>.
La spécification XML précise qu'elle doit être placée au début d'un document XML. Elle renseigne sur trois choses:
-
version: qui donne des informations sur la version XML utilisée (ici 1.0);
-
enconding: qui précise le type de codage utilisé, c'est à dire les jeux de caractères permis. par exemple si encoding="UTF-8" (le document accepte les jeux de carratères universel sur 8 bit; s'il est égale à "ISO-8859-1", il s'agit du latin1(langues d'Europe de l'ouest et de l'Amerique latine);
-
standalone: spécifie que le document est autonome ou pas. Lorsque sa valeur est égale à "yes", cela signifie que tout ce qui permet de valider le document se trouve en lui même; "no" dans le cas contraire.
- Déclaration du type de document: Elle est obligatoire pour la validation du document XML. Elle permet de référencer deux sortes d'entité que sont la définition du type de document (DTD) et les entités autres que les DTD. Exemple: <!DOCTYPE personnes SYSTEM "document.dtd" >.
- Instructions de traitement: Elles sont destinées aux applications qui manipulent les documents XML. Par exemple l'instruction <?xml-stylesheet type="text/css" href="presentation.css" ?> dans un document indique au navigateur de présenter les données XML en appliquant la feuille de style "presentation.css".
Le reste du document (à partir de l'élément racine) contient l'instance de la base de données XML. C'est la partie la plus dynamique, car à tout moment on peut supprimer, mettre à jour ou ajouter un nouveau élément.
4. Entité XML
Les entités XML sont des fragments nommés d'un document XML. Ils doivent être définis dans l'entête du document ou dans le DTD et peuvent être référencées à une ou plusieurs fois. On peut les utiliser pour gagner du temps dans les mises à jour, mémoriser des caractères parculiers ou des phrases fréquentes. On distingue plusieurs types d'entités:
- Entité paramètre: elle n'apparait que dans les définitions des DTD et permet d'associer un alias à une partie de la déclaration des DTD. Sa syntaxe est la suivante: <!ENTITY % nom "valeur">. Pour utiliser l'entité paramètre dans notre DTD, il suffit de faire %nom;.
- Entité générale: Elle permet d'associer un alias à une information afin de pouvoir l'utiliser dans le document XML. Sa syntaxe est la suivante: <!ENTITY nom "valeur">. Pour l'utiliser, il suffit de l'appler avec &nom;.
-
Il existe aussi des entités carractères, qui permmettent de substituer par exemples des carractères non disponibles sur la station de travail ( par exemple © s’écrit ©) et des entités prédéfinies comme les délimiteurs XML (< (<) > (>) ...).
Des exemples d'entités sont disponibles ici
Par exemple :
<!ENTITY % ident ID #REQUIRED>
<!ENTITY D2AW "Développement et Administration d'Applications Web">
<!ENTITY part1 SYSTEM "mon_site/part.xml">
Pour faire référence à ces entités dans un document, on fait par exemple:
<!ATTLIST renvoi cible %ident> au lieu de : <!ATTLIST renvoi cible ID #REQUIRED>
5. Espaces de nom
L'importation d'éléments externes dans un document n'est pas sans conséquence.
Lorsque nous avons dans un même document XML, des éléments qui sont au même niveau, qui portent le même nom et qui sont différents du point de vue sémantique, il y a conflit de noms.
Ces conflits peuvent être évités en utilisant les espaces de nom. Les espaces de nom sont un moyen d'identifier de façon universelle les noms d'élément utilisés dans un document.
Les espaces de nom peuvent définis par défaut ou avec des préfixes.
La déclaration d'un espace de nom par défaut se fait avec l'attribut:
xmlns="URI de l'espace de noms"
Exemple:
<?xml version="1.0" encoding="UTF-8" ?>
<dossier>
<!-- la dénomination suivante désigne un étudiant -->
<dénomination xmlns="http://uadb.edu.sn/etudiants">
Abdou Gaye
</dénomination>
<!-- la dénomination suivante désigne un diplôme -->
<dénomination xmlns="http://uadb.edu.sn/diplomes">
Mastère
</dénomination>
<!-- la dénomination suivante désigne une matière -->
<dénomination xmlns="http://uadb.edu.sn/matieres">
Informatique
</dénomination>
</dossier>
La déclaration d'un espace par préfixe se fait en utilisant la notation suivante:
xmlns:préfixe="URI de l'espace de noms"
Exemple:
<base xmlns:liv="monSite/dtdLivre.xml">
<!-- Ici les livres sont définis avec un espace de nom préfixé-->
<liv:livre>
<liv:titre>Une si longue lettre</liv:titre>
<liv:auteur>Mariama BA</liv:auteur>
<liv:editeur> Nouvelles éditions africaines</liv:editeur>
<liv:annee>1979</liv:annee>
<liv:livre>
…
<!-- Ici, les livres sont définis en local-->
<livre>
<titre>Une vie de boy</titre>
<auteur>Ferdinand Leopold OYONO</auteur>
<editeur> Éditions R. Julliard</editeur>
<annee>1956</annee>
</livre>
…
</base>