Navigation path

XML

Automatic translation of this page

Le XML (eXtensible Markup Language) est, comme HTML, un langage de "marquage" de document. Au contraire de HTML, constitué d'un nombre limité de balises, XML permet de structurer de l'information textuelle par l'utilisation de balises non prédéfinies: HTML s'occupe essentiellement de présentation, XML décrit le contenu.

  • Un jeu de caractères pour représenter les symboles de base,
  • Des éléments qui servent à structurer le contenu de manière hiérarchique, 
  • La possibilité de définir des grammaires (DTD/Schéma) pour restreindre l'utilisation de ces éléments.
 

XML - Intro

Le XML est un sous-ensemble de SGML (Standard Generalized Markup Language). La version 1.0 de XML a fait l'objet d'une recommandation W3C en février 1998, revue en octobre 2001. Les objectifs de conception du XML sont les suivants :

  • XML doit pouvoir être utilisé sans difficulté sur internet;
  • XML doit soutenir une grande variété d'applications;
  • XML doit être compatible avec SGML;
  • Il doit être facile d'écrire des programmes traitant les documents XML;
  • Le nombre d'options dans XML doit être réduit au minimum, idéalement à aucune;
  • Les documents XML doivent être lisibles par l'homme et raisonnablement clairs;
  • La conception de XML est formelle et concise;
  • Il doit être facile de créer des documents XML;
  • La concision dans le balisage de XML est de peu d'importance.
<items>
     <item>
          <title>
Europa</title>
          <abstract>L'Union européenne 
               en ligne
          </abstract>
          <link>
              
http://europa.eu/index_fr.htm
          </link>
     </item>
     <item>
          <title>
MyIntracomm</title>
          <abstract> L'intranet de la 
               Commission européenne 
          </abstract>
          <link>             
http://www.cc.cec/home/menu_fr.html 
          </link>
     </item>
</items>

 

Le XML offre ainsi un moyen simple pour transmettre de l'information en assurant de sa lisibilité indépendamment de toute plateforme et en facilitant son traitement par l'utilisation d'une structure simple et d'une grammaire comprise et acceptée par tous les intervenants.

Ainsi dans le monde Internet, l'arrivée du XML a permis de mettre en place des systèmes qui permettent aux auteurs de ne se préoccuper que du contenu indépendamment de sa forme, de réutiliser un même contenu sur différentes pages, de formater le contenu en fonction du destinataire-cible, ...        

 
 

XML et Europa

Le XML peut être traité au niveau du client, mais ce traitement ne s'effectue malheureusement pas de la même manière sur tous les clients.

Il n'est donc pas possible aujourd'hui de s'assurer d'un traitement équivalent quel que soit le browser utilisé. La seule possibilité d'utiliser le XML de manière sûre est d'en effectuer la transformation vers HTML sur nos serveurs et de continuer à "livrer" du code HTML aux visiteurs d'Europa.

 
 

XML : brève description technique

SGML, HTML et XML

Le XML (eXtensible Markup Language) est, comme le HTML, un langage de "marquage" de document. Au contraire du HTML constitué d'un nombre limité de balises, le XML permet de structurer de l'information textuelle par l'utilisation de balises non prédéfinies: le HTML s'occupe essentiellement de présentation, le XML décrit le contenu.

Le XML est un métalangage qui permet d'identifier les informations élémentaires d'un document et de les rassembler dans une structure arborescente.

Structure
<items>
<item>
<title>
Europa</title>
<abstract>L'Union européenne
en ligne
</abstract>
<link>
http://europa.eu.int/index_fr.htm
</link>
</item>
<item>
<title>MyIntracomm</title>
<abstract>L'intranet de la
Commission européenne
</abstract>
<link>
http://www.cc.cec/home/menu_fr.html
</link>
</item>
</items>

La partie principale d'un document XML est composée d'éléments présentés dans une structure arborescente. Il ne peut y avoir qu'un et un seul élément (racine) qui contient tous les autres.

Chaque élément peut donc en contenir d'autres et être qualifié par des attributs.

Pour autant que les balises soient bien choisies, aucune connaissance particulière n'est nécessaire pour comprendre le contenu du document. Un document XML est indépendant de toute technologie propriétaire.

Les règles d'écriture sont simples: les balises doivent être obligatoirement fermées, le chevauchement entre balises n'est pas permis, les attributs sont spécifiés dans la balise d'ouverture, etc.

Prologue

Avant le contenu proprement dit, on trouve le prologue contenant:

  • la déclaration XML qui identifie le document comme un XML (version) et précise le jeu de caractère utilisé (encoding),
  • la référence (facultative) à la grammaire utilisée (DTD) et l'identification de l'élément racine,
  • les instructions (facultatives) de traitement à destination des applications (par exemple la référence à la feuille de style à utiliser pour l'affichage dans un browser).

Il faut noter qu'en l'absence d'identification de l'encodage, une application XML considérera le document comme étant Unicode.

<?xml version="1.0" encoding="...."?>
<!DOCTYPE items SYSTEM "test.dtd">
<?xml-stylesheet type="text/xsl" href="tsd.xslt"?>
<items>
<item>...

DTD/Schémas

Le vocabulaire et la structure du document peuvent être définis à l'aide d'une DTD (Document Type Definition - origine SGML) ou d'un schéma (recommandation W3C - mai 2001). L'utilisation de cette option permet à différents systèmes de communiquer entre eux sur une base communément acceptée. Il faut noter que la définition à l'aide de schémas est plus complète (typage des données).

Espace de nommage
Un document XML peut contenir des vocabulaires définis par différentes sources. Pour éviter les problèmes de collision (même balise définie dans deux vocabulaires différents et donc avec des significations différentes), il est possible de spécifier un "espace de nommage", afin de pouvoir lever l'ambiguïté relative aux balises communes à différents vocabulaires.<europa:items xmlns:europa='http://europa.eu' >
<europa:item type="internet" sequence="1">

Utilisation : XSL (eXtensible Stylesheet Language) et CSS

La XSL suivante appliquée à l'exemple précédent
<?xml version="1.0" encoding="...."?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output encoding="...." method="html" />
<xsl:template match="/">
<html>
<head/>
<body>
<table border="1"> <thead><tr><td>Some links</td></tr> </thead>
<xsl:for-each select="items">
<xsl:for-each select="item">
<tr><td>
<xsl:for-each select="title">
<a>
<xsl:attribute name="href">
<xsl:value-of
select="../link" />
</xsl:attribute>
</a>
</xsl:for-each>
</td></tr>
</xsl:for-each>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
produit
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=....">
</head>
<body>
<table border="1">
<thead> <tr><td>Some links</td></tr> </thead>
<tr><td><a href="http://europa.eu/index_fr.htm"> Europa </a></td></tr>
<tr><td><a href="http://www.cc.cec/home/menu_fr.html"> MyIntracomm </a></td></tr>
</table>
</body>
</html>
Le XML permet de stocker les informations sous une forme structurée. C'est un langage permettant de décrire les transformations (XML vers XML, XML vers HTML, ...) à appliquer à ces données.

Ainsi le même document XML peut être à la source d'un grand nombre de publications (single source).

L'utilisation la plus courante de XSL consiste en la transformation d'un document XML en une ou plusieurs pages HTML.

La séparation entre le contenu (XML) et sa représentation (transformation XSL) permet, à partir d'une même source, de créer des documents utilisant différentes représentations en fonction du public cible et/ou de la technologie cible (HTML, WML, WAP, RTF, ...).

Le XSL est principalement composé de XSLT (eXtensible Stylesheet Transformation - V1.0 W3C Recommandation 16 novembre 1999 - V2 Draft) permettant de transformer la structure des éléments XML.

Le processeur XSLT crée un arbre source à partir du document XML et lui applique les règles contenues dans le document XSL pour obtenir un arbre résultat. Celui-ci peut être formatté (XSL/FO) pour obtenir une page HTML par exemple. L'adressage d'un élément de l'arbre se fait via Xpath (V1.0 - W3C Recommandation 16 novembre 1999).

 

 
 

XML : valide et bien formé

Un document XML est donc composé d'éléments présentés dans une arborescence.

Les éléments peuvent comporter des attributs.

Un document XML commence obligatoirement par une première déclaration spécifiant la norme XML utilisée pour créer le document et le jeu de caractères utilisé dans le document.

Après cette déclaration, le document pourra contenir un certain nombre d'instructions de traitement (processing instructions) à destination d'applications particulières (par exemple pour l'affichage dans un browser).

<?xml version="1.0" encoding="...."?>
<!DOCTYPE items SYSTEM "test.dtd">
<?xml-stylesheet type="text/xsl" href="tsd.xslt"?>
<items>
     <item type="internet" sequence="1">
          <title>Europa</title>
          <abstract>
               L'union européenne en ligne
          </abstract>
          <link>
               http://europa.eu.int/index_fr.htm
          </link>
     </item>
     <item type="intranet" sequence="9">
          <title>IntraComm</title>
          <abstract>
               L'Intranet de la Commission européenne
          </abstract>
          <link>
               http://www.cc.cec/home/menu_fr.html
          </link>
     </item>
</items>

Un document XML est considéré comme bien formé s'il répond aux conditions suivantes:

  • le document commence par la déclaration XML;
  • il y a un élément racine unique qui contient tous les autres éléments;
  • toutes les balises sont fermées et ne se chevauchent pas (si un élément est vide, il doit être indiqué, soit par une balise ouvrante suivie immédiatement d'une balise fermante, soit par une balise d'élément vide - ex. <balise/>);
  • les valeurs des attributs doivent être entre " ";
  • le nom des attributs sont écrits en minuscules;
  • le nom des balises peut contenir des lettres, des chiffres, des tirets ( - ), des traits de soulignement ( _ ) et doit contenir au moins une lettre.
<?xml version="1.0" encoding="...."?>
<?xml-stylesheet type="text/xsl" href="tsd.xslt"?>
<!DOCTYPE items SYSTEM "test.dtd">
<items>
     <item type="internet"...

Il sera considéré comme valide si une instruction spécifiant une DTD (Document Type Definition) ou un schéma est présente et que le document est conforme à cette DTD (ou ce schéma).

La DTD/schéma définit le vocabulaire et la structure d'un document XML.

Une DTD comporte un ensemble de règles qui identifient les éléments et leurs attributs, leur position dans l'arborescence et leur fréquence d'apparition dans le document XML.

Pour l'exemple ci-dessus, on pourrait avoir le DTD suivant:

<!ELEMENT abstract (#PCDATA)>
<!ELEMENT item (title, abstract, link)>
<!ATTLIST item
type (internet | intranet) #REQUIRED
sequence CDATA #IMPLIED>
<!ELEMENT items (item+)>
<!ELEMENT link (#PCDATA)>
<!ELEMENT title (#PCDATA)>

ou le schéma suivant:

<?xml version="1.0" encoding="...."?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="abstract" type="xs:string"/>
<xs:element name="item">
<xs:complexType>
<xs:sequence>
<xs:element ref="title"/>
<xs:element ref="abstract"/>
<xs:element ref="link"/>
</xs:sequence>
<xs:attribute name="type" use="required">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="internet"/>
<xs:enumeration value="intranet"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="sequence" use="required">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="5"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="items" type="xs:string"/>
<xs:element name="link" type="xs:string"/>
<xs:element name="title" type="xs:string"/>
</xs:schema>
La définition à l'aide d'un schéma est beaucoup plus précise (données typées, fourchette de valeurs, ...) qu'avec une DTD. Il faut également noter qu'un schéma est également un document XML, contrairement à la DTD.

La présence d'une DTD/schéma n'est pas obligatoire.

La DTD peut être définie à l'intérieur ou à l'extérieur (comme dans l'exemple) du document XML.

Les outils "validants" (par ex. IE) signaleront une erreur si le fichier qu'il traite n'est pas bien formé ou ne respecte pas la DTD/schéma spécifiée.

 

 
 

Pour en savoir plus...

Sur la norme

Historique

Quelques applications ...