Validateur XSD

Un document XML bien formé peut encore être incorrect : élément requis manquant, type de données incorrect pour un attribut, ou éléments dans le mauvais ordre. XSD (XML Schema Definition) décrit exactement à quoi le document doit ressembler. Ce validateur associe votre XML à son XSD, exécute le validateur de schéma XML W3C et liste chaque violation avec la ligne, l’élément et la contrainte spécifique qui a été enfreinte.

Comment valider XML par rapport à XSD

  1. 1

    Collez les deux fichiers

    XML d'un côté, schéma XSD de l'autre. Plusieurs schémas peuvent être collés ensemble.

  2. 2

    Exécutez la validation

    Le parseur associe les éléments, attributs et types aux déclarations de schéma.

  3. 3

    Examinez les erreurs

    Chaque violation montre le chemin de l'élément, la contrainte attendue et la valeur réelle.

  4. 4

    Corrigez et revalidez

    Modifiez sur place et relancez sans recharger.

Ce que XSD vérifie

  • Noms d’éléments et cardinalité : requis, optionnel, occurrences min/max.
  • Ordre des éléments : séquence, choix, tous.
  • Présence et type d’attribut : requis vs optionnel, valeurs par défaut, valeurs fixes.
  • Types de données : xs:string, xs:integer, xs:decimal, xs:dateTime, xs:boolean, xs:anyURI, personnalisé.
  • Restrictions : longueur min/max, énumérations, motifs regex, valeurs min/max.
  • Intégrité référentielle : xs:key, xs:keyref, xs:unique pour les contraintes entre éléments.

Erreurs typiques

Erreur Contrainte XSD
Élément requis manquant <email> minOccurs="1"
Trop d’éléments <phone> maxOccurs="2" dépassé
Valeur “abc” n’est pas un entier valide type="xs:integer"
Valeur “[email protected]” ne correspond pas au motif xs:pattern sur xs:string
Éléments hors d’ordre xs:sequence
Élément inconnu <foo> Non déclaré dans le schéma
Clé dupliquée Violation xs:unique

Choisir entre XSD et alternatives

  • XSD : standard W3C, verbeux, puissant, largement supporté. Premier choix pour XML d’entreprise.
  • RELAX NG : syntaxe plus simple, tout aussi expressive. Populaire dans les formats de documentation (DocBook, TEI).
  • Schematron : basé sur des règles, exécute des assertions XPath sur le document. Bon pour les règles métier au-delà de la structure.
  • DTD : plus ancien, beaucoup moins expressif. Toujours utilisé pour la compatibilité historique avec HTML.

De nombreux projets utilisent XSD pour la structure et Schematron pour des règles complexes entre champs.

Pièges courants

  • Les espaces de noms doivent correspondre. Si le XSD déclare targetNamespace="http://example.com" mais que le XML n’utilise pas cet espace de noms, la validation échoue avec “aucune déclaration trouvée”.
  • xs:anyType n’est pas une échappatoire magique. Il correspond à tout mais ne vous donne aucune validation.
  • Les valeurs par défaut s’appliquent uniquement lorsque l’attribut est absent. Une valeur vide explicite (attr="") ne reçoit pas la valeur par défaut.
  • Le traitement des espaces varie selon le type. xs:string les préserve, xs:token les réduit, xs:normalizedString remplace les tabulations/nouvelles lignes par des espaces.

Flux de travail de débogage

  1. Validez d’abord sans schéma (vérification de la bien-formation). Corrigez les erreurs de parsing.
  2. Ensuite, validez par rapport au schéma.
  3. Concentrez-vous sur la première erreur. Les validateurs XSD génèrent parfois des erreurs en cascade ; la première est généralement la plus exploitable.
  4. Utilisez XPath pour localiser l’élément fautif dans de grands documents.

Questions fréquentes

Non. Collez-les séparément, ou référencez le schéma via xsi:schemaLocation dans le XML. La plupart des outils supportent les deux approches.

Oui. Lorsque des éléments de différents espaces de noms apparaissent, chacun a besoin de son propre schéma. Collez-les tous ; le validateur les charge tous.

XSD 1.0. Le moteur libxml sous-jacent n’implémente pas XSD 1.1, si bien que les fonctionnalités propres à la 1.1 comme les assertions, les types conditionnels et le contenu ouvert ne sont pas appliquées.

Non. Votre XML et votre schéma ne sont envoyés au serveur que pour exécuter la validation de cette seule requête ; ils ne sont ni stockés ni journalisés ensuite.

Outils similaires

Outil disponible dans d’autres langues