Identification

Introduction au XML

Catégorie : Développement divers

Présentation

XML signifie eXtensible Markup Language. Il s'agit d'un langage informatique formel, faisant partie de la famille des langages de balisage, qui permet de décrire des structures d'informations à l'aide d'une syntaxe simple, paramétrable et facile à aborder.

Les documents XML sont conçus pour être traités et analysés par un composant logiciel spécialisé agissant dans le cadre d'une application finale. Ce composant logiciel c'est un est nommé "processeur XML".

XML a principalement été conçu pour :

  • être directement utilisable sur Internet,
  • couvrir une grande variété d'applications,
  • être compatible avec SGML (dont il est un dérivé),
  • être facile à lire et à écrire pour un humain (un éditeur de texte basique suffit),
  • être formel et concis.
XML est réputé extensible car il permet de spécifier des règles syntaxiques personnalisées et fournit les mécanismes nécessaires à la validation de ces règles.

Anatomie d'un document XML

Le XML est rédigé en texte plein et se compose d'unités de stockage élémentaires que l'on appelle nœuds. Les nœuds permettent de décrire une structure arborescente et peuvent être de plusieurs natures : éléments, attributs, commentaires, instructions de traitement, texte, etc.

Tout document XML doit comporter au moins un noeud, parent de tous les autres qui est désigné par le terme "racine", "nœud racine" ou "élément racine".

Le prologue

Le prologue est la première partie d'un document XML. Il contient des informations applicables à l'ensemble du document ; il commence au début du document et s'étend jusqu'à son nœud racine.

Un document XML doit au minimum commencer par la déclaration XML suivante, qui permet d'indiquer la version de la recommendation utilisée dans le document :

<?xml version="1.0"?>

Par défaut, la norme spécifie que tous les processeurs XML doivent être compatibles avec les jeux de caractères UTF-8 et UTF-16. Si vous utilisez un autre encodage, il faut l'indiquer au processeur de la manière suivante (ici pour de l'ISO-8859-15) :

<?xml version="1.0" encoding="ISO-8859-15"?>

Le prologue peut contenir d'autres types d'informations : commentaires, définition de type de document ou instructions de traitement destinées à l'application.

Les commentaires

Les commentaires permettent d'apporter des précisions ou de faire des remarques à l'attention des personnes susceptibles de lire le code source d'un document XML.
Ils ne sont pas interprétés par les processeurs XML et sont encadrés par les séquences de caractères <!-- et -->.

Voici un exemple de commentaire XML :

<!-- Ceci est un commentaire XML -->

À retenir :
- Un commentaire ne doit jamais contenir la séquence de caractères "--" (double tiret).

Les éléments

Les éléments sont les briques de base de XML ; ils permettent de définir une entité. On distingue deux types d'éléments :

  • les éléments avec contenu, constitués d'une balise ouvrante notée <balise>, suivie d'un contenu optionnel et d'une balise fermante notée </balise>,
  • les éléments vides, composés d'une balise spéciale notée <balise />

Un des principaux intérêts de XML est qu'il est possible de définir des élément personnalisés pour peu qu'ils respectent quelques règles de nommage dont voici une version simplifiée qui vous garantira une compatibilité maximum :

  • N'utilisez que des lettres, des chiffres ou le tiret bas (underscore) ; oubliez les accents et tout autre caractère,
  • Ne commencez pas un nom par la séquence de caractères "xml", ni par autre chose qu'une lettre,
  • Les processeurs XML sont sensible à la casse ; "balise" et "baLise" sont donc deux choses distinctes.

À retenir :
- Les éléments vides ne peuvent pas recevoir de contenu.

Voici deux manières correctes de déclarer un élément de type "véhicule" en XML :

<!-- Première manière : élément avec contenu-->
<vehicule></vehicule>

<!-- Deuxième manière : élément vide -->
<vehicule />

La différence entre ces deux déclarations se situe au niveau sémantique. La première déclaration concerne un véhicule pouvant contenir d'autres nœuds, alors que la deuxième concerne un véhicule qui ne contiendra aucun nœud.

Si nous ajoutons deux passagers à notre véhicule, cela pourrait donner dans le cadre de notre première déclaration :

<!-- Un véhicule embarquant deux personnes -->
<vehicule>
    <personne />
    <personne />
</vehicule>

Alors que dans le cadre de notre deuxième déclaration c'est impossible car un élément vide ne peut pas avoir de contenu.

Les attributs

Les attributs permettent d'apporter des précisions concernant les éléments auxquels ils sont raccrochés ; ce sont des caractéristiques propres à ces éléments.
Ils sont insérés dans les déclaration des balises ouvrantes et répondent au format {attribut}="{valeur}".

À retenir :
- Un attribut peut être variable mais doit être unique (ex. : l'age d'une personne),
- Un attribut ne doit pas être susceptible de contenir plusieurs lignes (ex. : un commentaire).

Par exemple, notre élément véhicule pourrait recevoir une marque, un modèle, une couleur et deux passagères :

<!-- Une HYUNDAI i20 jaune embarquant deux passagères -->
<vehicule marque="HYUNDAI" modele="i20" couleur="JAUNE">
   <personne genre="femme" prenom="Zoé" nom="DUPOND" age="24" />
   <personne genre="femme" prenom="Alexa" nom="MARTIN" age="37" />
</vehicule>

Les nœuds texte

Les nœud texte désignent les contenus de type textuels qui sont insérés entre une balise ouvrante et une balise fermante selon le format <balise>{nœud texte}</balise>

Par exemple :

<accroche>i20 5 portes &agrave; partir de 13 150 &euro;</accroche>

Les nœuds texte contiennent parfois des séquences de caractères commençant par le symbole & et finissant par le symbole ;. Ces suites de caractères spéciales sont nommées "références d'entité de caractère" et font référence à certains symboles qui n'existent pas dans tous les jeux de caractères. Cette indication permet au programme qui interprète le XML de savoir quel symbole il doit substituer à la référence au moment du traitement, indépendamment du jeu de caractères utilisé à la base.

Dans l'exemple ci-dessus &agrave; sera remplacé par la lettre à et &euro; sera remplacé par le symbole

Les sections d'échappement

Les section d'échappement commencent par la séquence de caractères <!--[CDATA[ et finissent par la séquence de caractères ]]>. Ces sections permettent de signaler au programme qui interprète le XML qu'une certaine portion de texte ne doit faire l'objet d'aucune interprétation et doit être retranscrite telle quelle.

Par exemple :

<!--[CDATA[i20 5 portes à partir de 13 150 €]]>

Les instructions de traitement

Les instructions de traitement ("Processing Instructions" en anglais) permettent de passer des informations additionnelles aux applications qui traitent le document XML. Elles sont identifiables au fait qu'elles sont délimitées pas les séquences de caractères <? et ?>.

Exemples :

<?xml-stylesheet href="style.css" type="text/css"?>
<?ProcInst seqnbr="RY3"?>
<?metainfostart?>
...
<?metainfoend?>

Et la déclaration XML alors ?

Et bien non ; la déclaration XML (première ligne d'un fichier XML) ressemble comme deux gouttes d'eau à une instruction de traitement mais ce n'en est pas vraiment une pour une raison toute simple : les instructions de traitements n'ont pas vocation à être analysées par le processeur XML, juste à être mises à disposition de l'application qui saura quoi en faire. La déclaration XML est quant à elle bel est bien analysée par le processeur XML, et si elle est incohérente il peut lever une erreur.