1. Accueil
  2. Blog
  3. Comment valider du XML avec un schéma XSD (et corriger les erreurs)
Outils XML

Comment valider du XML avec un schéma XSD (et corriger les erreurs)

Publié le 30 octobre 2026 · 7 min de lecture

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:element déclare un élément ; le plus extérieur (catalog) est la racine.
  • xs:sequence liste les éléments enfants dans l’ordre : title doit précéder price.
  • maxOccurs="unbounded" autorise un nombre quelconque de livres ; par défaut, un élément doit apparaître exactement une fois.
  • type fixe ce que peut être une valeur : xs:string est un texte quelconque, xs:decimal un nombre comme 29.95.
  • use="required" rend l’attribut id obligatoire.

Valider du XML avec un schéma

  1. Ouvrez le validateur XML et ajoutez votre XML à gauche : collez-le, cliquez sur Ouvrir un fichier ou déposez le fichier.
  2. Ajoutez le schéma à droite, dans Schéma XSD (facultatif). Les boutons Exemple chargent l’exemple de cette page.
  3. 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 &amp; 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, pas 29,95), sans symbole monétaire, espace ni mot. Les autres types fonctionnent pareil : xs:date attend 2026-10-30, xs:boolean attend true ou false.
  • 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 que title vient 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 un targetNamespace, le XML a besoin du même xmlns="…" 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:include ou xs:import ne 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

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.