Developpez.com - XML
X

Choisissez d'abord la catégorieensuite la rubrique :


Présentation de XML

Date de publication : à définir

Par Romain Guy (Gfx) (home)
 

Aujourd'hui on n'entend plus parler que de deux technologies sur Internet: Java et XML. XML n'est pas réellement un langage au sens classique du terme, mais plutôt une norme structurelle. Voyons de quoi il en retourne.

Introduction
1. Documents XML
2. Différences avec HTML
3. Applications
4. Screenshots


Introduction

XML est né le 10 février 1998 lorsque la première norme industrielle de XML fut publié par le consortium W3C. La norme XML est un ensemble de spécifications désignant les règles à adopter afin de créer des documents universels mais libérés de toute contrainte. Ainsi, XML, petit frère de SGML, norme internationale de documents structurés beaucoup utilisée dans l'industrie, est plus permissif que celui-ci mais beaucoup moins que HTML... enfin, dans certains cas.
XML est donc né de la volonté d'intégrer le savoir faire résultant d'une décennie d'expérience de SGML, en ne retenant que les caractéristiques essentielles, indispensables à un usage et une implémentation facile et surtout de mettre fin à l'amalgame entre données et présentation que faisait HTML. D'ailleurs, si vous avez déjà utilisé HTML, vous ne serez pas dépaysés par la syntaxe de XML tant elle est proche. Les avantages de XML sont donc clairs: universalité (inter-plateformes/inter-logiciels), flexibilité (chacun peut définir son propre dérivé de XML dans ses documents) et séparation des données de la mise en page (facilitant ainsi grandement la mise à jour).


1. Documents XML

Un document XML se présente sous la forme d'un simple fichier texte contenant des balises de type <balise> (ou "tag" en anglais). On trouve cinq type de balises en XML: les éléments (<balise>), les entités (&eacute;), les commentaires (<!-- commentaire -->), les instructions de traitement (<?xml ?>, <?php ?>) et les sections ignorées. La principale difficulté pour le débutant en XML est de bien comprendre qu'en réalité cette norme ne définit aucun élément par défaut. Comment savoir alors lesquels utiliser ? Nous atteignons ici la principale différence entre les deux types de documents XML pouvant exister. D'un côté nous avons les documents "bien formés" (c'est à dire que les balises sont fermées correctement, sans croisement, que les règles de syntaxe sont respectées, par exemple que les valeurs d'attributs sont bien entre guillemets doubles, etc...). De l'autre nous avons les documents valides, bien formés. Un document est déclaré valide s'il est accompagné d'un second document nommé DTD (Document Type Definition). Un tel fichier déclare l'ensemble des balises et des attributs des balises admissibles par le document lié à la DTD. L'écriture d'une DTD n'est pas toujours des plus aisées mais garantie une certaine rigueur dans l'utilisation de votre document. Normalement, un document XML ne pouvant être validé par sa DTD ne devra pas être interprété par quelconque logiciel. Voici un exemple de document bien formé :
<?xml version="1.0" ?>
<magazine titre="Login:" numero="Septembre 2000">
  <article rubrique="Pratique" titre="XML">
    Text de l'article.
  </article>
</magazine>
Vous noterez l'en-tête obligatoire à tout document XML en première ligne. Comme vous le voyez, ce document est bien formé, mais cependant rien ne nous dit que nous l'avons écrit en respectant les règles attendues. Voici donc le même document, valide:
<?xml version="1.0" ?>
<!DOCTYPE magazine SYSTEM "magazine.dtd" >
<!-- suite du fichier comme précédemment -->
Et voici la DTD associée (magazine.dtd):
<!ELEMENT magazine (article)* >
    <!ATTLIST magazine
      titre CDATA #REQUIRED
      numero CDATA #REQUIRED >
  <!ELEMENT article (#PCDATA) >
    <!ATTLIST article
      rubrique CDATA #REQUIRED
      titre CDATA #REQUIRED >
Cette DTD indique que le document commence par la balise <magazine> (<!DOCTYPE magazine ...>), que cette balise doit posséder les attributs titre et numero, qu'elle peut contenir un nombre quelconque de balises <article> qui elles-mêmes doivent posséder les attributs rubrique et titre, et contenir du texte (#PCDATA). L'écriture d'une DTD ne pouvant être abordée de manière satisfaisante ici, nous apprendrons plus en détails comment en définir une dans un futur article. On remarquera enfin que l'on aurait pu remplacer SYSTEM "magazine.dtd" dans la balise <!DOCTYPE> par [ {contenu de magazine.dtd} ]. Cependant, dans la pratique, on utilise la notation [ DTD ] pour étendre localement des DTD et non en définir de complètes. Enfin, la balise <!DOCTYPE> commence, comme toutes les balises de "contrôle" par un point d'exclamation signifiant que cette balise fait partie de la norme XML définie par le W3C.


2. Différences avec HTML

Si vous avez bien suivi, vous aurez peut être deviné qu'en réalité la norme HTML n'est autre qu'une DTD de la norme XML ! En réalité, un navigateur, pour vérifier la validité d'une page HTML, peut la gérer comme un fichier XML en admettant par défaut une DTD correspondant au support de la norme HTML en vigueur (actuellement HTML 4.0). Il est même possible de trouver ces DTD sur Internet. Malgré ces ressemblances frappantes, XML diffère quelque peu de son cousin. La première différence est d'ordre syntaxique. Les balises dites "vides" (c'est à dire ne pouvant contenir aucune autre balise ni aucune donnée) doivent s'écrire <balise /> en XML. Prenons l'exemple de la balise <br> bien connue des créateurs de sites personnels. Si jamais vous devez être amené à en faire usage dans un document XML, vous devrez écrire: <br />. Ce qui est d'ailleurs d'une logique implacable (présence du signe de fermeture / dans la balise même). Au delà de cette différence formelle, XML propose deux balises spéciales extrêmement puissantes: <!ENTITY> et <![CDATA[]]>.
ATTENTION : Rétablir signe ^^ La première est très pratique lorsqu'il y a redondance d'une information. Si vous pratiquez HTML, vous connaissez les entités de type &lt; ou &eacute;. XML n'en offre que cinq par défaut: &lt; (<), &gt; (>), &quot; ("), &apos; (') et & (&). Cependant vous pouvez définir les vôtres que cela soit dans le document même ou dans sa DTD (si la DTD est externe, l'entité est accessible par tout document en faisant usage). Si dans notre exemple de document précédent nous avions déclaré:
<?xml version="1.0" ?>
<!DOCTYPE magazine SYSTEM "magazine.dtd" [
  <!ENTITY pra "Pratique" >
] >
<!-- suite du document -->
Chaque entité &pra; serait remplacée par la chaîne "Pratique". Notons que la définition de l'entité se fait dans une déclaration de DTD de type interne mélangée à une DTD externe (SYSTEM "fichier.dtd"). Nous aurions donc pu continuer le document ainsi:
<article rubrique="&amp;pra;" titre="XML">Article XML</article>
<article rubrique="&amp;pra;" titre="3D">Article 3D</article>
L'usage des entités peut faire gagner un temps très important ! Et surtout faciliter la maintenance des documents en définissant par exemple la mise à jour d'un logiciel dans une DTD utilisée par tous les documents relatifs au logiciel. Une modification en entraîne une infinité.
L'autre balise, <![CDATA[]]> permet d'insérer une chaîne de caractères "telle qu'elle", autrement dit non interprétée par le moteur XML. Pour intégrer la chaîne < dans un document XML, on pourra taper: <![CDATA[<]]>.


3. Applications

XML est presque exclusivement associé à Java car l'universalité de ces deux technologies les rend très complémentaires l'une de l'autre. La majeure partie des logiciels tirant parti de XML sont donc écrits en Java. Parmi les applications de XML on notera la génération de pages HTML depuis des documents XML et leur feuilles de styles associées (feuilles XSL, écrites en... XML !), mais aussi description d'interfaces graphiques, bases de données, descriptions hiérarchicales (par exemple pour des scènes graphiques modélisées en 3D), propriétés utilisateurs, etc...
Pour vous donner une idée de l'apport de XML dans une application, vous pourrez essayer Ant, une Make puissant et multiplateforme (), FiJI, un générateur d'installeurs (), XT, un générateur de fichiers HTML basé sur les feuilles XSL () ou encore Jext, un éditeur de code source (). De nombreux outils pour XML ou l'intégrant sont disponibles sur le site alphaWorks d'IBM (). Ce site est une véritable mine d'or pour les fanatiques de XML (éditeurs, visualiseurs, dérivés, parsers validants, ...), n'hésitez donc pas à y pointer le bout de votre navigateur. Enfin, deux sites indispensables pour découvrir XML: et .
Après cette brève description de la norme XML, nous nous pencherons sur l'écriture de DTD et sur la gestion de XML dans une application Java.


4. Screenshots

Une DTD (Document Type Definition
Une DTD (Document Type Definition

Une interface réalisée en XML
Une interface réalisée en XML

Page internet générée par XML et XSL
Page internet générée par XML et XSL

En provenance d'AlphaWorks, un parser validant
En provenance d'AlphaWorks, un parser validant

Un fichier XML bien formé, non valide
Un fichier XML bien formé, non valide


Valid XHTML 1.1!Valid CSS!

Cette création est mise à disposition sous un contrat Creative Commons (Paternité - Partage des Conditions Initiales à l'Identique).
Contacter le responsable de la rubrique XML