Validateur XML

Valider le XML selon un schéma

XML
1
Schéma XSD (optionnel)
Comprendre Validation XML
TL;DR

La validation XML verifie si un document est bien forme (syntaxe correcte) et eventuellement valide (conforme a un schema). La bonne formation est requise, la validite est optionnelle.

Qu’est-ce que la validation XML ?

La validation XML est le processus de verification d’un document XML selon deux niveaux de conformite : la bonne formation et la validite.

La bonne formation est l’exigence de base. Un document XML bien forme respecte les regles syntaxiques definies par la specification XML 1.0 : chaque balise ouvrante a une balise fermante correspondante, les elements sont correctement imbriques, les valeurs d’attributs sont entre guillemets et le document possede exactement un element racine. Si un document n’est pas bien forme, les analyseurs XML le rejetteront categoriquement.

La validite est une verification optionnelle plus stricte. Un document XML valide est bien forme et conforme a un schema — une definition formelle des elements, attributs et types de donnees autorises et dans quel ordre. Les schemas sont definis a l’aide de XSD (XML Schema Definition), DTD (Document Type Definition) ou RelaxNG.

Bien forme vs valide

La distinction entre ces deux niveaux est fondamentale pour travailler avec XML :

VerificationPorteeRequise ?Definie par
Bien formeRegles syntaxiquesToujoursSpecification XML 1.0
ValideStructure + types de donneesOptionnelleSchema XSD, DTD ou RelaxNG

Un document peut etre bien forme sans etre valide. Par exemple, un fichier XML bien forme peut avoir une syntaxe correcte mais contenir un element que le schema n’autorise pas. Cependant, un document ne peut pas etre valide sans etre bien forme — la correction syntaxique est un prerequis.

Regles de bonne formation

La specification XML 1.0 exige :

  1. Element racine unique : Le document doit avoir exactement un element de niveau superieur qui englobe tout le contenu.
  2. Balises correspondantes : Chaque balise ouvrante (<element>) doit avoir une balise fermante correspondante (</element>), ou etre auto-fermante (<element />).
  3. Imbrication correcte : Les elements doivent etre imbriques correctement — <a><b></b></a> est valide, <a><b></a></b> ne l’est pas.
  4. Attributs entre guillemets : Toutes les valeurs d’attributs doivent etre entre guillemets simples ou doubles (id="1" ou id='1').
  5. Caracteres speciaux echappes : Les caracteres comme <, >, &, ' et " doivent etre echappes dans le contenu textuel (&lt;, &gt;, &amp;, &apos;, &quot;).
  6. Declaration XML valide : Si elle est presente, la declaration <?xml ?> doit etre la toute premiere chose du document.

Erreurs XML courantes

ErreurExempleCorrection
Balises non correspondantes<name>Alice</Name>XML est sensible a la casse : <name> doit etre ferme avec </name>
Esperluette non echappee<text>Tom & Jerry</text>Utilisez &amp; : <text>Tom &amp; Jerry</text>
Guillemets manquants sur l’attribut<item id=5>Mettez la valeur entre guillemets : <item id="5">
Elements racine multiples<a/><b/>Englobez dans une racine unique : <root><a/><b/></root>
Balise non fermee<br>Auto-fermez : <br /> (XML n’est pas HTML)
Caracteres invalidesCaracteres de controle (0x00-0x08)Supprimez-les ou encodez-les

L’erreur la plus frequente pour les developpeurs venant du HTML est d’oublier que XML est sensible a la casse et strict. En HTML, <BR>, <br> et <Br> sont identiques. En XML, ce sont trois elements differents.

Validation XSD

XSD (XML Schema Definition) est le langage de schema le plus utilise pour XML. Un fichier XSD definit :

  • Quels elements et attributs sont autorises
  • Le type de donnees de chaque element (chaine, entier, date, decimal, etc.)
  • La cardinalite (combien de fois un element peut apparaitre)
  • L’ordre dans lequel les elements enfants doivent apparaitre
  • Les valeurs par defaut et fixes
  • Les contraintes d’enumeration (valeurs autorisees)

Lorsqu’un document XML est valide par rapport a un XSD, le validateur verifie chaque element et attribut selon les regles du schema. Si une regle est violee, le validateur signale l’erreur specifique avec son emplacement dans le document.

La validation XSD est essentielle dans les systemes d’entreprise ou les messages XML doivent etre conformes a des standards stricts — comme ISO 20022 pour la messagerie financiere, HL7 pour la sante ou UBL pour la facturation electronique.

Cas d’utilisation courants

  • Validation des messages d’API : Les services web SOAP valident les messages XML entrants et sortants par rapport aux schemas WSDL/XSD pour garantir la conformite au contrat
  • Messagerie financiere : Les messages ISO 20022 (pacs, pain, camt) sont valides par rapport aux schemas XSD publies avant soumission aux reseaux de paiement
  • Fichiers de configuration : Les serveurs d’applications (Tomcat, Spring, JBoss) valident les fichiers de configuration XML par rapport a leurs DTD ou XSD au demarrage
  • Import/export de donnees : Les pipelines ETL valident les flux de donnees XML par rapport aux schemas avant traitement pour detecter les erreurs de format en amont
  • Standards de documents : Les documents SVG, XHTML, RSS, Atom et EPUB peuvent etre valides par rapport a leurs schemas respectifs pour garantir la conformite
  • Conformite reglementaire : Les agences gouvernementales et les organismes sectoriels exigent que les soumissions XML (declarations fiscales, dossiers medicaux, declarations douanieres) passent la validation de schema

Essayez ces exemples

XML bien forme et valide Valide

Un document XML bien forme avec une declaration XML correcte, un element racine unique (<book>), des elements enfants correctement imbriques et des balises ouvrantes/fermantes correspondantes.

<?xml version="1.0" encoding="UTF-8"?> <book> <title>The Great Gatsby</title> <author>F. Scott Fitzgerald</author> <year>1925</year> </book>
Mal forme -- Balises non correspondantes Invalide

Invalide car la balise ouvrante <author> ne correspond pas a la balise fermante </autor> (faute de frappe : 'autor' au lieu de 'author'). Les analyseurs XML rejetteront entierement ce document a la premiere erreur de bonne formation.

<?xml version="1.0"?> <book> <title>The Great Gatsby</title> <author>F. Scott Fitzgerald</autor> </book>
XML valide + Schema XSD Valide

Un document XML bien forme avec un schema XSD correspondant. Le schema definit un element <product> contenant <name> (chaine), <price> (decimal) et <quantity> (entier) en sequence stricte. Le XML respecte toutes les contraintes de type et de structure.

<?xml version="1.0" encoding="UTF-8"?> <product> <name>Laptop Pro 15</name> <price>1299.99</price> <quantity>50</quantity> </product>
Bien forme mais invalide selon le XSD Invalide

Le XML est bien forme (syntaxe valide), mais viole le schema XSD de deux facons : <price> contient 'not-a-number' au lieu d'une valeur decimale, et <color> n'est pas defini dans le schema tandis que l'element requis <quantity> est absent.

<?xml version="1.0" encoding="UTF-8"?> <product> <name>Laptop Pro 15</name> <price>not-a-number</price> <color>Silver</color> </product>