Le guide simplifié sur la syntaxe XML (avec exemples)

Comprendre le XML, sa syntaxe, son utilisations et ses contraintes !

Article publié le 03/09/2024, dernière mise à jour le 03/09/2024

Le XML est un langage générique pour représenter facilement des données complexes dans un fichier textuel ; le nom “XML” est un acronyme pour eXtensible Markup Language (ou Langage à balise extensible).

C’est un format ouvert, créé en 1998 par le W3C (World Wide Web Consortium)

Voici un exemple basique de données écrites en XML :

<?xml version="1.0"?>
<!DOCTYPE Library SYSTEM "https://example.com/xml/library.dtd">
<Library>
   <Book id="1">
      <Author>Garghentini, Davide</Author>
      <Title>XML Developer's Guide</Title>
   </Book>
</Library>

La syntaxe

Découvrons maintenant la syntaxe d’un fichier, pour que vous puissiez la comprendre, et écrire vos propres fichiers XML !

Le prolog (l’entête)

Le “prolog”, c’est cette balise, tout au début du fichier :

<?xml version="1.0"?>

Elle permet simplement d’indiquer que le document est au format XML, et indique également la version du format utilisée.

À noter qu’il existe une version 1.1 pour XML, mais qu’il est recommandé d’utiliser la 1.0, comme expliqué ici.

Le prolog est en réalité optionnel (pour la plupart des interpréteurs), mais si il est présent, alors il devra absolument apparaitre en tout premier dans le document.

Le Document Type Definition (schéma)

Un DTD est un document dans lequel est précisément décrite la structure de données à suivre pour qu’un document XML soit valide dans son contenu :

<!DOCTYPE Library SYSTEM "https://example.com/xml/library.dtd">

Si un DTD est déclaré au début de votre fichier XML, alors ce dernier devra respecter le schéma vous pour être considéré comme “bien formé” (syntaxe) et “valide” (contenu).

Nous n’allons pas nous attarder sur le DTD, car tous les fichiers XML n’ont pas besoin de validation.

Mais si le sujet vous intéresse, nous avons publié un article complet sur la syntaxe et le fonctionnement des fichiers DTD !

Les éléments

Tout le contenu d’un fichier XML se trouve dans ce que l’on appelle un élément racine, qui va lui-même contenir une hiérarchie plus ou moins grande d’élément enfants.

Chaque élément est composé de trois parties :

  • Le nom de l’élément (obligatoire)
  • Les attributs (optionnels)
  • Son contenu (optionnel)

Voici un élément d’exemple :

<text id="1">
	Lorem Ipsum
</text>

On dira que l’élément text possède un attribut id avec la valeur “1” et son contenu est un texte avec la valeur “Lorem Ipsum”

Les namespace

Il est parfois nécessaire de regrouper des éléments à destination (ou en provenance) de différentes applications, ce qui peut parfois poser des conflits au niveau des noms des éléments.

C’est pour cela qu’il est possible d’utiliser des “espaces de noms”, qui sont des préfixes pour identifier précisément un élément.

Un exemple avec des éléments HTML que l’on va utiliser avec un préfixe, grâce à l’attribut xmlns , comme ceci :

<root>
	<html:table xmlns:html="https://www.w3.org/TR/html5/">
	  <html:tr>
	    <html:td>Lorem</h:td>
	    <html:td>Ipsum</h:td>
	  </html:tr>
	</html:table>
</root>

L’URL utilisée pour un namespace pointe en général vers une spécification technique, mais rien n’y oblige, tant que le l’identifiant est unique !

Les attributs

Un attribut est simplement un morceau de donnée qui concerne l’élément lui-même, et dont le contenu est forcément sous la forme d’une chaine de caractère :

unAttribut="uneValeur"

On parle parfois de données clé - valeur

Un exemple pour décrire une personne grâce à des attributs :

<Person firstname="John" lastname="Doe"/>

Le contenu

Comme nous l’avons vu précédemment, le contenu peut être de 3 types différents :

  • Vide
  • D’autres éléments enfants
  • De la donnée brute (ie. du texte)

Ce qui nous donne ce genre d’éléments :

<!-- vide -->
<Person firstname="John" lastname="Doe"/>

<!-- enfants -->
<School>
	<Course/>
	<Course/>
</School>

<!-- Donnée brut -->
<Text>
	Lorem ipsum
</Text>

Pour les données brutes, il existe deux formats qui sont CDATA et PCDATA, que nous allons voir toute de suite !

PCDATA vs CDATA

Pour faire simple, le PCDATA (pour Parsed Character Data) représente du contenu texte qui pourra être interprété par le parseur XML. Exemple :

<Text>
	Hello <span>World</span>
</Text>

Ici, le contenu sera interprété, et le contenu <span>World</span> sera traité comme un élément XML.

Pour éviter cela, tout en incluant du contenu avec des caractères comme <, > et /, on peut utiliser le format CDATA (pour Character Data). Il faudra alors insérer notre contenu dans une balise <![CDATA[…]]> comme ceci :

<Text>
	<![CDATA[[Hello <span>World</span>]]>
</Text>

Dans ce cas-là, notre donnée sera considérée comme du texte brut, sans aucun risque d’interprétation de code.

Les commentaires

Il est également possible d’utiliser une balise “commentaire” pour ajouter des indications dans notre fichier, pour se repérer ou ajouter du contexte, mais qui sera ignoré lors de l’interprétation du fichier XML :

<!--Your comment-->

Quelques règles

Il existe une poignée de règles à retenir (et appliquer) pour que votre fichier XML soit considéré comme valide ET qu’il respecte le schéma fourni (s’il existe) :

  • Un document XML ne doit posséder qu’un seul élément racine
  • Les éléments XML doivent toujours être fermés
  • Le nom des balises XML sont sensibles à la casse
  • L’encapsulation des éléments doit être respectée
  • Les valeurs des attributs doivent nécessairement être entourés par des guillemets "

Valider ses fichiers XML

De nombreux problèmes dans vos applications peuvent survenir lorsque votre fichier XML est mal-formé, possède un problème de syntaxe ou même d’encodage.

C’est pour cela qu’il est recommandé d’utiliser un validateur pour vérifier que la syntaxe de votre fichier est correcte !

Vous pouvez utiliser gratuitement celui que l’on a développé chez Code-Garage : https://apps.code-garage.com/xml-validator

Attention, la plupart des validateurs (dont celui-ci) valident la syntaxe globale, mais ne valide pas la correspondance avec un schéma DTD.

À savoir

HTML

Si vous êtes frappé.e par la ressemblance entre le XML et le HTML, c’est normal !

Le HTML est à l’origine une grammaire spécifique du XML (avec un ensemble d’éléments valides comme <body>, <p>, <img/> entre autres), même si en réalité aujourd’hui, certains documents peuvent être des pages HTML fonctionnelles, mais non valides en tant que fichiers XML.

C’est pour cela qu’il existe la norme XHTML.

SVG

Les fichiers de type SVG sont en réalité des fichiers XML, dans lesquels sont décris des éléments graphiques grâce à des éléments spéciaux tels que <g>, <rect>, <circle>, etc…


Vous avez terminé l'article ?

Commentaires (0)

pour laisser un commentaire

Aucun commentaire pour l'instant