Comment valider du XML avec un schéma XSD (et corriger les erreurs)
Un XML peut être bien formé, avec toutes les balises fermées et tous les caractères échappés, et pourtant ne pas convenir au système qui le reçoit : un identifiant manquant, un prix écrit en toutes lettres, des éléments dans le mauvais ordre. C’est ce que détecte un schéma XSD. Factures électroniques, fichiers bancaires, flux de produits et la plupart des échanges de données entre entreprises en ont un, et les fichiers qui ne le respectent pas sont refusés.
Ce guide explique comment vérifier un fichier avec le validateur XML gratuit et détaille les messages d’erreur un par un. Pour les bases du XML bien formé, voir comment formater et valider du XML.
Ce que dit un schéma XSD
Un schéma est lui-même un fichier XML. Celui-ci décrit un catalogue de livres :
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="catalog">
<xs:complexType>
<xs:sequence>
<xs:element name="book" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
<xs:attribute name="id" type="xs:ID" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>xs:elementdéclare un élément ; le plus extérieur (catalog) est la racine.xs:sequenceliste les éléments enfants dans l’ordre :titledoit précéderprice.maxOccurs="unbounded"autorise un nombre quelconque de livres ; par défaut, un élément doit apparaître exactement une fois.typefixe ce que peut être une valeur :xs:stringest un texte quelconque,xs:decimalun nombre comme 29.95.use="required"rend l’attributidobligatoire.
Valider du XML avec un schéma
- Ouvrez le validateur XML et ajoutez votre XML à gauche : collez-le, cliquez sur Ouvrir un fichier ou déposez le fichier.
- Ajoutez le schéma à droite, dans Schéma XSD (facultatif). Les boutons Exemple chargent l’exemple de cette page.
- Cliquez sur Valider le XML. Un ✓ Valide en vert signifie que le fichier est conforme. Sinon, vous verrez par exemple ✗ 2 problèmes trouvés selon le schéma, avec la ligne de chaque problème et un bouton Aller à la ligne.
Voici le XML d’exemple. Il a l’air correct, mais enfreint deux fois le schéma :
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<book id="bk101">
<title>XML & JSON for Everyone</title>
<price>29.95</price>
</book>
<book>
<title>Daten für alle</title>
<price>free</price>
</book>
</catalog>Le validateur signale la ligne 7 (le second livre n’a pas d’id) et la ligne 9 (le prix vaut « free », qui n’est pas un nombre).
Les messages d’erreur, expliqués
La vérification du schéma utilise libxml2, la bibliothèque XML standard de nombreux logiciels : ses messages sont donc en anglais. Voici les plus fréquents :
Element 'book': The attribute 'id' is required but missing.
Un attribut obligatoire manque. Ajoutez-le :<book id="bk102">.Element 'price': 'free' is not a valid value of the atomic type 'xs:decimal'.
La valeur ne correspond pas au type. Les décimaux s’écrivent avec un point (29.95, pas29,95), sans symbole monétaire, espace ni mot. Les autres types fonctionnent pareil :xs:dateattend2026-10-30,xs:booleanattendtrueoufalse.Element 'price': This element is not expected. Expected is ( title ).
L’élément n’est pas à sa place : la séquence du schéma dit quetitlevient en premier. Rangez les éléments dans l’ordre où le schéma les liste.Element 'isbn': This element is not expected.
Le schéma n’autorise pas du tout cet élément ici. Vérifiez son orthographe, majuscules comprises, ou supprimez-le.Element 'order', attribute 'status': [facet 'enumeration'] The value 'sent' is not an element of the set {'open', 'paid', 'shipped'}.
Seules les valeurs listées sont autorisées. Utilisez l’une d’elles, écrite exactement pareil.Element 'order': No matching global declaration available for the validation root.
Le schéma ne prévoit rien pour l’élément racine. Le plus souvent, l’espace de noms manque ou est faux : si le schéma a untargetNamespace, le XML a besoin du mêmexmlns="…"sur son élément racine.
Corrigez les problèmes de haut en bas. Une erreur peut en provoquer d’autres plus bas : revalidez donc après chaque correction, la liste raccourcit souvent plus que prévu.
Bon à savoir
- Un seul fichier de schéma. Les schémas qui chargent d’autres fichiers avec
xs:includeouxs:importne peuvent pas les charger ici ; le rapport indique le fichier manquant. Copiez d’abord ces définitions dans un seul schéma. - XSD 1.0. Les fonctions propres à XSD 1.1, comme les assertions, ne sont pas prises en charge. La plupart des schémas utilisés sont en XSD 1.0.
- Premier lancement. Le moteur de vérification (environ 1 Mo) se télécharge la première fois que vous validez avec un schéma ; ensuite, c’est instantané.
- Pas de schéma ? Laissez le cadre vide pour vérifier seulement que le XML est bien formé.
Autres outils XML
- Formateur XML : rendre d’abord le fichier lisible, ou l’explorer dans la Vue en arbre.
- Testeur XPath : trouver les éléments visés par un message. Voir comment utiliser XPath.
- CSV en XML : créer le XML à partir d’un tableur, puis le valider ici.
Mon XML est-il envoyé ?
Non. La vérification, y compris celle du schéma, se fait dans votre navigateur : votre XML et votre schéma ne quittent jamais votre appareil.
Questions fréquentes
Où trouver le XSD ?
Auprès de celui qui reçoit le fichier : la documentation du système, la norme à respecter (les normes de facturation électronique et bancaires publient leurs schémas) ou les développeurs de votre partenaire.
Les DTD sont-elles prises en charge ?
Non, le validateur vérifie uniquement avec des schémas XSD.
Valider modifie-t-il mon XML ?
Non. Il lit seulement le fichier et signale les problèmes. Corrigez-les dans votre éditeur ou dans le cadre, puis revalidez.
Autres articles
- Comment comparer deux fichiers Excel ou CSV et trouver les différences
- JSON ou YAML : différences, quand utiliser l’un ou l’autre et comment convertir
- Comment convertir un PNG en WebP (et quand ne pas le faire)
- Comment créer un QR code vCard pour votre carte de visite
- Comment convertir du CSV en XML (depuis Excel et Google Sheets aussi)