Vous êtes sur la page 1sur 24

Extensible Markup Language

Extensible Markup Language


Extensible Markup Language
Extension de fichier :

XML

.xml

Type MIME :

application/xml, text/xml

Dvelopp par :

World Wide Web Consortium

Type de format :

langage de balisage

Standard(s) :

1.0 (5e dition)

Spcification :

Format ouvert

(Extensible

[2]

[1]

1.1 (2e dition)

[3]

Markup

Language (en)[4] , langage


de balisage extensible ) est
un langage informatique de
balisage gnrique. Il sert
essentiellement

stocker/transfrer
des
donnes de type texte Unicode
structur
en
champs
arborescents. Le World Wide
Web
Consortium
(W3C),
promoteur
de
standards
Un exemple de fichier XML. Le document reprsente ici une recette
favorisant
l'change
de cuisine.
d'informations sur Internet,
recommande la syntaxe XML pour exprimer des langages de balisages spcifiques. De
nombreux langages respectent la syntaxe XML : XHTML, SVG, XSLT, etc.
Son objectif initial est de faciliter l'change automatis de contenus entre systmes
d'informations htrognes (interoprabilit). XML est une simplification de SGML dont il
retient les principes essentiels comme :
la structure d'un document XML est dfinissable et validable par un schma,
un document XML est entirement transformable dans un autre document XML.
Cette syntaxe est reconnaissable par son usage des chevrons (< >).

Objectif initial
L'objectif initial de XML est expliqu au dbut de la spcification du 10fvrier1998, la
phrase est toujours d'actualit : Its goal is to enable generic SGML to be served, received,
and processed on the web in the way that is now possible with HTML. (en) [5], Son but
est de permettre du SGML gnrique d'tre transmis, reu et trait sur le web de la
mme manire que l'est HTML aujourd'hui. (fr) [6]. SGML est un langage de balisage,
employ dans les industries de la documentation et de l'dition. En adoptant cette syntaxe
pour HTML, Tim Berners-Lee confrontait une technologie complexe de plus en plus
d'utilisateurs. L'objectif d' XML tait de dfinir un langage aussi gnrique, mais plus
simple : XML has been designed for ease of implementation (en) [7], XML a t conu

Extensible Markup Language


pour une facilit de mise en uvre (fr)

2
[8]

Un groupe de travail a runi au sein du World Wide Web Consortium (W3C) de grands
noms dans le monde SGML (dont Jon Bosak, James Clark, etc.) ; il est l'origine de la
spcification signe par :
Michael Sperberg-McQueen, alors diteur en chef de la DTD TEI ;
Tim Bray, qui a notamment conduit l'informatisation du Oxford English Dictionary ;
Jean Paoli (Microsoft).
Tim Bray, dans son Annotated XML Specification (en) [9] la spcification XML annote ,
explique plus longuement le contexte qui a rendu possible ce standard, en mentionnant
notamment les contributions dcisives de James Clark. la lumire des annes passes,
cette spcification a rempli l'objectif qu'elle se fixait, XML a t largement suivi et favorise
l'interoprabilit. Plusieurs choix ont contribu ce succs.
Unicode - Par dfaut, SGML tait en ASCII (alphabet latin sans lettre accentue). Il
apportait un systme d'encodage pour les autres signes, les entits caractres que l'on
trouve encore parfois en HTML (exemple : pour ). En 1996, apparat la version 2.0
d'Unicode, XML adoptera cet encodage par dfaut.
Dlimitation explicite du contenu - SGML tait orient pour la saisie humaine de
textes structurs, sur des machines moins puissantes qu'aujourd'hui. Il autorisait
beaucoup de raccourcis. HTML conserve par exemple les balises fermeture optionnelle
(exemple : <li>). Ces possibilits compliquaient l'implmentation de la norme. En XML,
toute balise ouverte doit tre ferme.
Espace de noms - SGML insistait surtout sur la validation, sur la conformit un
modle contraignant. XML prvoyait un usage plus souple de l'information structure, il
spcifie un moyen de faire cohabiter plusieurs vocabulaires de balises dans un mme
document.
Au del de HTML, le W3C avait d'autres projets pour lesquels une syntaxe plus facilement
extensible tait ncessaire. Ces directions ont annonc une trs grande plasticit de XML
pour de nombreux usages. SGML tait une technologie de niche, sa simplification l'a
universalis avec Internet. Il pntre dsormais la plupart des secteurs de l'informatique.
Mais avant de dtailler ces utilisations, il peut tre utile de prciser un peu ce que c'est.

Versions
La version 1.0 d'XML a t publie le 10fvrier1998.
La version 1.1 publie le 4fvrier2004 apporte des amliorations dans le support des
diffrentes versions d'Unicode.
Le W3C recommande aux processeurs XML de reconnatre les deux versions, bien que la
premire version soit beaucoup plus rpandue que la seconde.

Extensible Markup Language

Comparaison d'autres formats


Pour savoir quoi ressemble du XML, le mieux est certainement d'en voir. Commenons
par un exemple simplifi. Il propose une transposition du dbut de cet article dans un
langage XML appliqu la documentation technique, DocBook.
<!-- Un petit document XML, en Docbook -->
<article xmlns="http://docbook.org/ns/docbook">
<title>Extensible Markup Language</title>
<para>
<acronym>XML</acronym> (Extensible Markup Language,
langage de balisage extensible )...
</para>
</article>
Dans ce code, chacun peut identifier des portions de texte (exemple : Extensible, XML) et
des mots cls encadrs de chevrons (<, >) : <article>, <title>, <para> Ce document est
ouvert par le mot cl <article>, et clos par </article>. Notez la barre oblique, elle signifie
la fermeture de la balise article. En XML, une balise doit toujours tre ferme. l'intrieur
de cet article, il y a un titre (<title [10]/>), un paragraphe (<para [11]/>), et un acronyme
(<acronym [12]/>).
Ce qui est spcifique XML, c'est le choix des chevrons pour identifier les balises, et
l'obligation de les fermer. Les mots cls ne sont pas dfinis par la norme XML, mais par le
vocabulaire choisi. En XHTML, l'lment racine aurait t <html [13]>, en XSLT, cela peut
tre <xsl:stylesheet [14]> ou <xsl:transform [15]>. Ceci illustre la nature extensible d'XML.
Ce n'est pas un jeu de noms rservs (exemple : echo, for, public, function, class), mais
plutt des caractres rservs permettant de dfinir un langage .
Cet exemple illustre une autre spcificit de ce format. part SGML, peu d'autres syntaxes
permettent de sparer la dfinition smantique de l'information (qu'est-ce qui est titre, lien,
section), de l'apparence qu'on lui souhaite (aujourd'hui un titre est soulign, demain on le
voudra peut-tre en bleu). Cela fait d'XML un excellent format pour conserver des textes ou
des donnes. Pour s'en convaincre, regardons ce que la mme information donne dans
d'autres formats.

Formats binaires (un exemple Microsoft Word)


Les logiciels, surtout pour le grand public, aboutissent gnralement des fichiers. Le
format se soucie d'abord d'tre fiable et performant, mais est-il changeable ? Le format
d'enregistrement natif du traitement de texte Word est l'exemple du format binaire le plus
dploy[rf.ncessaire]. Il n'est pas lisible par l'humain. Le texte est difficile extraire, le lien
avec sa structuration (gras, italique) est difficile reconstruire. Dans la pratique, un
document Word pose beaucoup de problmes de conservation sur le long terme.

> !

bjbj%%

Extensible Markup Language


XML (Extensible Markup Language, langage de balisage extensible )
i 8 @ 8 N o r m a l

CJ _HaJ mHsHtHN @ N T i t r e
1

Extensible Markup Language


[ beaucoup d'informations binaires supprimes ]

F
Document Microsoft Word MSWordDoc
Word.Document.8 9q
L'diteur, Microsoft, propose dsormais un format d'enregistrement en XML.

RTF (Rich Text Format)


Afin de favoriser l'change avec d'autres traitements de texte, Microsoft proposa RTF Rich
Text Format format texte riche (1987). Ce n'est pas un format binaire, les commandes
sont inscrites en texte lisible, mais elles ne sont pas destines tre crites par un humain.
{\rtf
{\f2\fs36\b Extensible Markup Language}\par
{\b XML} (Extensible Markup Language,
langage de balisage extensible )...
\par
}
On retrouve le besoin d'encadrer du contenu avec un marqueur (ici les accolades {}),
d'attacher des proprits ces groupes. Ainsi, {\b XML} indique que les lettres XML sont
en gras, bold : \b. Pour le titre, humains comme logiciels ne peuvent pas l'identifier par
"\f2\fs36\b", ce code indique en fait l'apparence du paragraphe (gras, gros). Ce format a
montr qu'il pouvait fonctionner dans des logiciels, mais sa croissante complexit nous
instruit sur ses limites. Il est difficilement extensible, et en tous cas, inutilisable pour
structurer la smantique d'un texte.

TEX
Donald Knuth, auteur de The Art of Computer Programming l'Art de la programmation
s'est interrompu en 1977, excd par la mauvaise qualit d'impression de ses ouvrages. Il
dveloppa TEX, une syntaxe trs labore destine l'criture humaine, spcialement
puissante pour les quations mathmatiques. On remarquera que RTF lui a repris ses
sparateurs (\, {, }), mais pas son systme de macros pour factoriser les commandes.
\documentclass[a4paper, 11pt]{article}
\title{Extensible Markup Language}
\begin{document}
\maketitle
\end{document}
TEX reste le standard de l'dition scientifique de qualit, en particulier pour la mise en
forme des quations complexes. Toutefois, cela reste un langage de programmation
d'apparence, et mme avec les macros, il n'est pas conu ds le dpart pour structurer un
contenu indpendamment de sa destination.

Extensible Markup Language

wiki
Une syntaxe wiki sait aussi sparer le contenu de la prsentation.
=={{lang|en|Extensible Markup Language}}==
'''XML''' ({{lang|en|Extensible Markup Language}},
langage de balisage extensible )
Cependant, cette structuration repose ici sur des squences de caractres particulires
(===, '''). Or, le nombre de caractres sans signification n'est pas indfini. Un tel format
peut tre appropri pour un seul type de document, mais ce n'est pas une syntaxe
gnrique et facilement extensible.

XML, format textuel, structur, et extensible


Compar aux langages plus haut, XML est une syntaxe gnrique et extensible. Il permet
de structurer une grande varit de contenus, car son langage (vocabulaire et
grammaire) peut tre redfini.

Composants d'un document XML : les nuds


La plupart des composants d'un document XML[16] peuvent tre reprsents par un arbre.
Ce sont donc des nuds. Ce modle fait d'ailleurs l'objet d'une dfinition trs prcise (DOM
Document Object Model modle objet de document (XML) ), afin de permettre des
langages de programmation de manipuler du XML. Nous nous limiterons numrer les
types de nuds fondamentaux, que l'on peut identifier dans l'exemple artificiel suivant.
<?xml version="1.0" encoding="UTF-8"?>
<!-- '''Commentaire''' -->
<lment-document xmlns="http://exemple.org/" xml:lang=";fr">
<lment>Texte</lment>
<lment>lment rpt</lment>
<lment>
<lment>Hirarchie rcursive</lment>
</lment>
<lment>Texte avec<lment>un lment</lment>inclus</lment>
<lment/><!-- lment vide -->
<lment attribut="valeur"></lment>
</lment-document>

Extensible Markup Language

La racine du document /
En informatique, un arbre a gnralement une et une seule racine (ce qui n'a pas
d'anctres). La racine d'un document XML se situe donc derrire tous les nuds (sauf le
prologue, qui n'est pas un nud). Dans un langage d'accs un document XML, XPath, la
racine du document est note avec la barre oblique /, comme l'arbre d'un systme de
fichiers Unix.
Pour tre bien form, un document XML doit avoir un et un seul lment la racine, parfois
dsign par lment document . La racine accepte aussi les commentaires, et des
instructions de traitement, mais surtout pas de texte.

Les lments <lment/>


L'lment[17] a un nom, prcisment qualifi, et peut porter tous les types de nuds :
attributs, texte, lments Le fait qu'un lment puisse avoir des enfants texte et des
enfants lments a beaucoup de consquences pour en faire un format de donnes trs
souple (compar par exemple une table relationnelle). La qualification des noms contribue
aussi la prcision smantique des contenus baliss.
Un exemple de notice bibliographique permettra de mieux montrer le potentiel de ce
format, il utilise le vocabulaire Dublin Core.
<ex:collection
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:ex="http://exemple.org">
<dc:title>[[Astrix le Gaulois]]</dc:title>
<ex:livre>
<dc:title>[[Astrix chez les Belges]]</dc:title>
<dc:creator>[[Ren Goscinny]]</dc:creator>
<dc:creator>[[Albert Uderzo]]</dc:creator>
<dc:type>Text</dc:type>
<dc:description>
<b>Astrix chez les Belges</b> est un album de
<a href="http://fr.wikipedia.org/wiki/Bande_dessine">bande dessine</a>
de la srie Astrix le Gaulois cre par Ren Goscinny et
Albert Uderzo.
Cet album publi en 1979 est le dernier de la srie crit par
Ren Goscinny.
</dc:description>
</ex:livre>
</ex:collection>

rptable
Une mme proprit peut tre rpte. L'exemple montre comment indiquer qu'un
livre a plusieurs auteurs (dc:creator [18]). Dans un format tabulaire, avec un nombre de
colonnes dfini, ce n'est pas impossible, mais moins spcifi.
ordonn

Extensible Markup Language


L'ordre des lments 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]]").
hirarchique
Les lments XML sont imbricables. Ceci rend ce format particulirement adapt
reprsenter des arbres. Ici, on s'est limit 2 niveaux (/ex:collection/ex:livre),
une collection avec un titre (Astrix le Gaulois), et un exemple d'ouvrage de cette
collection (Astrix chez les Belges). XML permet une rcursivit complte. Par
exemple, un livre, ou une thse, peut tre format trs conomiquement avec un
lment <section [19]>. La partie 2.3.5 correspondra une structure d'imbrication
XML /section[2]/section[3]/section[5].
mlangeable
Enfin, ce qui fait qu'XML est plus qu'un format de donnes, c'est la possibilit de
mlanger du texte et des lments. L'exemple montre comment le texte de la
description (dc:description [20]) est enrichi avec des balises XHTML (du gras <b [21]>
et un lien <a [22]>).
Noms qualifis - Cette souplesse, et l'eXtensibilit de XML est contrle par la
qualification des noms. Vous aurez remarqu dans l'exemple de code que la plupart des
lments 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
ncessaire. Mais pour des noms beaucoup plus ambigus, comme type, il est trs important
de dterminer le vocabulaire dans lequel interprter le mot. Ainsi, Dublin Core est un
vocabulaire de mtadonnes bibliographiques, type [23] qualifiera des types de document :
Text, Image, Sound Dans un vocabulaire ddi la documentation informatique comme
Docbook, type [24] a le sens de type de donnes.
xmlns="URI" - En XML, les noms d'lments devraient toujours tre identifis par une
URI. C'est l'objet des attributs xmlns:* sur l'lment racine de l'exemple
(xmlns:dc="http:/ / purl. org/ dc/ elements/ 1. 1/ ") et des prfixes sur certains
noms (dc:type est identifi par l'URI de l'attribut xmlns:dc). Il n'est pas ncessaire ici de
dtailler plus cette syntaxe. L'essentiel est de retenir qu'en XML, le nom d'un lment ne se
choisit pas au hasard, qu'il rsulte d'un travail de modlisation, qu'il est prcisment
identifi.

Le texte
Un nud texte[25] n'a pas d'enfants, il est toujours contenu dans un lment. Par dfaut, il
sera trait comme de l'Unicode en UTF-8 ou UTF-16. XML permet de spcifier d'autres
encodages dans le prologue (ex. : <?xml version="1.0" encoding="ISO-8859-1"?>). Ce
simple choix a dj apport une norme simplification aux problmes d'encodages que l'on
rencontre encore en informatique.
Le traitement des espaces et sauts de lignes en XML[26] 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 particulires (exemple : bloc prformat <pre [27]>). Il en rsulte que le
texte XML propos un processeur peut ne pas revenir l'identique aprs traitement, ce
qui cause des dsagrments dans certaines applications.

Extensible Markup Language


texte ml - Dans le cas des textes mls (exemple : <p> du texte en <b>gras</b> dans
un paragraphe</p>), l'lment parent a plusieurs enfants texte et lments qui se
succdent, ce n'est pas le texte qui contient un lment (exemple : p/node()[1]="du texte en
", p/node()[2]="<b>gras</b>", 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 dfinition.

Les attributs, <lment attribut="valeur"/>


Un attribut est un nom et une valeur, la valeur peut tre vide <element attribut=""/>, mais
pas nulle <s><element attribut> (cette criture tait permise en SGML, on la rencontre
encore parfois propos d'HTML, mais elle n'est pas accepte en XML). Un nom d'attribut a
les mmes possibilits de qualification qu'un nom d'lment.
La valeur est un texte sans lment (ni autres nuds). Un attribut est toujours port par un
lment. Un attribut est unique. La rptition d'un attribut de mme nom sur le mme
lment provoquera une erreur du processeur XML. L'ordre des attributs n'est pas
significatif, et peut ne pas tre conserv dans certains traitements. <element
attribut1="valeur1"
attribut2="valeur2"/>
et
<element
attribut2="valeur2"
attribut1="valeur1"/> sont quivalents pour un processeur XML, mme s'ils sont crits
diffremment.

Les commentaires <!-- -->


En XML, les commentaires[28] sont dlimits par <!-- et -->. Le contenu d'un commentaire
ne sera pas interprt.
<!-- Cet <lment> est mal form mais cela est autoris dans un commentaire
-->.
La chane de caractres --, pour des raisons de compatibilit avec SGML, ne peut
apparatre dans le contenu du commentaire.
Style - Il est thoriquement 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[29] est constitu de la dclaration XML <?xml version="1.0"?>, et de
la dclaration de type de document (DOCTYPE). La dclaration XML est obligatoire partir
de la version 1.1. La dclaration DOCTYPE avait une grande importance en SGML. Elle
attache le document trait par un processeur son schma (DTD, Document Type
Definition, Dfinition de Type de Document ), afin de le valider, et d'interprter certains
raccourcis (les entits). Dsormais, il existe plusieurs langages de validation, et parfois
plusieurs manires de les attacher. La dclaration DOCTYPE n'a plus la mme importance.

Extensible Markup Language

Autres nuds
Afin d'tre complet on mentionnera aussi :
Les instructions de traitement[30] , <?xml-stylesheet href="transform.xsl"
type="text/xsl"?> <?cl valeur?>, des nuds destins aux logiciels traitant le XML ;
Les sections d'chappement[31] , <![CDATA[<ceci> ne sera pas considr comme un
lment ]]>.

Utilisations et langages drivs


SGML tait une syntaxe gnrique, permettant de dfinir des langages spcialiss, comme
HTML, mais il tait surtout ddi au balisage de documents. En simplifiant SGML, les
concepteurs d'XML prvoyaient d'largir l'usage des chevrons (< >) bien d'autres
emplois, comme par exemple, la programmation. Les premiers langages bass sur XML par
le W3C dessinent plusieurs directions d'utilisation.
1999, RDF Resource Description Framework(en) [32] cadre de description de ressource
(fr) [33]. Ce modle abstrait vise dfinir un rseau de mtadonnes adapt au web,
reprsentable en XML.
1999, XSLT eXtended Stylesheet Language Transformations langage XML de feuilles de
style, transformations . Afin d'employer XML, il faut pouvoir le transformer. James Clark
avait crit un langage quivalent pour SGML (DSSSL, 1996), avec XSLT, il propose une
syntaxe XML, permettant par exemple de transformer un contenu XML vers (x)HTML, ou
XSL-FO.
2000, XSL-FO eXtended Stylesheet Language - Formatting Object langage XML de
feuilles de style - Formatage d'objets . XSL-FO est un langage de description de
document permettant de composer un livre, ou un document PDF. C'tait un complment
indispensable XML pour les industries de l'dition.
Enfin, il fallait une nouvelle syntaxe schma tenant compte des espaces de noms pour
remplacer les DTDs (ce qui deviendra XML Schema).
Quelques mois aprs sa sortie, XML est donc utilis pour encoder des donnes,
programmer des transformations, reprsenter un objet imprimable, et dfinir le schma
d'un document XML. Ceci annonce la varit des utilisations de cette syntaxe. Quelques
annes aprs, le catalogue est beaucoup plus important, couvrant des usages comme :

langage de balisage de documents,


format de donnes,
langage de description de format de document (DSDL),
langage de reprsentation (texte, image),
langage de programmation,
protocole de communication.

Ces catgories permettent une classification approximative des langages base XML (ou
acceptant une expression XML). La liste des langages plus bas repre quelques
spcifications marquantes. Elles ont fait date dans le monde XML. Les succs, ou les
critiques, permettent aussi de montrer quoi XML est bon, et l o il est parfois discut.

Extensible Markup Language

Balisage de document
Le balisage de document est le mtier initial d'XML. Les DTD SGML publiques comme TEI
et Docbook l'ont adopt. XML aurait pu permettre l'apparition de nombreux autres
schmas. On assiste plutt l'apparition de vocabulaires spcialiss, et combinables
l'exemple de la modularisation XHTML[34] :
XHTML - eXtensible HyperText Markup Language, Langage de balisage hypertexte
Docbook - documentation technique, 1991 1997 O'Reilly, 1998 OASIS, (Norman
Walsh).
TEI - Text Encoding Initiative, balisage de textes acadmiques, 1987, 1994, 1999, 2002,
Text Encoding Initiative [35].
EAD Encoded Archival Description, description archivistique, 1993, 2002, Bibliothque
du Congrs.
NITF News Interchange Text Format, change d'articles de presse, 2000, 2002, IPTC.
NewsML News Markup Language, balisage de dpche de presse, 2000, 2002, IPTC.

Format de donnes
XML s'est impos comme format de rfrence pour l'change de donnes, notamment de
mtadonnes. L'exemple d'un transfert d'informations entre base de donnes relationnelles
permettra d'illustrer les avantages et limites de ce format pour cet usage.
L'exportation d'une table peut se faire en csv. Mais ce format comporte vite des limites
grande chelle (Internet). Il n'est pas auto-document (encodage du texte, sparateurs,
ordre et nom des colonnes ?). Il demande une documentation externe rarement automatise
entre les partenaires. Que faire lorsque les tables source et destination n'ont pas des
structures identiques ? Pour cette raison, on peut prfrer des changes en SQL ( la fois
langage de dfinition de donnes et langage de manipulation de donnes). Cependant,
malgr de nombreux efforts de normalisation, SQL comporte beaucoup de risques
d'incompatibilit entre les implmentations [36]. XML est une solution plus robuste. On
peut en constater l'efficacit sur Internet avec la Syndication. Il n'y a pas d'exemple connu
d'change de mtadonnes rparties sur autant de clients et de serveurs .
Verbosit ? - Compar l'export CSV d'une table, XML rplique le nom de la colonne pour
chaque cellule (une fois pour un attribut, deux fois pour un lment). Le poids du fichier
gnr est suprieur celui d'un fichier CSV. Dans des contextes o la bande passante est
coteuse (exemple : tlphonie mobile), cela n'a pas sembl poser de problme (WML), car
ces rptitions se compressent trs bien (zip).
Traitement lourd ? - Traiter du XML demande des bibliothques ddies (processeur
XML). Cela n'ajoute pas vraiment du temps de dveloppement supplmentaire, du moins
pour des quipes formes. Pour des petites tches, un parseur ligne ligne est parfois plus
simple. Mais si la donne se destine se complexifier, s'changer plus largement, il vaut
mieux choisir XML ds le dpart.
XML : donnes ou document ? - Cette section est l'occasion de marquer la distinction
entre XML donnes et XML document. Il ne s'agit pas d'une diffrence dans la syntaxe,
mais dans ses usages, ses outils et ses communauts d'utilisateurs. Par SGML, XML vient
du document. On lui a reproch par exemple ne pas avoir (nativement) de typage fort. On
rencontre un mouvement analogue mais contraire en SQL. C'est originalement un format
de donnes, on lui demande de plus en plus de traiter du texte. (CMS LAMP). En ce qui
concerne XML, cette opposition se traduit dans la direction des efforts de spcification

10

Extensible Markup Language


(types de donnes XML Schema
monde documentaire (Relax NG).

11
[37]

, XPath 2.0

[38]

, XSLT 2.0

[39]

) avec des ractions du

RDF - Resource Description Framework Rseaux de mtadonnes, 1997 2006 W3C.


RSS Rich Site Summary, RDF Site Summary et Really Simple Syndication, 1999 ,
(principe plus que norme).
Atom - syndication, 2003, IETF.
OWL - Ontologies (W3C)
GML - Donnes gographiques (Open Geospatial Consortium)
Dublin Core - bibliographie (dublincore.org [40])
MODS [41] - bibliographie (Bibliothque du Congrs, USA)
METS - change de collection de fichiers (Bibliothque du Congrs, USA)
BiblioML - bibliographie (Bibliothque nationale de France)
EbXML - commerce lectronique (OASIS)
XBRL - Donnes comptables
XMI - XML Metadata Interchange

Langages de schma
Un processus XML complet comporte une tape de validation des documents. C'est le rle
d'un schma de dfinir ces rgles de validit. Faut-il que ce schma soit en XML ? La
question ne se posait pas en SGML, qui connaissait surtout les DTDs, une syntaxe texte. Les
limites rencontres alors concernaient surtout la documentation des lments et attributs
dclars(en) [42]. La documentation est trs importante pour la russite d'un standard XML.
Celles de Docbook [43] ou TEI [44] constituent des livres complets, avec mme des versions
imprimes.
Ces communauts ont attendu avec impatience ce que donnerait XML Schema. Les
nombreux outils de documentation automatiques qui sont apparus, avec un simple jeu
d'XSLTs, prouvent l'intrt d'XML comme langage de description de format de document.
Cependant, pour des choses simples, XML Schema s'est avr difficile. Est-ce l'effet de trop
de concessions ? Toujours est-il que malgr le nombre d'diteurs derrire le W3C, la
communaut est trs intresse par Relax NG, de James Clark. Ce modle accepte une
syntaxe XML, et depuis 2003, propose aussi une forme compacte, textuelle, qui n'est pas
XML.
Autrement dit, il n'y a plus de rponse unique. Un schma XML peut se dfinir dans un
vocabulaire XML, ou autrement. L'volution actuelle est de pouvoir combiner plusieurs
langages de schmas, notamment le typage fort d'XML Schema [45], avec des motifs XPath
pour Schematron, dans du Relax NG[46] .

DTD Document Type Definition dfinition de type de document , ISO.


XML Schema langage de Schma XML, W3C, 2001.
Relax NG, DSDL acceptant une forme XML et une syntaxe compacte, ISO , 2001.
Schematron, validation par motifs, ISO, 2001.

Extensible Markup Language

Langages de reprsentation
On vante souvent XML pour sa facult de sparer contenu, prsentation et traitement.
Attention, XML rend cette sparation possible, mais il n'interdit pas de tout mlanger,
comme dans certaines pages XHTML sur Internet. En tous cas, ce format extensible a
prouv qu'il pouvait conserver la prsentation des documents pour les applications les plus
exigeantes. La varit des applications l'utilisant en est la preuve.
OpenDocument - tous les documents bureautiques, OpenOffice.org, 2001.
Word - le format natif de Microsoft Word (traitement de texte) est en XML depuis sa
version 2003.
XSL-FO - eXtensible Stylesheet Language - Formatting Objects, langage extensible de
stylage - formatage d'objets, W3C, 2001.
SVG - Scalable Vector Graphics, graphiques vectoriels 2D, W3C, 2003.
MathML - formules mathmatiques, W3C, 1999, 2001, 2003.
SMIL - Synchronized Multimedia Integration Language, Intgration multimdia, W3C,
1998, 2005.
X3D - 3D multimdia, consortium Web3D.

Langages de programmation
Dans de nombreuses applications, il est parfois pratique de dvelopper un langage
spcialis, usage local. Avec un schma, un dialecte XML dispose d'une grammaire (un
peu comme BNF). En guise de compilateur, il suffit par exemple d'une transformation XSLT
qui gnre du code Java, comme pour une bibliothque de balises (taglibs). Cet exemple
montre comment la syntaxe XML permet de dfinir des langages de programmation.
En thorie, la structure en arbre d'XML permet de reprsenter la hirarchie d'un
programme objets, ou l'imbrication des instructions d'un langage impratif. En pratique, les
boucles sont le cas limite partir duquel XML devient trop verbeux. Par contre, cette
criture est remarquablement adapte aux syntaxes dclaratives (configuration, dfinition
d'interface), et mme, popularise les algorithmes fonctionnels (XSLT, logique d'une
application web).
Il en rsulte que l'on trouve de plus en plus d'XML dans les logiciels. Dans certains
frameworks de dveloppement web, il est possible de monter une application complte et
complexe, en n'ditant que du XML.
XSLT - Extended Stylesheet Language Transformations, transformation de document
XML, W3C, 1999.
XML Query - requte et transformation XML, W3C, 2005.
ANT - scripts de compilation, ASF.
Servlet - serveur d'application Java, configuration et logique fonctionnelle, Sun
Microsystems.
Log4j [47] - log for Java, configuration d'une bibliothque d'historique, 1996,
1999-2006, ASF.
UIML - User Interface Markup Language, dfinition d'interface, OASIS, 1997.
XUL - XML-based User interface Language, dfinition d'interface, Mozilla, 2000.
XAML - dfinition d'interface, Windows Vista, 2006.
MXML, Flex - dfinition d'interface, Macromedia.

12

Extensible Markup Language

Protocoles d'changes
Un protocole spcifie l'change de contenus et d'instructions, entre un client et un serveur.
HTTP est un modle de protocole (qui n'est pas XML mais textuel). XML permet de baliser
des contenus et d'crire des instructions de programmation. L'universalisation de la
connexion HTTP comme des processeurs XML explique pourquoi XML devient une solution
courante pour crer un nouveau protocole.

XForms - formulaires web (W3C)


OAI - Open Archive Initiative Protocole Archives ouvertes, 2000, 2002 (OAI)
SOAP - RPC par HTTP (W3C)
WSDL - Services web (W3C)
WebDAV - Lecture/criture distante par HTTP (IETF)
Jabber/XMPP - Messagerie instantane et prsence, multimdia (IETF)

Langages associs
Les langages associs XML sont des syntaxes qui ne sont pas en XML mais trs attaches
XML. CSS illustrera bien la notion. Il peut tre contenu dans un attribut (@xhtml:style),
dans un lment (<xhtml:style>), ou reli un document XML par une instruction de
traitement (<?xml-stylesheet href="common.css" type="text/css"?>). XPath fournit un
autre exemple de spcification entirement ddie XML, mais qui est justement sans
lments ou attributs, afin d'tre associ un langage XML (XSLT).

CSS (Cascading Style Sheet)


DTD (Document Type Definition)
Espace de noms (Namespace)
SGML

XPath et XQuery, langages de requte. NB: XQuery possde aussi une syntaxe XML,
XQueryX.

Conclusion, tape suivante ?


En 2001, on demandait James Clark, un expert XML et SGML, What's the next step for
XML? [48] Quelle est l'tape suivante pour XML ? Il rpondit d'abord que cela revenait
demander quelle est l'tape suivante pour le texte ASCII ou pour les fichiers lignes
dlimites. XML est en effet devenu un format aussi universel qu'Unicode pour structurer
des contenus, comme un esperanto de l'informatique.
Qu'un arbre XML permette de reprsenter beaucoup de choses ne signifie pas que ce soit
toujours la forme la plus adapte, chaque utilisation a ses cas limites. Ainsi l'arbre bute sur
un motif simple : l'intersection. Considrez ce texte tuil : en gras et en italique. Le et
appartient deux zones, chose simulable mais pas native dans un arbre. On peut en faire
une reprsentation XHTML comme ceci <strong>en gras <em>et</em></strong> <em>en
italique</em>, dont on voit d'ailleurs qu'elle n'est pas unique, car la notion d'intersection
est perdue. Ce dtail se dmultiplie dans les applications WYSIWYG qui produisent du XML
(traitement de texte, SVG), rendant la source gnre de moins en moins lisible par un
humain. Ce dtail amnera peut-tre un nouveau format.
Selon James Clark en 2001, la nouveaut ne viendrait plus du format, mais de l'intgration
applicative pour le traiter, c'est encore vrai en 2007.

13

Extensible Markup Language

Outils et processus XML


XML a dsormais prouv qu'il tait une syntaxe trs gnrique de balisage, propre de
nombreux usages. Cette russite s'explique par des implmentations concurrentes de
nombreuses interfaces de programmation (API) prcisment spcifies. Comment entre-t-il
dans un processus applicatif ?
Pour dtailler ces tapes, considrons le processus le plus simple, accessible depuis
quelques annes dans Internet Explorer ou Firefox. Ces navigateurs permettent de
consulter des fichiers dans un XML smantique (qui ne contient que des contenus, sans
prsentation), et de les voir comme des pages accompagnes de couleurs et de navigation.
Ils sont transforms par le client, l'aide d'une feuille XSLT. Prenons par exemple le site de
Norman Walsh [49][50] . La source de la page servie ressemble ceci :
<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet href="/style/browser.xsl" type="text/xsl"?>
<essay xmlns="http://docbook.org/ns/docbook" xml:lang="en" version='5.0'>
<info>
<title>XProc: An XML Pipeline Language</title>
<!-- ... -->
</xml>

Ce n'est pas du XHTML (ou du HTML) mais du DocBook. Les navigateurs ne sont pas
capables de lire cette grammaire pour lui donner de la prsentation. La page apparente est
le rsultat d'une transformation, signale au navigateur par l'criture <?xml-stylesheet
href="/style/browser.xsl" type="text/xsl"?>. Le fichier browser.xsl explique comment
transformer du DocBook en HTML. Le processus est immdiat, il est intressant de le
dtailler, car on le retrouve dans des applications XML plus complexes.
1. produire : le document DocBook doit avoir t produit ou rsulter d'un import ;
2. entre : dans le navigateur, un parser lit le fichier XML pour construire un objet
informatique, et vrifie que le document est bien form ;
3. transformation : le document DocBook est transform en XHTML ;
4. inclusions : dans certains contextes, il est possible d'inclure des fichiers qui
deviendront des nuds ;
5. validation : le document peut tre valid, pour vrifier que sa structure est conforme au
schma docbook ;
6. sortie : le navigateur s'occupe de rendre le rsultat de la transformation en une page
pour un utilisateur.
Cette succession canonique d'tapes illustre ce que peut tre le tuyau d'un processus XML
complet. Elles vont maintenant tre expliques pour montrer comment elles peuvent
apparatre dans d'autres contextes applicatifs plus complexes.

14

Extensible Markup Language

Exporter et Produire
Une organisation qui a dj son systme d'informations qui n'est pas base sur XML peut se
demander comment produire du XML. Il existe de nombreuses manires d'exporter et de
produire du XML, afin de rentrer dans une chane de processus XML.
Traitement de texte, la plupart des logiciels bureautiques proposent un export XML,
quand ils ne sont pas nativement XML (OpenOffice.org, Microsoft Word). Le plus simple
est parfois d'enregistrer en HTML, rcuprable moyennant un petit traitement. Il suffit
de regarder les formats disponibles avec la fonctionnalit Enregistrer sous de son
logiciel habituel.
SQL, la plupart des SGBD proposent un export XML.
Un diteur XML est le meilleur moyen de faire produire par un humain un document
correspondant exactement au schma attendu.
Dans le cas en introduction, Norman Walsh utilise un simple diteur de texte, emacs.

Parseurs et interfaces de programmation (API)


Avant d'entrer dans un processus XML, un contenu doit tre xmlis . Cette opration est
effectue par un processeur XML. Les parseurs les plus rpandus sont :
MSXML - Microsoft Core XML Services, le parseur XML Microsoft, 2000-2006, intgr au
systme d'exploitation Windows, accessible aux langages Microsoft, notamment en
JavaScript sur le navigateur Internet Explorer.
libxml2 [51] - Le processeur XML libre du systme d'exploitation linux, accessible en C ,
Python [52], PHP [53], et en Ruby [54]
Xerces [55] - XML Java Parser, le parseur XML par dfaut d'une machine virtuelle Java,
accessible en Java
Expat [56] - Le parseur XML de James Clark, notamment embarqu par les navigateurs
mozilla (firefox).
VTD-XML [57]
Il en existe beaucoup d'autres, en particulier en Java, adapts diffrents cas particuliers :
ouvrir une API plus simple, accepter des documents mal forms comme HTML, traitements
plus simples (notamment pour les documents longs).
Une fois xmlis , un document est accessible diffrents langages, selon des interfaces
de programmation standardises. On distingue gnralement l'approche DOM, modle
objet en mmoire, et l'approche SAX, gnration d'vnements.
DOM, Document Object Model, constitue un objet en mmoire de la totalit d'un
document XML. Cette API permet l'accs direct tous les nuds de l'arbre (lments,
texte, attributs), pour les lire, ou les modifier. Il est par exemple trs utilis sur les
navigateur web avec JavaScript. Cette norme est crite par le W3C.
SAX, Simple API for XML, est une alternative intressante DOM pour le traitement de
documents longs. Quand un document entre dans un processeur XML, du code SAX peut
capturer des vnements, comme l'ouverture et la fermeture d'une balise, afin par
exemple, d'crire dans une base de donnes. l'inverse, il est possible de gnrer des
vnements SAX, par exemple partir de la lecture d'une base de donnes, afin de
produire un document consomm par une autre tape d'un processus XML.
VTD-XML

15

Extensible Markup Language


D'autres API existent, comme JDOM, dom4J (Java), ou StAX. Il n'est toutefois pas ncessaire
de programmer pour traiter du XML, notamment avec des langages de transformation
comme XSLT. Dans le cas en introduction, votre navigateur charge automatiquement le
document docbook, et passe le contenu une transformation xslt.

Transformation
La transformation est l'tape d'un processus XML qui prend un document dans un certain
schma pour le transposer dans un autre espace de noms. L'exemple en introduction
permet de bien comprendre l'opration. Soit un document textuel qui ne comporte que du
contenu. Il sera ncessaire de lui ajouter au moins de la navigation avant de le diffuser sur
Internet ; on en voudra aussi une version imprime (pdf). La facilit de transformer un
document XML, notamment avec XSLT, est une raison importante pour choisir ce format.

Inclusions
Un document XML peut tre constitu de plusieurs fichiers. Il y a deux normes
actuellement concurrentes.
les entits externes[58] , issues de SGML, rsolues a priori par un parseur validant, avant
tout traitement du document.
xinclude[59] , un lment XML ddi, pouvant tre trait comme une tape spare.
Les spcifications et les implmentations privilgient maintenant xinclude, bien que son
adoption ait pu tre discute[60] .
Considrons l'exemple d'un catalogue de produits pour voir les effets de l'un et de l'autre.
On aura chaque produit sous la forme d'un document XML, et un document matre qui
assemble toutes les rfrences. En entits, cela s'explique ainsi.
<!DOCTYPE catalogue [
<!ENTITY article001 SYSTEM "articles/article001.xml">
<!ENTITY article002 SYSTEM "articles/article002.xml">
]>
<!-- Un exemple d'inclusion par rsolution d'entit externe -->
<catalogue xmlns="http://exemple.net/ns">
<titre>catalogue</titre>
&article001;
&article002;
</catalogue>

On remarquera que les entits sont dclares en entte de document, puis appeles par
une criture du type &entit;. Cette syntaxe est initialement prvue pour des raccourcis,
afin de factoriser l'criture de variables comme un nom de produit ou une socit. Ce
mcanisme a t tendu pour rsoudre les problmes d'encodage en ASCII avant l'Unicode.
Ce sont les entits caractre comme =&#E9;=. Pour le cas d'une inclusion d'un fichier,
cela demande deux dclarations, celle du lien, celle de son appel. Ce moyen reste
massivement employ par les socits qui ont connu SGML, d'autant que son support est
beaucoup plus gnralis que celui d'xinclude.
La rsolution a priori des inclusions peut avoir des inconvnients, en particulier pour des
documents matre trs lourds que l'on peut vouloir travailler sans leur dpendances.

16

Extensible Markup Language


Xinclude

[61]

permet cela, ainsi que de gnrer ces relations automatiquement (XSLT).

<!-- Un exemple d'inclusion par xinclude -->


<catalogue xmlns="http://exemple.net/ns"
xmlns:xi="http://www.w3.org/2001/XInclude">
<titre>catalogue</titre>
<xi:include href="articles/article001.xml"/>
</catalogue>

On retrouve cette volution vers la modularisation d'XML o l'inclusion devient une tape
optionnelle d'un processus.

Validation
La validation est l'opration automatique qui vrifie la conformit d'un document XML
son schma. Elle a pour but de dlivrer des messages comme il n'y a pas de titre au
chapitre 5, ou bien, la date de fabrication est dans le futur. La prcision et la convivialit de
cette vrification dpendent de la syntaxe utilise.
En SGML, la validation s'effectuait toujours avant l'entre d'un document XML dans un
processus. On parlait de parser validant. Il n'y avait alors qu'un seul langage de validation
(les DTDs) dclars d'une seule manire l'intrieur du document XML (la dclaration
DOCTYPE, Type de document). La pratique a montr que la validation n'est pas toujours
ncessaire, et mme, contre performante. Dans d'autres cas, plusieurs tapes de validation
peuvent tre utiles, par exemple, une pour vrifier la structure de l'arbre XML, une autre
pour vrifier les liens. L'volution va vers une tape de validation distincte, dclare
l'extrieur du document, et gre selon les besoins du logiciel.
Les parseurs XML gardent l'ancien usage de conserver les bibliothques logicielles de
validation. Cependant la fonctionnalit peut tre dbranche, ou appele sparment. Il
existe aussi des bibliothques uniquement ddies la validation. Le dploiement actuel
rend la validation XML nativement accessible la plupart des systmes, et dans la plupart
des langages de programmation.
MSXML - Microsoft Core XML Services, validation DTD et XML Schema.
libxml2 [62] - Validation DTD et Relax NG (le support XML Schema est partiel, surtout
pour le typage de donnes au sein de Relax NG).
Xerces [63] - XML Java Parser, validation DTD et XML Schema.
Jing [64] - a Relax NG validator in Java, un validateur qui n'est pas un parseur pour Relax
NG et Schematron.
XSLT - Une transformation XSLT permet une validation trs prcise sur un type de
document, c'est couramment utilis dans une application web pour rendre l'utilisateur
des messages plus conviviaux, cet outil suffit aussi pour utiliser une implmentation
Schematron.

17

Extensible Markup Language

Sorties
Dans le cas en introduction, le navigateur est le consommateur final de XML, sous la forme
de xhtml. Chaque langage XML de reprsentation (XSL-FO, SVG) peut tre consomm par
une application utile l'utilisateur. Certains formats peuvent tre traits par plusieurs
bibliothques logicielles.
(en) Apache Batik [65], API Java traitant des documents SVG (exemple : export JPG, PNG).
(en) FOP, le srialiseur XSL-FO d'Apache [66]
(en) XEP [67], processeur XSL-FO et SVG commercial, RenderX.

Tuyaux (XML Pipeline)


Les tapes dcrites plus haut sont en cours de normalisation par le W3C (XML Processing
Model Working Group [68]). La terminologie [69] est officialise. Ces ides ont dj des
implmentations concurrentes dans plusieurs frameworks (Apache Cocoon, Orbeon
Presentation Server). L'ide de tuyaux XML existe avant d'avoir t spcifie.
Un tuyau est une entre (Input Document), une sortie (Output Document), et une chane
d'tapes (Step). Ces tapes traitent un flux XML (XML Information Set, Infoset [70]). La
notion de flux d'information n'est pas spcifique XML, on la retrouve grande chelle
dans l'informatique rseau, ou trs simplement en ligne de commande Unix, avec la barre
verticale, pipe en anglais). L'originalit rside dans la structuration propre XML. Les
octets traits par ces tuyaux sont des documents structurs. Les tapes sont standardises
et combinables. Elles sont dfinies par des composants (components) paramtrables
(parameter), le tout en XML.

Conclusion
Les principes de la syntaxe XML s'acquirent en quelques heures, avec un simple diteur
de texte. Tout utilisateur de traitement de texte gagne y tre sensibilis, afin de
comprendre les principes de la rdaction structure. Connatre ce formalisme peut motiver
utiliser les styles (exemple : les titres hirarchiques), afin de produire des documents
rcuprables, par exemple pour HTML et Internet. Un dveloppeur web ne peut plus
ignorer XML. Il en manipule pour rendre son HTML dynamique, sous la forme d'un DOM.
Avec le web 2.0 et AJAX, ces standards pntrent sa pratique quotidienne. Le
dveloppement serveur est lui aussi confront de plus en plus souvent des composants
configurables en XML, particulirement en Java. Enfin, ce formalisme s'accompagne de
pratiques, de motifs de conception (design patterns), compltement adapts aux
architectures MVC (Modle Vue Contrleur). XML et les standards attachs pntrent tous
les secteurs de l'informatique. Il y a quelques annes, on pouvait se demander, pourquoi
XML ? Maintenant, la charge de la preuve est de l'autre ct, il faut de srieux arguments
pour y chapper.

18

Extensible Markup Language

19

Notes et rfrences
(en) Extensible Markup Language (XML) 1.0
[1]
[2]
[3]
[4]

[71]

, W3C Recommendation 16 August 2006 :

http:/ / www. w3. org/


http:/ / www. w3. org/ TR/ 2008/ REC-xml-20081126/
http:/ / www. w3. org/ TR/ 2006/ REC-xml11-20060816
Ce nom est une ide de James Clark, elle est trs bien explique par Tim Bray dans sa spcification annote
(http:/ / www. xml. com/ axml/ notes/ TheCorrectTitle. html). Comme en anglais la lettre X se prononce eks ,
elle peut tre utilise dans les sigles pour abrger un ou plusieurs mots commenant par ce mme son comme
eXtensible ou eXperience (XP). Un bon nombre de langages ont galement affich leur parent avec XML en
s'adjoignant un X, comme XHTML.

[5] http:/ / www. w3. org/ TR/ 1998/ REC-xml-19980210


[6] http:/ / pages. videotron. com/ fyergeau/ w3c/ xml10/ REC-xml-19980210. fr. html
[7] http:/ / www. w3. org/ TR/ 1998/ REC-xml-19980210
[8] http:/ / pages. videotron. com/ fyergeau/ w3c/ xml10/ REC-xml-19980210. fr. html
[9] http:/ / www. xml. com/ axml/ testaxml. htm
[10] http:/ / docbook. org/ tdg5/ en/ html/ title. html
[11] http:/ / docbook. org/ tdg5/ en/ html/ para. html
[12] http:/ / docbook. org/ tdg5/ en/ html/ acronym. html
[13] http:/ / www. w3. org/ TR/ REC-html40/ struct/ global. html#edef-HTML
[14] http:/ / www. w3. org/ TR/ xslt#element-stylesheet
[15] http:/ / www. w3. org/ TR/ xslt#element-transform
[16] (en) document (http:/ / www. w3. org/ TR/ REC-xml/ #sec-white-space)
[17] les lments (http:/ / www. w3. org/ TR/ REC-xml/ #sec-starttags)
[18] http:/ / dublincore. org/ documents/ dcmi-terms/ #creator
[19] http:/ / docbook. org/ tdg5/ en/ html/ section. html
[20] http:/ / dublincore. org/ documents/ dcmi-terms/ #description
[21] http:/ / www. w3. org/ TR/ html4/ present/ graphics. html#edef-B
[22] http:/ / www. w3. org/ TR/ html4/ struct/ links. html#edef-A
[23] http:/ / dublincore. org/ documents/ dcmi-terms/ #type
[24] http:/ / docbook. org/ tdg5/ en/ html/ type. html
[25] (en) le texte (http:/ / www. w3. org/ TR/ REC-xml/ #syntax)
[26] (en) espaces vides (http:/ / www. w3. org/ TR/ REC-xml/ #sec-white-space)
[27] http:/ / www. w3. org/ TR/ REC-html40/ struct/ text. html#edef-PRE
[28] commentaires (http:/ / www. w3. org/ TR/ REC-xml/ #sec-comments)
[29] prologue (http:/ / www. w3. org/ TR/ REC-xml/ #sec-prolog-dtd)
[30] (en) Instructions de traitement (http:/ / www. w3. org/ TR/ REC-xml/ #sec-pi)
[31] (en) sections d'chappement (http:/ / www. w3. org/ TR/ REC-xml/ #sec-cdata-sect)
[32] http:/ / www. w3. org/ TR/ 1999/ REC-rdf-syntax-19990222/
[33] http:/ / www. la-grange. net/ w3c/ REC-rdf-syntax/
[34] (en) XHTML Modularization 1.1 (http:/ / www. w3. org/ TR/ xhtml-modularization/ ), W3C Working Draft 5 July
2006
[35] http:/ / www. tei-c. org/
[36] http:/ / sqlzoo. net/
[37] http:/ / www. w3. org/ TR/ xmlschema-2/
[38] http:/ / www. w3. org/ TR/ xpath20/
[39] http:/ / www. w3. org/ TR/ xslt20/
[40] http:/ / dublincore. org
[41] http:/ / www. loc. gov/ standards/ mods/
[42] http:/ / dtdparse. sourceforge. net/
[43] http:/ / www. docbook. org/ tdg5/ en/ html/ docbook. html
[44] http:/ / www. tei-c. org/ release/ doc/ tei-p5-doc/ html/
[45] http:/ / www. w3. org/ TR/ xmlschema-2/
[46] Eric van der Vlist, RELAX NG, W3C XML Schema Type Library , O'Reilly & Associates, 2003 (ISBN
0596004214)
[47] http:/ / logging. apache. org/ log4j/
[48] http:/ / www. ddj. com/ 184404686
[49] http:/ / norman. walsh. name/ 2006/ 09/ 28/ xprocfpwd. xml
[50] Ou celui de Jeni Tennison (http:/ / www. jenitennison. com/ index. xml) et de plusieurs autres.

Extensible Markup Language


[51] http:/ / xmlsoft. org/
[52] http:/ / xmlsoft. org/ python. html
[53] http:/ / fr. php. net/ libxml
[54] http:/ / libxml. rubyforge. org/
[55] http:/ / xerces. apache. org/ xerces2-j/
[56] http:/ / expat. sourceforge. net/
[57] http:/ / vtd-xml. sourceforge. net
[58] entits externes (http:/ / www. w3. org/ TR/ REC-xml/ #sec-external-ent)
[59] xinclude (http:/ / www. w3. org/ TR/ xinclude/ )
[60] (en) Norman Walsh (http:/ / norman. walsh. name/ ), XInclude, xml:base, and validation (http:/ / norman.
walsh. name/ 2005/ 04/ 01/ xinclude).
[61]
[62]
[63]
[64]
[65]
[66]
[67]
[68]
[69]
[70]
[71]

http:/ / www. w3. org/ TR/ xinclude/


http:/ / xmlsoft. org/
http:/ / xerces. apache. org/ xerces2-j/
http:/ / www. thaiopensource. com/ relaxng/ jing. html
http:/ / xml. apache. org/ batik/ index. html
http:/ / xmlgraphics. apache. org/ fop/ index. html
http:/ / www. renderx. com/
http:/ / www. w3. org/ XML/ Processing/
http:/ / www. w3. org/ TR/ xproc-requirements/ #terminology
http:/ / www. w3. org/ TR/ xml-infoset/
http:/ / www. w3. org/ TR/ REC-xml/ #sec-white-space

Autres rfrnces :

Voir aussi
Articles connexes
Autres technologies et thories intressant XML :

Langages de balisage
SGML
Norme ISO/IEC 8859
Norme ISO/IEC 10646
CSS
XLink

XML Base

Liens externes
Rfrences
W3C Recommendation: Extensible Markup Language (XML) 1.0 (Fifth Edition) (http:/ /
www. w3. org/ TR/ 2008/ REC-xml-20081126/ ) (en)
W3C Recommendation: Namespaces in XML 1.0 (Second Edition) (http:/ / www. w3. org/
TR/ 2006/ REC-xml-names-20060816/ ) (en)
W3C Recommendation: xml:id Version 1.0 (http:/ / www. w3. org/ TR/ 2005/
REC-xml-id-20050909/ ) (en)
W3C Recommendation: Extensible Markup Language (XML) 1.1 (Second Edition) (http:/ /
www. w3. org/ TR/ 2006/ REC-xml11-20060816/ ) (en)

20

Extensible Markup Language


Divers
Catgorie XML (http:/ / dmoz. org/ World/ Franais/ Informatique/
Formats_de_donnes/ Langages_de_balisage/ XML) de lannuaire dmoz
Spcification XML 1.1 (fr) (http:/ / www. yoyodesign. org/ doc/ w3c/ xml11/ ) (en) (http:/ /
www. w3. org/ TR/ xml11/ )
Spcification XML 1.0 (fr) (http:/ / pages. videotron. com/ fyergeau/ w3c/ xml10/
REC-xml-19980210. fr. html) (en) (http:/ / www. w3. org/ TR/ REC-xml/ )

21

Extensible Markup Language

Sources des articles et contributeurs


Extensible Markup Language Source: http://fr.wikipedia.org/w/index.php?oldid=40496102 Contributors: 007, 0A0, 16@r, Alkarex, Alno, Amoreau,
Archibald, Auxerroisdu68, BMR, Badmood, BaroqueW, Bayo, BenoitL, Bigor, Billitch, Bob08, Boly38, Bombyx, Brion VIBBER, Brunetton, Bub's, Buzz,
Cedric.ch, ChF, ChrisJ, Chtit draco, Citare, ClementSeveillac, Crochet.david, Daniel.bourrion, DanielLemire, Darkoneko, Derwin, Descartes, Didup,
Dirac, DocteurCosmos, Ducloy, EDUCA33E, Eamoureux, Elg, Ethaniel, F-fff, FlashX, Flo Ka, Francois 1340, Francois Trazzi, Frdric Glorieux, FvdP,
GLec, GML, GillesC, GitiZone, Glorieux, Gribeco, Guisquare, Herman, Hubert Roksor, Inisheer, JB, Jef-Infojef, Jerome66, JihemD, Jmfayard, Jmh2o,
Jpm2112, Kassus, Kelson, Kerflyn, Korg, Koyuki, LLB, Lastpixl, Laurent75005, Leafcat, Leag, Lgd, Litlok, Loup meraude, Ludovic89, Marc Mongenet,
Medhist, Medium69, Meszigues, MetalGearLiquid, Meuble2001, Michel BUZE, Misdre, Mwipliez, Nataraja, Nias, Nicolas Lardot, Nicolas Ray, Nono64,
Nyco, Ollamh, Orthogaffe, Pautard, Pelote de laine, Pfv2, Phe, Philias, Philibre, Pierrot106, Rigou, Robert Weemeyer, Romainhk, Roucas, Rpa, Ryo, STyx,
Sam Hocevar, Sanao, Selecto, Shawn, Stuart Little, Sweet Million, Sylvain d'Altar, Sylvestre, THA-Zp, Tarquin, Tensai, The RedBurn, Titouc330, Tornad,
Traroth, Uld, Vargenau, Vberger, Vincent Ramos, W7a, Witoki, Wizad, Xafran, Xmlizer, script de conversion, 196 anonymous edits

22

Licence

23

Licence
Version 1.2, November 2002
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.

0. PREAMBLE

The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone
the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License
preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.
This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the
GNU General Public License, which is a copyleft license designed for free software.
We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should
come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any
textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose
is instruction or reference.

1. APPLICABILITY AND DEFINITIONS

This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under
the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated
herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the
license if you copy, modify or distribute the work in a way requiring permission under copyright law.
A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or
translated into another language.
A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or
authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject.
(Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter
of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.
The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the
Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant.
The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.
The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document
is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.
A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public,
that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for
drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats
suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to
thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of
text. A copy that is not "Transparent" is called "Opaque".
Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using
a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image
formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML
or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some
word processors for output purposes only.
The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License
requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent
appearance of the work's title, preceding the beginning of the body of the text.
A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that
translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications",
"Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ"
according to this definition.
The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers
are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty
Disclaimers may have is void and has no effect on the meaning of this License.

2. VERBATIM COPYING

You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices,
and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to
those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute.
However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in
section 3.
You may also lend copies, under the same conditions stated above, and you may publicly display copies.

3. COPYING IN QUANTITY

If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's
license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the
front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front
cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying
with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in
other respects.
If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover,
and continue the rest onto adjacent pages.
If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy
along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has
access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter
option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will
remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or
retailers) of that edition to the public.
It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a
chance to provide you with an updated version of the Document.

4. MODIFICATIONS

You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified
Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the
Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:
1.

2.

3.
4.
5.

Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there
were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version
gives permission.
List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together
with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this
requirement.
State on the Title page the name of the publisher of the Modified Version, as the publisher.
Preserve all the copyright notices of the Document.
Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.

Licence

24

6.

Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this
License, in the form shown in the Addendum below.
7. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.
8. Include an unaltered copy of this License.
9. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the
Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and
publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.
10. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network
locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network
location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives
permission.
11. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and
tone of each of the contributor acknowledgements and/or dedications given therein.
12. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered
part of the section titles.
13. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.
14. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.
15. Preserve any Warranty Disclaimers.
If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the
Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the
Modified Version's license notice. These titles must be distinct from any other section titles.
You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example,
statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.
You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover
Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by)
any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity
you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the
old one.
The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply
endorsement of any Modified Version.

5. COMBINING DOCUMENTS

You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions,
provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant
Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.
The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are
multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in
parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section
titles in the list of Invariant Sections in the license notice of the combined work.
In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise
combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements."

6. COLLECTIONS OF DOCUMENTS

You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this
License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim
copying of each of the documents in all other respects.
You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into
the extracted document, and follow this License in all other respects regarding verbatim copying of that document.

7. AGGREGATION WITH INDEPENDENT WORKS

A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution
medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond
what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which
are not themselves derivative works of the Document.
If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire
aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers
if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.

8. TRANSLATION

Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant
Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in
addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document,
and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and
disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will
prevail.
If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will
typically require changing the actual title.

9. TERMINATION

You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify,
sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received
copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

10. FUTURE REVISIONS OF THIS LICENSE


The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be
similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http:/ / www. gnu. org/ copyleft/ .
Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or
any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has
been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any
version ever published (not as a draft) by the Free Software Foundation.

How to use this License for your documents


To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices
just after the title page:
Copyright (c) YEAR YOUR NAME.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
A copy of the license is included in the section entitled "GNU
Free Documentation License".
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this:
with the Invariant Sections being LIST THEIR TITLES, with the
Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.
If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software
license, such as the GNU General Public License, to permit their use in free software.