Extensible Markup Language - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Composants et syntaxe d'un document XML

Le modèle sous-jacent de XML est un modèle d'arbre. Un document XML peut donc être vu comme la linéarisation d'un arbre. XDM (XQuery and XPath Data Model) est un modèle utilisé implicitement dans toutes les implémentations basées sur XPath. Les composants principaux de ce modèle sont les nœuds, qui peuvent être de différents types, identifiables dans l'exemple artificiel suivant :

         version="1.0" encoding="UTF-8"?>                <élément-document xmlns="http://exemple.org/" xml:lang=";fr">          <élément>Texte>          <élément>élément répété>          <élément>            <élément>Hiérarchie récursive>          >          <élément>Texte avec<élément>un élément>inclus>          <élément>          <élément attribut="valeur">>        >      

Le nœud document

Dans le modèle XDM, un document contient un unique nœud de type document. Pour être bien formé, un document XML doit avoir un et un seul nœud de type élément fils du nœud document, parfois désigné par « élément racine ».

Le nœud document peut éventuellement avoir des enfants de type commentaire, instruction de traitement ou texte. Un document XML est un arbre dont la racine est un nœud document. Un arbre dont la racine n'est pas nœud document est appelé un fragment XML.

Dans le langage d'accès à un document XML, XPath, le nœud document est abrégé avec la barre oblique /, comme la racine de l'arborescence d'un système de fichiers Unix.

Les éléments <élément>

L'élément a un nom, précisément qualifié au sein d'un espace de noms (), et peut porter tous les types de nœuds : attributs, texte, éléments… Le fait qu'un élément puisse avoir des enfants texte et des enfants éléments a beaucoup de conséquences pour en faire un format de données très souple (comparé par exemple à une table relationnelle). La qualification des noms contribue aussi à la précision sémantique des contenus balisés.

Un exemple de notice bibliographique permettra de mieux montrer le potentiel de ce format, il utilise le vocabulaire Dublin Core.

                   xmlns:dc="http://purl.org/dc/elements/1.1/"          xmlns="http://www.w3.org/1999/xhtml"          xmlns:ex="http://exemple.org">          >[[Astérix le Gaulois]]>          >            >[[Astérix chez les Belges]]>            >[[René Goscinny]]>            >[[Albert Uderzo]]>            >Text>            >              >Astérix chez les Belges> est un album de                href="http://fr.wikipedia.org/wiki/Bande_dessinée">bande dessinée>               de la série Astérix le Gaulois créée par René Goscinny et Albert Uderzo.              Cet album publié en 1979 est le dernier de la série écrit par René Goscinny.            >          >        >      
répétable 
Une même propriété peut être répétée. L'exemple montre comment indiquer qu'un livre a plusieurs auteurs (dc:creator). Dans un format tabulaire, avec un nombre de colonnes défini, ce n'est pas impossible, mais moins spécifié.
ordonné 
L'ordre des éléments est conservé. Quel que soit le langage employé, un outil XML doit permettre de distinguer le premier auteur du second (exemple : en XPath, /ex:collection/ex:livre/dc:creator[1] = "[[René Goscinny]]", /ex:collection/ex:livre/dc:creator[2] = "[[Albert Uderzo]]").
hiérarchique 
Les éléments XML sont imbricables. Ceci rend ce format particulièrement adapté à représenter des arbres. Ici, on s'est limité à 2 niveaux (/ex:collection/ex:livre), une collection avec un titre (Astérix le Gaulois), et un exemple d'ouvrage de cette collection (Astérix chez les Belges). XML permet une récursivité complète. Par exemple, un livre, ou une thèse, peut être formaté très économiquement avec un élément
. La partie 2.3.5 correspondra à une structure d'imbrication XML /section[2]/section[3]/section[5].
mélangeable 
Enfin, ce qui fait qu'XML est plus qu'un format de données, c'est la possibilité de mélanger du texte et des éléments. L'exemple montre comment le texte de la description (dc:description) est enrichi avec des balises XHTML (du gras et un lien ).

Noms qualifiés - Cette souplesse, et l'eXtensibilité de XML est contrôlée par la qualification des noms. Vous aurez remarqué dans l'exemple de code que la plupart des éléments sont des liens. Comme il s'agit de standards, ils disposent d'une documentation officielle en ligne. Pour une notion commune comme un titre, cela ne semble pas nécessaire. Mais pour des noms beaucoup plus ambigus, comme type, il est très important de déterminer le vocabulaire dans lequel interpréter le mot. Ainsi, Dublin Core est un vocabulaire de métadonnées bibliographiques, type qualifiera des types de document : Text, Image, Sound… Dans un vocabulaire dédié à la documentation informatique comme Docbook, type a le sens de type de données.

xmlns="URI" - En XML, les noms d'éléments devraient toujours être identifiés par une URI. C'est l'objet des attributs xmlns:* sur l'élément racine de l'exemple (xmlns:dc="http://purl.org/dc/elements/1.1/") et des préfixes sur certains noms (dc:type est identifié par l'URI de l'attribut xmlns:dc). Il n'est pas nécessaire ici de détailler plus cette syntaxe. L'essentiel est de retenir qu'en XML, le nom d'un élément ne se choisit pas au hasard, qu'il résulte d'un travail de modélisation, qu'il est précisément identifié.

Le texte

Un nœud texte n'a pas d'enfants, il est toujours contenu dans un élément. Par défaut, il sera traité comme de l'Unicode en UTF-8 ou UTF-16. XML permet de spécifier d'autres encodages dans le prologue (ex. : ). Ce simple choix a déjà apporté une énorme simplification aux problèmes d'encodages que l'on rencontre encore en informatique.

Le traitement des espaces et sauts de lignes en XML peut apporter quelques surprises. Sous sa forme texte, un fichier XML sera probablement indenté par son auteur. La recommandation n'oblige pas un processeur XML à conserver ces espaces non significatifs, sauf instructions particulières (exemple : bloc préformaté

). Il en résulte que le texte XML proposé à un processeur peut ne pas revenir à l'identique après traitement, ce qui cause des désagréments dans certaines applications.

texte mêlé - Dans le cas des textes mêlés (exemple :

du texte en gras dans un paragraphe

), l'élément parent a plusieurs enfants texte et éléments qui se succèdent, ce n'est pas le texte qui contient un élément (exemple : p/node()[1]="du texte en ", p/node()[2]="gras", p/node()[3]=" dans un paragraphe"). Cette petite remarque n'a d'importance que dans certaines interfaces de manipulation XML (DOM), elle permet aussi de fixer la définition.

Les attributs, <élément attribut="valeur">

Un attribut est un nom et une valeur, la valeur peut être vide , mais pas nulle (cette écriture était permise en SGML, on la rencontre encore parfois à propos d'HTML, mais elle n'est pas acceptée en XML). Un nom d'attribut a les mêmes possibilités de qualification qu'un nom d'élément.

La valeur est un texte sans élément (ni autres nœuds). Un attribut est toujours porté par un élément. Un attribut est unique. La répétition d'un attribut de même nom sur le même élément provoquera une erreur du processeur XML. L'ordre des attributs n'est pas significatif, et peut ne pas être conservé dans certains traitements. et sont équivalents pour un processeur XML, même s'ils sont écrits différemment.

Les commentaires

En XML, les commentaires sont délimités par . Le contenu d'un commentaire ne sera pas interprété.

.

La chaîne de caractères « -- », pour des raisons de compatibilité avec SGML, ne peut apparaître dans le contenu du commentaire.

Style - Il est théoriquement possible de traiter le contenu des commentaires XML avec un processeur. Un exemple où cela peut être utile : transformer de la programmation en XML (exemple : XSLT) afin d'en fournir la documentation. Mais il s'agit d'un cas limite, une application XML ne doit pas s'appuyer sur le contenu des commentaires.

Le prologue

En XML, le prologue est constitué de la déclaration XML , et de la déclaration de type de document (DOCTYPE). La déclaration XML est obligatoire à partir de la version 1.1. La déclaration DOCTYPE avait une grande importance en SGML. Elle attache le document traité par un processeur à son schéma ( DTD, Document Type Definition, « Définition de Type de Document »), afin de le valider, et d'interpréter certains raccourcis (les entités). Désormais, il existe plusieurs langages de validation, et parfois plusieurs manières de les attacher. La déclaration DOCTYPE n'a plus la même importance.

Autres nœuds

Afin d'être complet, on mentionnera aussi :

  • Les instructions de traitement, , des nœuds destinés aux logiciels traitant le XML ;
  • Les sections d'échappement, ne sera pas considéré comme un élément ]]>.

Page générée en 0.163 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales
Version anglaise | Version allemande | Version espagnole | Version portugaise