Formateur XML
Formater et embellir les documents XML
XML est un langage de balisage pour les donnees structurees. Malgre la montee en puissance de JSON, XML reste dominant dans les systemes d'entreprise, les API SOAP, le SVG et la messagerie financiere.
Qu’est-ce que XML ?
XML (eXtensible Markup Language) est un langage de balisage concu pour stocker et transporter des donnees structurees. Contrairement au HTML, qui possede un ensemble fixe de balises pour afficher du contenu, XML vous permet de definir vos propres balises — ce qui en fait un meta-langage pour creer des formats de donnees personnalises.
XML a ete publie comme recommandation W3C en 1998, concu pour etre a la fois lisible par l’humain et analysable par la machine. Il est issu de SGML (Standard Generalized Markup Language), simplifiant la complexite tout en conservant la puissance necessaire pour decrire des donnees structurees de tout type.
Bien que JSON ait largement remplace XML pour les API web et l’echange de donnees leger, XML reste profondement ancre dans l’informatique d’entreprise. La messagerie financiere (ISO 20022), la sante (HL7 FHIR), les systemes gouvernementaux, les formats de documents (OOXML, ODF) et les graphiques vectoriels (SVG) reposent tous sur XML comme fondation.
Elements, attributs et espaces de noms
Elements
Les elements sont les briques de base du XML. Un element se compose d’une balise ouvrante, d’un contenu et d’une balise fermante :
<title>Understanding XML</title>
Les elements peuvent contenir du texte, d’autres elements (enfants) ou un melange des deux. Les elements vides peuvent utiliser la syntaxe auto-fermante :
<separator />
Attributs
Les attributs fournissent des metadonnees supplementaires sur un element. Ils apparaissent sous forme de paires nom-valeur a l’interieur de la balise ouvrante :
<book id="42" language="en">
<title>1984</title>
</book>
Un debat frequent est de savoir s’il faut utiliser des elements ou des attributs pour les donnees. La recommandation generale : utilisez les attributs pour les metadonnees (identifiants, types, indicateurs) et les elements pour le contenu des donnees (noms, valeurs, descriptions).
Espaces de noms
Les espaces de noms resolvent le probleme des collisions de noms d’elements lors de la combinaison de plusieurs vocabulaires XML dans un meme document. Un espace de noms est declare avec l’attribut xmlns et associe a un prefixe :
<invoice xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
<cbc:ID>INV-001</cbc:ID>
<cac:AccountingSupplierParty>
<cac:Party>
<cbc:Name>Acme Corp</cbc:Name>
</cac:Party>
</cac:AccountingSupplierParty>
</invoice>
Sans espaces de noms, un element <ID> d’un schema pourrait entrer en conflit avec un element <ID> d’un autre. Les espaces de noms rendent chaque element globalement unique en combinant l’URI de l’espace de noms avec le nom local de l’element.
Pourquoi XML perdure
Malgre la dominance de JSON dans le developpement web, XML ne disparait pas. Plusieurs caracteristiques le rendent indispensable :
| Fonctionnalite | Avantage XML |
|---|---|
| Validation par schema | XSD fournit des systemes de types riches, des contraintes et de l’heritage — bien au-dela de JSON Schema |
| Espaces de noms | Permettent de combiner plusieurs vocabulaires dans un meme document sans conflits |
| Contenu mixte | Les elements peuvent contenir a la fois du texte et des elements enfants — essentiel pour les documents et le balisage |
| Transformation | XSLT permet la transformation declarative de documents XML en d’autres formats |
| Outillage mature | Des decennies d’analyseurs, validateurs, editeurs et bibliotheques eprouves |
| Ecosysteme de standards | ISO 20022, SOAP, SVG, XHTML, RSS, UBL, HL7 — construits sur XML |
XML excelle la ou les documents doivent etre valides selon des schemas formels, transformes en differents formats ou combines a partir de sources multiples. JSON excelle la ou la simplicite, la compacite et l’interoperabilite avec JavaScript sont prioritaires.
XML vs JSON
| Aspect | XML | JSON |
|---|---|---|
| Syntaxe | Balises avec attributs | Paires cle-valeur |
| Verbosite | Elevee (balise ouvrante + fermante) | Faible (accolades, crochets) |
| Types de donnees | Texte uniquement (les schemas ajoutent les types) | 6 types natifs |
| Commentaires | Supportes (<!-- -->) | Non supportes |
| Espaces de noms | Support complet | Non applicable |
| Schema | XSD, DTD, RelaxNG | JSON Schema |
| Analyse | DOM, SAX, StAX | JSON.parse() |
| Usage principal | Entreprise, documents | API, configurations |
| Taille de fichier | Plus grande | Plus petite |
Pour les API web, JSON est le choix evident — il est plus compact, nativement analyse par JavaScript et plus simple a utiliser. Pour l’integration en entreprise, les formats de documents et les industries reglementees, la validation par schema, les espaces de noms et les capacites de transformation de XML en font le meilleur choix.
Cas d’utilisation courants
- Messagerie financiere : Les messages ISO 20022 (pacs.008, pain.001, camt.053) utilisent XML pour les instructions de paiement, les releves et le reporting a travers les reseaux bancaires mondiaux
- Services web SOAP : Les API d’entreprise dans la banque, l’assurance et le secteur public utilisent des enveloppes SOAP — des documents XML echanges via HTTP
- Graphiques vectoriels : SVG (Scalable Vector Graphics) est un format base sur XML utilise sur tous les sites web modernes pour les icones, logos et illustrations
- Formats de documents : Microsoft Office (OOXML), LibreOffice (ODF) et EPUB sont des archives ZIP contenant des fichiers XML
- Flux web : Les flux RSS et Atom utilisent XML pour syndiquer les articles de blog, les actualites et les episodes de podcasts
- Configuration : Maven (
pom.xml), les manifestes Android, les configurations Spring XML et les pipelines CI/CD (certains Jenkins) utilisent XML - Sante : Les documents HL7 FHIR et CDA utilisent XML pour echanger des dossiers patients et des donnees cliniques entre les systemes de sante
Essayez ces exemples
Un document XML bien forme illustrant des elements imbriques, des attributs (id, genre, number), du contenu textuel et une indentation correcte. La declaration XML specifie la version 1.0 et l'encodage UTF-8.
<?xml version="1.0" encoding="UTF-8"?>
<library>
<book id="1" genre="fiction">
<title>1984</title>
<author>George Orwell</author>
<year>1949</year>
<chapters>
<chapter number="1">The clocks were striking thirteen.</chapter>
<chapter number="2">It was a bright cold day in April.</chapter>
</chapters>
</book>
</library> Une enveloppe SOAP utilisant des espaces de noms XML. Le prefixe 'soap' correspond au schema d'enveloppe SOAP, et le prefixe 'm' correspond a un espace de noms de service boursier personnalise. Les espaces de noms empechent les collisions de noms d'elements entre differents vocabulaires.
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header />
<soap:Body>
<m:GetPrice xmlns:m="http://www.example.org/stock">
<m:StockName>AAPL</m:StockName>
</m:GetPrice>
</soap:Body>
</soap:Envelope>