FAQ XML
FAQ XMLConsultez toutes les FAQ
Nombre d'auteurs : 5, nombre de questions : 65, dernière mise à jour : 16 juin 2021
- Qu'est-ce que le xml ?
- Quelles sont les principales utilisations de XML ?
- Qui décide pour le XML et les langages associés ?
- Qu'est qu'une recommandation du W3C ?
- Qu'est ce qu'un document XML bien formé ?
- Qu'est ce qu'un document valide ?
- Qu'est ce qu'un parseur ?
- Qu'est-ce que SAX ?
- Qu'est-ce que DOM ?
- Qu'est ce qu'un espace de noms (namespace) ?
- Pourquoi ai-je des problèmes d'affichage de caractères avec mon xml ?
- Comment utiliser le symbole euro dans mon document XML ?
- Comment modifier correctement via la programmation un xml ?
- Quels outils pour modifier un XML ?
XML (eXtensible Markup Language), est le standard défini par le W3C pour représenter des données dans des documents balisés.
Markup Language: langage de balise, comme le bien connu HTML.
eXtensible: à contrario du HTML, le nombre, le nom et la fonction des balises ne sont pas prédéfinis. La sémantique d'une balise est définie par l'auteur du document XML.
C'est dans ce sens qu'XML est un métalangage.
XML est issu lui-même de SGML, un métalangage standard international.
- Fichier de données structurées pour échanger entre applications ou plates-formes hétérogènes
- Stockage de données ne nécessitant pas un SGBDR (simple fichier)
- Base de données XML, utilisant le langage de requête XQuery
- Séparation des données/codes pour un site Internet (couple XML/XSLT)
- Vocabulaire de certains langages spécialisés, tels que MATHML (calcul), SVG (graphisme vectoriel), ...
- Etc......
C'est le World Wide Web Consortium (W3C) qui est responsable de la création ainsi que des développements de spécifications qui entourent le XML via son groupe de travail XML.
Ce groupe est composé d'experts de divers domaines (souvent recrutés par cooptation).
XML est un format public : aucune société n'est propriétaire de son développement. La spécification v1.0 a été entérinée par le W3C (recommandation du 10 février 1998).
Le W3C ne développe que des spécifications, pas d'implémentations. Ce n'est donc pas parce qu'une spécification a été publiée qu'il existe des outils l'utilisant, à l'inverse, les développeurs n'attendent pas toujours que la spécification soit définitive pour l'implémenter.
Les spécifications du W3C ne constitue pas des normes, au sens utilisé dans le monde industriel, mais des consensus décidés entre les principaux éditeurs de logiciels et les grandes entreprises utilisatrices, pour éviter une anarchie de technologies Web incompatibles entre elles.
Un projet du W3C passe par différentes phases avant de devenir une spécification :
- Working Draft : Le "brouillon de travail" ou élaboration de travail.
- Candidate Recommendation : version à peu près stable, normalement plus d'ajout de fonctionnalités.
- Recommendation: stade final que doivent respecter les implémentations des spécifications du W3C.
Un document est bien formé s'il respecte les différentes règles de syntaxe de la norme XML.
Cours sur la syntaxe du XML
Un document XML doit être bien formé, cette condition est sine qua non pour permettre son exploitation, mais cela ne garantit en rien que sa structure est conforme à ce qui est attendu, ce qui est critique dans le cadre de l'échange de données XML inter applications. Pour permettre ce contrôle, la grammaire du vocabulaire XML utilisé, l'ordonnancement de ses éléments et attributs, doit être connue et formalisée. Différents langages, les plus répandus étant DTD et W3C XML Schemas, permettent de formaliser cette grammaire, et sont implémentés par la plupart des parseurs, qui sont définis en conséquence comme des parseurs validant. L'opération de validation consiste donc en la comparaison, lors de la lecture d'un document XML par le parseur validant, de la structure du fichier XML avec la grammaire exprimée dans l'un de ces langages. Le document XML sera considéré valide si les deux concordent.
Un parseur est un outil logiciel, un analyseur syntaxique, qui permet à une application cliente de valider (si c'est un parseur validant) un document XML et de le lire, voir de le modifier. Un parseur met à disposition de l'application cliente les données XML lues au travers d'API, les plus répandues étant SAX et DOM. Une autre catégorie de parseurs, plus récente, intègre une technologie PULL, associant les avantages de SAX - défini comme une technologie PUSH - et DOM sans leurs inconvénients. StAX (Streaming API for XML) est un exemple d'API Java Pull implémentée par des parseurs de BEA et Sun.
SAX (Simple API for XML) est une API basée sur un modèle événementiel, qui transforme un document XML en un flux d'évènements déclenchés par la lecture d'éléments syntaxiques XML (balise ouvrante, balise fermante, etc ...). Le modèle est un quelque peu calqué sur celui des interfaces graphiques, l'application cliente devenant un "écouteur d'événement". SAX a comme avantage, grâce à son fonctionnement, de ne lire le code que par petites portions, ce qui lui évite de le charger en mémoire intégralement, contrairement à DOM. Il est donc très intéressant pour la lecture des gros documents. Il ne sera par contre pas adapté aux cas où l'application cliente ne peut pas se contenter d'un parcours linéaire et par "petits bouts" du document XML.
DOM (Document Object Model) est une API permettant d'accéder au contenu d'un document XML sous la forme d'une structure arborescente. Le document XML, après avoir été totalement chargé en mémoire, est accessible au travers d'un ensemble d'objets correspondant aux différents types de noeuds qui s'y trouvent, et exposant les méthodes permettant de parcourir l'arbre, de façon hiérarchique ou transversale. L'approche diffère donc totalement de celle de SAX, bien qu'un arbre DOM puisse être construit en utilisant ce dernier. DOM est une recommandation du W3C, proposée en plusieurs versions (level) proposant des fonctionnalités croissantes et dont la compatibilité est ascendante ; Le Level 1 est devenue une recommandation le 1er octobre 98, le Level 2 (XML) le 13 novembre 2000, et tous les éléments du level 3 ne sont pas encore des recommandations à ce jour.
Il existe des implémentations de DOM dans pratiquement tous les langages interprétés ou compilés existant pouvant lire des documents XML.
Les espaces de noms permettent à XML d'être un métalangage, en distinguant les vocabulaires XML entre eux.
Un espace de noms XML a ainsi le même rôle que son homologue en Java ou C++, celui d'éviter les collisions de noms.
Chaque vocabulaire XML dispose d'un espace de noms identifié par un URI unique, par exemple celui de XSLT est identifié par l'URI http://www.w3.org/1999/XSL/Transform.
L'espace de noms est mis en oeuvre en plaçant un préfixe devant chaque élément et attribut, le préfixe étant associé à l'URI de cet espace de noms.
Avant de pouvoir être utilisé, un espace de nom et son préfixe associé doivent être déclaré, sous forme d'un attribut placé généralement dans l'élément racine,
et préfixé par le préfixe spécial xmlns. Par exemple:
<
xsl
:
stylesheet
version
=
"1.0"
xmlns
:
xsl
=
"http://www.w3.org/1999/XSL/Transform"
>
L'attribut xmlns:xsl indique au parseur XML que tous les éléments et attributs préfixés par xsl, et qui sont fils de <xsl:stylesheet>, appartiennent à l'espace de noms de XSLT, identifié par l'URI http://www.w3.org/1999/XSL/Transform.
Si vous créez votre propre vocabulaire XML, il est fortement conseillé de lui attribuer un URI qui délimitera son espace de noms, et de lui attacher un préfixe que vous utiliserez dans vos documents. Cet espace de noms ne sera pas très utile tant que vos documents seront traités isolément, par contre il deviendra indispensable quand vous "mixerez" vos éléments à ceux d'autres vocabulaires XML dans un même document, car il vous permettra d'éliminer toute ambiguïté si les deux vocabulaires emploient les mêmes noms d'éléments ou d'attributs. Un exemple de "mélange" de vocabulaires XML, assez fréquemment rencontré, est l'introduction d'éléments personnalisés dans des documents XHTML.
Il est probable que la valeur de l'attribut encoding figurant dans le prologue XML de votre document, et qui est destiné à
indiquer au parseur XML quel est l'encodage qui y est utilisé, ne corresponde pas à l'encodage réel, celui qui a été utilisé pour créer le document.
Cela se manifeste souvent, pour les documents comportant du texte en français, par un problème d'affichage des caractères accentués lors de leur affichage
dans un éditeur XML, ou par des erreurs lors du parsing du document.
<?xml version="1.0" encoding="ISO-8859-1"?>
Il est également important de noter que quand dans le cas où l'attribut encoding n'est pas renseigné, le parseur XML considère par défaut que l'encodage du document est UTF-8. Il est donc fortement conseillé de toujours spécifier quel est l'encodage utilisé.
Le symbole Euro peut être utilisé littéralement (directement tapé au clavier) dans les documents XML déclarant le codage ISO-8859-15 dans leur prologue ; Pour les autres encodages, utilisez le caractère Unicode correspondant : €
Pour cela il faut utiliser le parseur DOMet la librairie/les objets qui lui sont associés dans le langage utilisé
Un fichier XML est avant tout un fichier texte, n'importe quel éditeur texte permet donc de le modifier, il faut juste dans ce cas vérifier que les modifications éffectués ont laissé le fichier bien formé.
Pour des outils plus spécialisés voir le débat : Quel est pour vous le meilleur éditeur xml ?