XML pour eXtensible Markup Language est un standard promulgué par le W3C, le 10 février 1998. Comme l’indique le W3C en introduction
(cf. bibliographie W5), XML est la synthèse des idées contenues alors dans HTML et plus généralement SGML (Standard Deneralized Markup Language). Là ou HyperText Markup
Language (HTML) utilise les balises pour définir la représentation graphique d’une page, XML permet d’associer tout type d’information en séparant la description des données de leur représentation graphique. XML est donc un format pratique de sauvegarde et d’échange de données permettant la conception de documents complexes tout en s’appuyant sur des principes simples : Lisibilité des données à la fois par l’homme et les programmes ; Définition sans ambiguïté du contenu et de la structure d’un document ; Séparation entre documents et relations d’un document ; Séparation entre structure et présentation du document ; Daniel KOCH, Olivier KÜRTEN, Florian HARMS dans leur livre « HTML 4, XML, XHTML » (cf. bibliographie L4) décrivent la construction des données XML. Elle se compose de 2 parties : Le Document Type Definition (DTD) qui a pour but de définir l’ensemble des balises utilisées ainsi que leurs relations, et le XML qui décrit les données grâce aux définitions décrites dans le DTD. Dans l’exemple ci contre on peut voir la définition des données nécessaires pour décrire un livre, puis les données elles mêmes.
Dans cet exemple, il apparaît bien que ces fichiers ne donnent aucune indication sur la représentation graphique de ces données. La mise en forme peut alors être confiée à une feuille de style inspirée des CSS (Cascading Style Sheet) que l’on appelle XSL. La norme
W3C : Organisme chargé de la
standardisation des évolutions du web.
définissant le vocabulaire nécessaire à la transformation des données XML est appelé XSLT (XSL Tranformation).
Cet exemple montre aussi que si dans un document XML simple il n’y a pas d’ambiguïté sur les définitions, dans des documents plus complexes, certaines balises peuvent prêter à confusion. Par exemple ici, la date qui représente la date de parution pourrait être confondue avec la date de naissance de l’auteur.
XML Namespaces
Le livre de Jean‐Marie CHAUVET, « Services Web avec SOAP, WSDL, UDDI, ebXML… » (cf. bibliographie L5) apporte un complément sur la variété des domaines d’application d’XML qui à rapidement conduit la W3C à adopter des normes complémentaires comme XML Namespaces. Cette recommandation a pour objectif de lever les ambiguïtés du type de celle exposée dans l’exemple précédent par la définition de deux espaces de nom : livre et auteur dans lesquels la balise date aura respectivement la signification de date de parution et date de naissance. Exemple.xml < ?xml version="1.0" encoding="UTF-8" ?> < !DOCTYPE xq PUBLIC "." "Exemple.dtd"> <livre> <titre>Zend Framework</titre> <auteur> <nom>Pauli</nom> <prenom>Julien</prenom> </auteur> <auteur> <nom>Ponçon</nom> <prenom>Guillaume</prenom> </auteur> <date>2009</date> </livre> Figure 19 – Exemple de représentation XML d'un livre Exemple.dtd
< !ELEMENT livre (titre, auteur*, date)> < !ELEMENT titre (#PCDATA)>
< !ELEMENT auteur (nom, prenom)> < !ELEMENT date (#PCDATA)> < !ELEMENT nom (#PCDATA)> < !ELEMENT prenom (#PCDATA)>
Le caractère * permet de spécifier la répétition éventuelle de l’élément
XML Schema
Autre norme adoptée cette fois après de longues discussions, XML Schema représente tant une innovation importante dans l’utilisation d’XML qu’une rupture avec son usage initial. En effet, XML Schema permet de décrire la structure des données en général depuis les modèles relationnels des bases de données aux modèles objets des langages de programmation. Un schéma XML reprend à la façon d’une DTD l’imbrication des éléments entre eux mais le complète par le type de ces éléments et leurs attributs.
Si l’on reprend notre exemple, le schéma serait alors :
<xsd:element name="livre"> <xsd:complexType> <xsd:sequence>
<xsd:element ref="titre" minOccurs="1" maxOccurs="1" /> <xsd:element ref="auteur" minOccurs="1" maxOccurs="5" /> <xsd:element ref="date" minOccurs="1" maxOccurs="1" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="auteur"> <xsd:complexType> <xsd:sequence>
<xsd:element ref="nom" minOccurs="1" maxOccurs="1" /> <xsd:element ref="prenom" minOccurs="1" maxOccurs="1" /> </xsd:sequence>
</xsd:complexType> </xsd:element>
<xsd:element name="titre" type="xsd:string" /> <xsd:element name="date" type="xsd:date" /> <xsd:element name="nom" type="xsd:string" /> <xsd:element name="prenom" type="xsd:string" />
XML Schema est aujourd’hui adopté par les fournisseurs de base de données en tant que format de fichier pour importer et exporter les métadonnées (description des tables, des colonnes et leurs types…) mais aussi dans le monde java par les éditeurs de serveurs pour décrire la structure voir même pour la définition de classes.
XML Schema couplé à XML Namespaces sont les briques de base des mécanismes des services Web. Ils sont utilisés pour exprimer les structures de données complexes figurant dans les messages échangés : requêtes, résultats et erreurs éventuelles.