Extensible Markup Language

Extensible Markup Language
Image illustrative de l'article Extensible Markup Language

Extension .xml
Type MIME application/xml, text/xml
Développé par World Wide Web Consortium
Type de format Langage de balisage
Standard(s) 1.0 (1.0 (5e édition)

1.1 (1.1 (2e édition)

Spécification Format ouvert

L'Extensible Markup Language (XML [note 1], « langage de balisage extensible [1] » en français) est un métalangage informatique de balisage générique qui dérive du SGML. Cette syntaxe est dite « extensible » car elle permet de définir différents espaces de noms, c'est-à-dire des langages avec chacun leur vocabulaire et leur grammaire, comme XHTML, XSLT, RSS, SVG… Elle est reconnaissable par son usage des chevrons (<, >) encadrant les balises. L'objectif initial est de faciliter l'échange automatisé de contenus complexes ( arbres, texte riche…) entre systèmes d'informations hétérogènes ( interopérabilité). Avec ses outils et langages associés, une application XML respecte généralement certains principes :

  • la structure d'un document XML est définie et validable par un schéma ;
  • un document XML est entièrement transformable dans un autre document XML.

Historique

Dan Connolly ajoute le Standard Generalized Markup Language à la liste des activités du World Wide Web Consortium lorsqu'il s'y joint en 1995. Les travaux débutent à la mi-1996 lorsque l'ingénieur Jon Bosak  (en) de Sun Microsystems élabore une charte et recrute des collaborateurs. Bosak se fait connaître dans la petite communauté de personnes qui avaient de l'expérience à la fois dans le SGML et dans le Web.

XML est compilé par un groupe de travail de onze membres [note 2], soutenu par environ 150 membres de divers groupes d'intérêt. Le débat technique a eu lieu sur la liste commune et les questions ont été résolues par consensus ou, lorsque cela a échoué, à la majorité des voix du groupe de travail. Les corédacteurs du cahier des charges étaient à l'origine Tim Bray, qui a notamment conduit l'informatisation du Oxford English Dictionary, et Michael Sperberg-McQueen, de l' Université de l'Illinois, qui était éditeur en chef de la DTD TEI ; accompagnés ensuite de Jean Paoli, de Microsoft, comme troisième coéditeur [2]. James Clark servit comme responsable technique du groupe de travail, notamment en contribuant à l'élément vide « <empty/> » et au nom « XML ». Tim Bray, dans son Annotated XML Specification ((en) « la spécification XML annotée », explique plus longuement le contexte qui a rendu possible ce standard. Un compte rendu des décisions de conception et de leurs justifications ont été compilées par Michael Sperberg-McQueen, le 4 décembre 1997 [3].

Le groupe de travail XML ne s'est jamais rencontré face-à-face, la conception a été réalisée en utilisant courrier électronique et téléconférences hebdomadaires. Les principales décisions de conception ont été prises en une vingtaine de semaines de travail intense entre juillet et novembre 1996, lorsque le premier travail de spécification XML a été publié [4]. D'autres travaux de conception sont poursuivis jusqu'en 1997, puis le XML 1.0 est devenu une recommandation W3C le .

XML et SGML

L'objectif initial de XML est expliqué au début de la spécification du avec une phrase toujours d'actualité : « Son but est de permettre au SGML générique d'être transmis, reçu et traité sur le web de la même manière que l'est HTML aujourd'hui. »((fr) [5]. 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 définir un langage aussi générique, mais plus simple : « XML has been designed for ease of implementation »(en), « XML a été conçu pour une facilité de mise en œuvre »((fr).

À la lumière des années passées, cette spécification a rempli l'objectif qu'elle se fixait, XML a été largement suivi et favorise l' interopérabilité. La disponibilité d'une syntaxe standard et d'outils de manipulation réduit significativement le coût du cycle de développement, permettant à des logiciels de modifier et de valider, sans connaissances préalables, des documents écrits dans ces langages. En effet, avant l'avènement du populaire langage généraliste de description de données qu'est XML, les concepteurs de logiciels avaient pour habitude de définir leurs propres formats de fichiers ou leurs propres langages pour partager les données entre programmes (à l'exception de quelques standards professionnels tels qu' EDIFACT), ce qui exigeait de concevoir et de programmer chaque fois des analyseurs syntaxiques spécialisés. Ces tâches et bien d'autres s'effectuent désormais avec des outils XML standardisées.

Plusieurs décisions critiques ont contribué au succès du XML.

Adoption de l'Unicode

Par défaut, SGML était en ASCII ( alphabet latin sans lettre accentuée). Il apportait un système d'encodage pour les autres signes, les entités de caractères que l'on trouve encore parfois en HTML (exemple : &eacute; pour é). En 1996, apparaît la version 2.0 d' Unicode. XML adopte cet encodage par défaut.

  <?xml version="1.0" encoding="UTF-8"?>
  <外语>Китайська мова</外语>

Grammaire plus simple

SGML est orienté pour la saisie humaine de texte structuré, et autorise beaucoup de raccourcis. Ainsi HTML permet d'omettre certaines balises de fermeture, de raccourcir des attributs, de mélanger minuscules et majuscules. Ces possibilités compliquent le traitement automatique et sont interdites pour les applications de XML.

<!-- Exemple d'HTML 4, application de SGML, avec attribut minimisé,
balises en minuscules et majuscules, balises fermantes optionnelles. -->
<UL compact>
    <LI>Item 1
    <li>Item 2</Li>
</ul>
<!-- Exemple d'XHTML, application de XML. -->
<ul compact="compact">
    <li>Item 1</li>
    <li>Item 2</li>
</ul>

Espace de noms

SGML insiste surtout sur la validation, sur la conformité à un modèle contraignant. XML prévoit un usage plus souple de l'information structurée. Il spécifie un moyen de faire cohabiter plusieurs vocabulaires de balises dans un même document grâce à la définition d' espace de noms.

<?xml version="1.0" encoding="UTF-8"?>
<xsl:transform
    version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:tei="http://www.tei-c.org/ns/1.0"
>
    <!-- Transformation XSLT (instructions XML avec le préfixe “xsl:”) qui prend
en entrée du TEI (noms avec préfixe “tei:”) et donne en sortie du HTML (noms
sans préfixe). -->
    <xsl:template match="tei:abbr">
        <abbr>
            <xsl:apply-templates/>
        </abbr>
    </xsl:template>
</xsl:transform>

Bilan

Paradoxalement, il reste un domaine où SGML persiste, les « HTML ». Le W3C ne développe plus XHTML (version de HTML plus stricte, avec par exemple des balises obligatoirement fermées), et se consacre plutôt à HTML5, successeur d'HTML4, qui ajoute quelques balises sans imposer la conformité à XML. L'échec d'XHTML et le retour à HTML s'expliquent par la force des habitudes et la très importante base HTML déjà installée [6].

Au-delà de HTML, le W3C avait d'autres projets exigeant une syntaxe plus facilement extensible. Ces directions ont permis une grande plasticité de XML lui offrant de nombreux usages. SGML était une technique de niche, Internet l'a simplifié et largement répandu.

Versions

La version 1.0 d'XML a été publiée le .

La version 1.1 d'XML a été publiée le . Elle apporte des améliorations dans le support des différentes versions d'Unicode, permet l'usage de caractères de contrôle dans le texte (à l'exception du caractère 0), et organise les fins de ligne de façon compatible avec les technologies IBM [7].

Le W3C recommande aux interpréteurs XML de reconnaître les deux versions, bien que la première version soit beaucoup plus répandue que la seconde.

Other Languages
Afrikaans: XML
azərbaycanca: XML
башҡортса: XML
žemaitėška: XML
беларуская: XML
български: XML
bosanski: XML
کوردیی ناوەندی: ئێکس ئێم ئێڵ
dansk: XML
Ελληνικά: XML
English: XML
Esperanto: XML
eesti: XML
euskara: XML
suomi: XML
Gaeilge: XML
galego: XML
עברית: XML
hrvatski: XML
magyar: XML
Հայերեն: XML
interlingua: XML
Bahasa Indonesia: XML
íslenska: XML
italiano: XML
한국어: XML
Кыргызча: XML
ລາວ: XML
lietuvių: XML
latviešu: XML
македонски: XML
മലയാളം: എക്സ്.എം.എൽ.
монгол: XML
Bahasa Melayu: XML
norsk nynorsk: XML
norsk bokmål: XML
polski: XML
português: XML
română: XML
русский: XML
Scots: XML
srpskohrvatski / српскохрватски: XML
Simple English: XML
slovenčina: XML
slovenščina: XML
shqip: XML
српски / srpski: XML
svenska: XML
తెలుగు: XML
тоҷикӣ: XML
Türkmençe: XML
Türkçe: XML
українська: XML
Tiếng Việt: XML
中文: XML