XML - eXtensible Markup Language
Format universel de documents textuels et graphiquesQu'est ce que XML et pourquoi l'utiliser?
XML est un format fondé sur des balises comme HTML, mais
il décrit le contenu plutôt que la présentation
du contenu.
Les balises peuvent avoir aussi des attributs, et cela fait penser
aux langages de programmation à objets. En fait XML peut
être utilisé pour "sérializer" (stocker)
des classes de langages de programmation.
XML tend à se généraliser comme format de document, c'est dorénavant le format de fichiers de Office et LibreOffice.
Comme son nom l'indique, XML est extensible et il sert de base à de nombreux langages descriptifs comme on le verra plus loin.
La première recommandation par le W3C, XML 1.0 date du 16 août 2006 mais son histoire remonte à 1996 comme l'indique l'historique du W3C.
Avantages de XML
Tout type de données peut être décrit par
XML pourvu que l'on fournisse une grammaire de la structure (donc
des balises).
Sa structure arborescente et extensible permet de décrire n'importe quoi. Il est ainsi facile à parser par les logiciels tout en étant lisible par les humains.
Son universalité permet de l'utiliser dans tout contexte, sur tout système.
Puisque les balises décrivent les données brutes,
il est facile d'y faire des recherches.
Définir la grammaire
Avant d'écrire un document XML, il est préférable
d'écrire une DTD (Document Type Declaration). La DTD déclare
une grammaire de balises et le document XML est une instance de
cette grammaire comme un objet est une instance de classe, ou
comme un programme pour un langage.
Le DTD peut être inclus dans le document XML , ou lié
par une URL (adresse web).
Sans ce DTD, le document XML peut être utilisé, mais
non validé, donc on ignore s'il comporte des erreurs quand
aux valeurs contenues. On peut néammoins vérifier
qu'il soit bien formé (balises complètes) avec le
parseur.
On valide les balises d'un document XML avec un DCD ou un schema.
- DCD (Document
Content Description for XML) est un langage qui aide à construire un
schéma en remplaçant les fonctions de DTD pour décrire
les contraintes sur les balises et le contenu des documents. En
outre il peut aussi décrire des types de données
et les relations de bases de données.
DCD incorpore un sous-ensemble de XML-Data, et est un vocabulaire RDF. - Un schema,
comme une dtd, décrit la grammaire des balises pour valider
le document.
Alors que le DTD à sa propre syntaxe, le schéma a la même syntaxe que XML, un autre avantage est qu'il permet s'ajouter aux types prédéfinis, de nouveau types de données.
Format valide pour un document XML
Un document XML à la forme suivante:
<?xml version="1.0" encoding="utf-8" ?> <xml> <balise attribut="valeur" attribut="valeur.." ... contenu éventuel </balise> </xml>
Le fichier commence par un descripteur. Celui-ci est facultatif, mais cela dépend des outils, ils peuvent requérir ces informations de version et d'encodage.
Une balise racine englobe toutes les autres. On l'a appelée ici <xml>, mais ce n'est qu'un exemple. Tout autre nom est possible.
La balise racine peut englober d'autres balises qui chacune peut soit englober d'autres balises, soit contenir un texte. Chacune peut avoir des attributs sous la forme nom = "valeur".
Si une balise n'a pas de contenu, on peut l'écrire sous forme courte sans reprendre la nom en fermeture:
<balise attribut="valeur" />
Beaucoup d'autres formalismes peuvent s'ajouter à cette structure de base, mais celle-ci est suffisante pour la plupart des documents.
Comment utiliser XML
Pour utiliser un document XML, vous avez besoin d'un parseur
qui reconnait la syntaxe et charge le document en mémoire.
Il existe deux sortes de parseurs.
- Dans le premier cas, le document est transformé en une
arborescence en mémoire, dont le contenu est accessible
selon les méthodes du DOM (Document Object Model).
- Il est également possible d'associer des fonctions à
des balises avec les parseurs événementiels de type
"sax".
Les parseurs les plus connus sont indiqués en ressources.
XML, comme HTML a ses feuilles de style, nommées XSL (XML StyleSheet), qui fournissent des règles pour transformer un document XML dans un autre format XML ou non XML (XHTML par exemple).
Des outils ont été standardisés (par le W3C) pour accéder au contenu des documents XML:
- XLink (XML
Linking Language)
Un langage (avec la syntaxe XML), qui peut insérer des ressources pour décrire des hyperliens unidirectionnels (comme ceux de HTML) ou des liens plus complexes. Xlink peut être utilisé avec XPointer. - XPath indique comment atteindre des éléments spécifiques.
- XPointer (XML
Pointer Language)
Un langage qui peut addresser des éléments sélectionnés dans la structure des documents. Il est basé sur XPath. - DOM (Document
Object Model)
Un objet utilisable notamment sur les navigateur permet d'accéder dynamiquement et changer soit le contenu, soit la structure de documents XML. Il propose une interface indépendante des plate-formes et s'applique à HTML autant qu'à XML.
Applications au-delà du stockage des données
La puissance de XML va au-dela du simple stockage de données, il sert aussi de langage d'interface d'application:
- XAML est un format similaire à XUL pour la plateforme .NET et il s'emploie dans le Modern UI (Metro) sur Windows.
- XHTML est une version de HTML compatible avec XML.
- HTML 5, le format de document devenu langage d'interface pour les applications Web.
Extensions pour XML et langages dérivés
XSL (eXtensible
Stylesheet Language)
Un xsl est un ensemble de règles de transformation,
permettant de prendre en compte la structure et des éléments
et attributs choisis dans un document.
Un ensemble de règles qui transforme un document XML en
HTML est le meilleur exemple, mais on peut transformer XML en
toute chose.
La différence entre XSL et XSLT est que xsl est universel
tandis que xslt convertit un document XML uniquement en un autre
document XML.
SVG (Scalable
Vector Graphics)
Une librairie qui décrit des objets graphiques, qui
peut être interfacée dynamiquement avec JavaScript
pour faire des animations. Un document svg peut être affiché
comme une page web avec les versions les plus récentes
des navigateurs (Firefox 1.5 par exemple), avec une extension
autrement.
SMIL (Synchronized Multimedia Integration Language)
Langage descriptif multimédia combinant des données de formes diverses, permettant des présentations et des animations.
XQuery. (XML Query)
Spécification pour utiliser des documents XML comme
des bases de données.
XHTML (XML HTML 4.0)
Réécriture de HTML selon les règles XML,
avec un DTD associé.
XForms (XML Forms)
Définition de formulaires.
RDF
(Ressource Definition Format)
Standard de description de données hétérogène,
incluant des images. Cela ajoute une description structurelle
grobale à la description des éléments.
RSS
C'est un ensemble de formats de syndication, RSS 1.0 étant écrit en RDF, et RSS 2.0 en XML ainsi qu'Atom.
Schéma
Format standard pour valider les documents XML.
Outils et références
Parseurs XML
- Xerces, le parseur XML sur le site Apache. Implémente DOM, Sax et schéma. (C++, Java).
- LibXML. Librairie de parseur en mode arborescence.
- Expat. Librairie de parseur évènementiel.
- SAX. Page du projet de parseur évènementiel.
Autres outils
- Xalan implémente XSLT et XPath pour convertir XML and HTML. (C++, Java).
- Cocoon est un serveur XML. (Java).
- Majix. Convertit un fichier RTF en XML.
- XCheck. Un script pour vérifier qu'un document XML est bien formé, à télécharger
Plus d' infos sur XML
- Spécifications. Toutes les traductions en français des recommandations XML du W3C.