Formateur XML

Formater et embellir les documents XML

1
Comprendre Format XML
TL;DR

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 :

FonctionnaliteAvantage XML
Validation par schemaXSD fournit des systemes de types riches, des contraintes et de l’heritage — bien au-dela de JSON Schema
Espaces de nomsPermettent de combiner plusieurs vocabulaires dans un meme document sans conflits
Contenu mixteLes elements peuvent contenir a la fois du texte et des elements enfants — essentiel pour les documents et le balisage
TransformationXSLT permet la transformation declarative de documents XML en d’autres formats
Outillage matureDes decennies d’analyseurs, validateurs, editeurs et bibliotheques eprouves
Ecosysteme de standardsISO 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

AspectXMLJSON
SyntaxeBalises avec attributsPaires cle-valeur
VerbositeElevee (balise ouvrante + fermante)Faible (accolades, crochets)
Types de donneesTexte uniquement (les schemas ajoutent les types)6 types natifs
CommentairesSupportes (<!-- -->)Non supportes
Espaces de nomsSupport completNon applicable
SchemaXSD, DTD, RelaxNGJSON Schema
AnalyseDOM, SAX, StAXJSON.parse()
Usage principalEntreprise, documentsAPI, configurations
Taille de fichierPlus grandePlus 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

XML formate avec elements imbriques Valide

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>
XML avec espace de noms Valide

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>