Aller au contenu
Aback Tools Logo

Comment Valider un XML Contre un Schéma XSD : Erreurs, Outils et CI/CD

Comment valider des documents XML contre des schémas XSD : bonne formation vs validité, anatomie d'un XSD, validation locale au navigateur et en CLI avec xmllint, erreurs XSD courantes expliquées et validation de schémas automatisée dans GitHub Actions.

DH
Tutorials & How-Tos12 min de lecture2,700 mots

Un document XML qui s'analyse sans erreur est bien formé - mais bien formé ne signifie pas correct. La validation XSD va un niveau plus profond, en vérifiant chaque élément par rapport à un contrat : les champs obligatoires sont présents, les types de données correspondent, les valeurs rentrent dans les plages autorisées et les éléments apparaissent dans le bon ordre. Ce guide explique précisément ce que vérifie la validation XSD, comment l'exécuter en ligne et en code, ce que signifient les erreurs les plus courantes et comment intégrer la validation XSD dans votre pipeline CI pour que les documents défectueux n'atteignent jamais la production.

2Niveaux de validationbonne formation + validité de schéma
100%Contrôles locaux au navigateuraucun XML ne quitte votre appareil
<1sVitesse de validationretour instantané sur les erreurs

Qu'est-ce que la validation XSD ?

XSD signifie XML Schema Definition. C'est une norme W3C qui permet de décrire la structure exacte qu'un document XML doit suivre : quels éléments sont autorisés, dans quel ordre ils apparaissent, à quels types de données leur contenu doit correspondre et quels attributs sont obligatoires ou optionnels. Lorsque vous validez un document XML contre un XSD, un analyseur lit les deux fichiers et signale chaque écart du document par rapport au contrat du schéma.

Le XSD a remplacé l'ancien format DTD (Document Type Definition) comme langage de schéma XML principal, parce qu'il est lui-même écrit en XML, prend en charge un riche ensemble de types de données intégrés (`xs:integer`, `xs:date`, `xs:boolean`, etc.) et peut exprimer des contraintes complexes comme des motifs de chaînes, des plages numériques et des exigences d'éléments conditionnelles. Les DTD se rencontrent encore dans les systèmes anciens, mais le XSD est la norme pour tout échange de données basé sur XML construit au cours des quinze dernières années.

Où la validation XSD est-elle utilisée ?

La validation XSD apparaît partout où des données XML structurées franchissent une frontière de système. Exemples courants : les requêtes et réponses de services web SOAP (décrites par WSDL, qui intègre des schémas XSD), les formats de facturation électronique et d'approvisionnement comme UBL 2.1 et EDIFACT, l'échange de données de santé avec les profils XML HL7 CDA et FHIR, les déclarations XML gouvernementales (impôts, douanes) et les fichiers de configuration de logiciels d'entreprise comme le `pom.xml` de Maven ou le XML de contexte applicatif de Spring.

  • Services SOAP / WSDL : chaque élément de requête et de réponse est défini dans un XSD intégré.
  • Facturation électronique (UBL, CII) : les formats d'approvisionnement et de factures embarquent des schémas XSD publics contre lesquels les partenaires commerciaux valident.
  • Santé (HL7, FHIR XML) : l'échange de documents cliniques exige une conformité XSD stricte avant acceptation.
  • Déclarations gouvernementales : les autorités fiscales et douanières publient des schémas XSD que les documents soumis doivent satisfaire.
  • Outillage de build : le pom.xml de Maven, le build.xml d'Ant et bien d'autres formats de configuration utilisent XSD pour l'auto-complétion et la validation dans l'IDE.

Note

La validation XSD est distincte de la correction des espaces de noms XML. Un document peut référencer le bon URI d'espace de noms et échouer malgré tout à la validation XSD si son contenu viole les contraintes du schéma. Validez toujours par rapport au schéma, et pas seulement à la déclaration d'espace de noms.

Bonne formation vs validité

Tout document XML doit d'abord être bien formé avant de pouvoir être validé. La bonne formation est vérifiée par l'analyseur XML lui-même, sans schéma nécessaire. La validité est une couche supplémentaire vérifiée par rapport à un schéma spécifique. Comprendre la distinction fait gagner un temps de débogage considérable : un validateur XSD qui reçoit un document mal formé rapporte souvent des erreurs de schéma déroutantes au lieu du vrai problème d'analyse.

Un objet textuel est un document XML bien formé sil correspond à la production étiquetée document et satisfait toutes les contraintes de bonne formation données dans la spécification.

- Spécification XML du W3C

Ce que vérifie la bonne formation

  • Appariement des balises : chaque balise ouvrante a une balise fermante correspondante (`&lt;item&gt;` → `&lt;/item&gt;`).
  • Imbrication correcte : les balises doivent se fermer en ordre inverse - `&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;/a&gt;` est valide ; `&lt;a&gt;&lt;b&gt;&lt;/a&gt;&lt;/b&gt;` ne l'est pas.
  • Élément racine unique : le document a exactement un élément de premier niveau.
  • Attributs entre guillemets : toutes les valeurs d'attributs sont entourées de guillemets simples ou doubles.
  • Caractères spéciaux échappés : `&lt;`, `&gt;`, `&`, `"` et `'` dans le contenu texte doivent utiliser des références d'entité ou des sections CDATA.
  • Noms d'éléments et d'attributs valides : les noms commencent par une lettre ou un tiret bas, pas par un chiffre ou un tiret.

Ce qu'ajoute la validité XSD par-dessus

Une fois la bonne formation acquise, la validation XSD superpose le contrat du schéma. Cela inclut la vérification que chaque élément déclaré obligatoire par `minOccurs="1"` est réellement présent, que le contenu textuel des éléments typés correspond au `xs:type` déclaré (pas de chaînes dans les champs entiers), que les valeurs numériques rentrent dans les bornes `xs:minInclusive` et `xs:maxInclusive`, que le contenu des chaînes satisfait les restrictions regex `xs:pattern`, et que les éléments enfants apparaissent dans la séquence, le choix ou le groupe all définis dans le schéma.

VérificationBonne formationValidité XSD
Appariement et imbrication des balises✓ Oui✓ Prérequis
Élément racine unique✓ Oui✓ Prérequis
Éléments obligatoires présents✗ Non✓ Oui - minOccurs
Exactitude des types de données✗ Non✓ Oui - xs:integer, xs:date, etc.
Contraintes de plages numériques✗ Non✓ Oui - minInclusive/maxInclusive
Correspondance de motifs de chaînes✗ Non✓ Oui - xs:pattern
Ordre des éléments✗ Non✓ Oui - xs:sequence / xs:choice
Valeurs d'attributs autorisées✗ Non✓ Oui - xs:enumeration

Vérificateur de bonne formation XML

Vérifiez votre document XML : balises mal formées, imbrication invalide, élément racine manquant et erreurs d'entités - local au navigateur avec diagnostics au niveau des lignes.

Open tool

Anatomie d'un schéma XSD

Avant de pouvoir valider un XML contre un XSD, vous devez comprendre ce que contient un fichier XSD. Un fichier de schéma est lui-même un document XML valide, avec un élément racine `xs:schema` dans l'espace de noms `http://www.w3.org/2001/XMLSchema`. Tout ce qui se trouve dans le schéma décrit ce que les documents XML cibles doivent être.

invoice.xsd
xml
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <!-- Root element declaration --&gt;
  <xs:element name="Invoice">
    <xs:complexType>
      <xs:sequence>
        <!-- Required string - must be present exactly once --&gt;
        <xs:element name="InvoiceNumber" type="xs:string" minOccurs="1" maxOccurs="1"/>
        <!-- Required date --&gt;
        <xs:element name="IssueDate"     type="xs:date"   minOccurs="1" maxOccurs="1"/>
        <!-- Required positive integer --&gt;
        <xs:element name="TotalAmount"   type="xs:decimal" minOccurs="1" maxOccurs="1"/>
        <!-- Optional - 0 to many line items --&gt;
        <xs:element name="LineItem"      type="LineItemType" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
      <!-- Required attribute --&gt;
      <xs:attribute name="currency" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>

  <!-- Reusable complex type definition --&gt;
  <xs:complexType name="LineItemType">
    <xs:sequence>
      <xs:element name="Description" type="xs:string"/>
      <xs:element name="Quantity"    type="xs:positiveInteger"/>
      <xs:element name="UnitPrice"   type="xs:decimal"/>
    </xs:sequence>
  </xs:complexType>

</xs:schema>

Concepts XSD clés

  • xs:element : déclare un élément par nom et type. `minOccurs` et `maxOccurs` contrôlent la cardinalité.
  • xs:complexType : définit un élément contenant des éléments enfants ou des attributs (pas seulement du texte).
  • xs:simpleType : définit un type dérivé d'un type intégré - utilisé pour ajouter des restrictions comme des motifs ou des énumérations.
  • xs:sequence : les éléments enfants doivent apparaître dans l'ordre exact listé.
  • xs:choice : exactement un des éléments enfants listés doit apparaître.
  • xs:all : tous les éléments enfants listés doivent apparaître, dans n'importe quel ordre, chacun exactement une fois.
  • xs:attribute : déclare un attribut sur un élément complexe. `use="required"` le rend obligatoire.
  • xs:restriction : ajoute des contraintes à un type de base - `xs:pattern`, `xs:minInclusive`, `xs:enumeration`, etc.

Tip

Vous pouvez générer un XSD provisoire à partir d'un document XML existant avec des outils qui déduisent le schéma à partir de données d'exemple. Relisez et resserrez toujours la sortie générée - les schémas déduits ont tendance à rendre chaque élément optionnel et à laisser les types en `xs:string` jusqu'à ce que vous ajoutiez manuellement les déclarations de types et les contraintes de cardinalité appropriées.

Comment valider un XML contre un XSD

Il existe trois façons pratiques de valider un document XML contre un schéma XSD : un outil basé sur le navigateur pour des vérifications rapides, un outil en ligne de commande pour le développement local et le scripting, et une approche programmatique pour l'intégration dans le code applicatif ou les pipelines CI. Les trois approches signalent les mêmes catégories d'erreurs - la différence réside dans l'endroit et la manière dont vous exécutez la validation.

1

Vérifiez d'abord la bonne formation

Avant d'exécuter la validation XSD, confirmez que le document XML est bien formé. Utilisez le Vérificateur de bonne formation XML pour attraper les erreurs structurelles - un document mal formé produira des erreurs XSD trompeuses et gaspillera du temps de débogage. Corrigez d'abord tous les problèmes au niveau de l'analyseur, puis passez à la validation de schéma.

2

Validez en ligne avec le Validateur XML d'Aback Tools

Ouvrez le Validateur XML, collez votre document XML dans le panneau de gauche et votre schéma XSD dans le panneau de droite, puis lancez la validation. L'outil traite les deux fichiers entièrement dans votre navigateur - aucune donnée n'est téléversée. Chaque erreur de validation est signalée avec le chemin de l'élément, la contrainte violée et le numéro de ligne dans le document source.

3

Validez en ligne de commande avec xmllint

Pour le développement local et le scripting, `xmllint` du paquet libxml2 est le choix CLI standard. Exécutez `xmllint --schema schema.xsd document.xml --noout` - l'option `--noout` supprime l'écho du document pour que seules les erreurs soient affichées. Une sortie propre sans message signifie que le document est valide. Sous macOS, installez via `brew install libxml2` ; sous Ubuntu/Debian, `apt-get install libxml2-utils`.

4

Validez programmatiquement en Java, Python ou .NET

Pour la validation au niveau applicatif, utilisez la bibliothèque XML intégrée de votre langage. Le paquet `javax.xml.validation` de Java (Xerces), `lxml.etree.XMLSchema` de Python et `XmlSchemaSet` avec `XmlReader` en .NET prennent tous en charge la validation XSD en quelques lignes de code. Intégrez l'appel de validation à la frontière de votre API ou au point d'ingestion des fichiers pour rejeter les documents invalides avant qu'ils n'atteignent la logique métier.

terminal
bash
# Validate document.xml against schema.xsd using xmllint
xmllint --schema schema.xsd document.xml --noout

# Output on success:
document.xml validates

# Output on failure:
document.xml:12: element TotalAmount: Schemas validity error:
Element 'TotalAmount': 'abc' is not a valid value of the
atomic type 'xs:decimal'.

Validateur XML

Validez vos documents XML pour la bonne formation et la conformité au schéma - local au navigateur, sans téléversement, avec rapport d'erreurs au niveau des lignes.

Open tool

Erreurs de validation XSD courantes

Les erreurs de validation XSD tombent dans des catégories prévisibles. Comprendre ce que signifie chaque type d'erreur vous permet de localiser et de corriger rapidement le problème dans le document source, au lieu de décoder une sortie de validateur inconnue ligne par ligne.

Erreurs d'inadéquation de types

Les erreurs de type surviennent lorsque le contenu d'un élément ou d'un attribut ne correspond pas au `xs:type` déclaré. Les plus courantes : une chaîne comme `"N/A"` dans un champ déclaré `xs:integer`, une date au mauvais format (par exemple `15/06/2026` au lieu de `2026-06-15`) dans un champ `xs:date`, ou un décimal dans un champ déclaré `xs:positiveInteger`. Corrigez en modifiant la valeur dans le document source ou en ajustant la déclaration de type dans le schéma si le type actuel est trop restrictif.

Éléments obligatoires manquants

Quand `minOccurs="1"` (la valeur par défaut de `xs:element`) et que l'élément est absent du document d'instance, le validateur signale : `Element 'X': This element is not expected. Expected is one of ( Y )` ou `Element 'X' is missing`. Cela signifie généralement que le producteur du XML a omis un champ obligatoire. Consultez le `xs:sequence` du schéma pour confirmer quels éléments sont requis et à quelle position.

Éléments inattendus ou non déclarés

Si votre schéma n'utilise pas `xs:any` et ne définit pas `processContents="lax"`, tout élément non déclaré dans le schéma produira : `Element 'X': This element is not expected`. C'est l'erreur la plus courante lorsqu'un producteur XML ajoute un nouveau champ sans mettre à jour le schéma, ou lorsque le document contient un préfixe d'espace de noms non déclaré. Vérifiez le nom de l'élément, le contexte de l'élément parent et les déclarations d'espaces de noms en tête du document.

Violations de motif et d'énumération

Le XSD prend en charge `xs:pattern` (une regex) et `xs:enumeration` (une liste de valeurs autorisées) comme facettes sur les types simples. Une violation ressemble à : `Element 'Status': [facet 'enumeration'] The value 'ACTIVE' is not an element of the set active', 'inactive', 'pending`. Vérifiez si le schéma utilise des valeurs d'énumération sensibles à la casse et si le document d'instance correspond exactement à la casse attendue.

Type d'erreurFragment typique du messageComment corriger
Inadéquation de types'abc' is not a valid xs:integerCorrigez la valeur ou assouplissez le type
Élément manquant'InvoiceNumber' is missingAjoutez l'élément obligatoire au document
Élément inattendu'Notes': This element is not expectedSupprimez l'élément ou ajoutez-le au XSD
Échec d'énumérationValue 'ACTIVE' not in setAccordez la casse des valeurs d'enum du schéma
Violation de motifValue fails xs:pattern restrictionCorrigez la valeur pour correspondre à la regex
Ordre de séquenceExpected is 'IssueDate' not 'Total'Réordonnez les éléments pour correspondre au xs:sequence
CardinalitéElement 'Item' can occur max 1 timesSupprimez le doublon ou augmentez maxOccurs

Warning

Les erreurs d'ordre des éléments sont particulièrement faciles à manquer. Une déclaration `xs:sequence` exige que les éléments apparaissent dans l'ordre listé - même si tous les éléments sont présents et ont des valeurs valides, être hors ordre provoque un échec de validation de schéma. Vérifiez toujours la définition de séquence dans le XSD lorsque vous voyez des erreurs « This element is not expected » sur des éléments dont vous savez qu'ils existent.

Validation XSD dans le code et le CI/CD

La validation manuelle convient aux vérifications ponctuelles, mais les flux XML de production exigent une validation automatisée à chaque point d'intégration. Ajouter la validation XSD à votre code applicatif et à votre pipeline CI garantit que les documents invalides sont rejetés avant de causer une corruption de données, des échecs de traitement ou des violations de conformité en aval.

Valider en Python avec lxml

validate_xml.py
python
from lxml import etree

def validate_against_xsd(xml_path: str, xsd_path: str) -&gt; list[str]:
    """Returns a list of validation error messages, empty if valid."""
    with open(xsd_path, 'rb') as f:
        schema_doc = etree.parse(f)
    schema = etree.XMLSchema(schema_doc)

    with open(xml_path, 'rb') as f:
        doc = etree.parse(f)

    schema.validate(doc)
    return [str(e) for e in schema.error_log]

errors = validate_against_xsd('invoice.xml', 'invoice.xsd')
if errors:
    for err in errors:
        print(err)
else:
    print('Document is valid.')

Ajouter la validation XSD à GitHub Actions

Pour les workflows CI/CD qui traitent ou génèrent du XML, une étape de validation empêche les documents défectueux d'être fusionnés. La commande `xmllint` est disponible sur les runners Ubuntu de GitHub Actions via `sudo apt-get install -y libxml2-utils`. Ajoutez une étape qui exécute `xmllint --schema schema.xsd document.xml --noout` sur chaque pull request touchant des fichiers XML. Un code de sortie non nul fait échouer la vérification et bloque la fusion.

.github/workflows/xml-validate.yml
yaml
name: Validate XML
on:
  pull_request:
    paths:
      - '**/*.xml'

jobs:
  validate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install xmllint
        run: sudo apt-get install -y libxml2-utils
      - name: Validate XML against XSD
        run: |
          xmllint --schema schemas/invoice.xsd \
                  data/invoices/*.xml \
                  --noout

Utiliser XPath pour inspecter des valeurs précises avant validation

Avant de lancer une passe XSD complète, vous pouvez utiliser le Localisateur et Testeur XPath pour cibler la valeur d'un élément ou d'un attribut spécifique dans un grand document XML. Des requêtes XPath comme `//Invoice/TotalAmount/text()` récupèrent un champ sans analyser tout le fichier à la main. C'est particulièrement utile pour diagnostiquer une inadéquation de types dans un document à centaines d'éléments - localisez d'abord la valeur fautive, puis appliquez la correction.


Comparaison des approches de validation

ApprocheVitesseConfidentialitéPrise en charge des schémasIdéal pour
Validateur XML Aback ToolsInstantané✓ Local au navigateurBonne formation + XSDVérifications ponctuelles rapides
xmllint CLIRapide✓ Machine localeXSD, DTD, RelaxNGScripts de dev et CI/CD
lxml / Xerces / .NETRapide✓ Dans le processusXSD (spécification complète)Code applicatif
Outils en ligne serveurModéré✗ Données téléverséesVariableÀ éviter pour les schémas sensibles

Bonnes pratiques XSD

Un schéma XSD bien conçu rend les documents plus faciles à valider, à étendre et à maintenir entre les versions du schéma. Ces pratiques s'appliquent que vous rédigiez un schéma de zéro ou que vous entreteniez celui reçu d'un partenaire externe.

Utilisez des types nommés plutôt que des types anonymes en ligne

Définissez les types complexes avec `xs:complexType name="..."` plutôt que de les imbriquer anonymement dans les déclarations d'éléments. Les types nommés peuvent être réutilisés dans plusieurs déclarations d'éléments, réduisant la répétition et facilitant les changements de schéma - mettez à jour la définition du type une fois et tous les éléments qui l'utilisent héritent du changement.

Préférez xs:sequence à xs:all pour les contrats stricts

`xs:all` permet aux éléments d'apparaître dans n'importe quel ordre, ce qui semble permissif mais introduit de l'ambiguïté pour les producteurs et les consommateurs. `xs:sequence` est plus explicite et correspond à l'ordre naturel de lecture de la plupart des formats XML. N'utilisez `xs:all` que lorsque l'ordre des éléments n'a vraiment pas d'importance et que vous rédigez le schéma pour un système que vous contrôlez ; préférez `xs:sequence` pour tout schéma qui franchit des frontières organisationnelles.

Versionnez vos schémas avec un espace de noms

Utilisez un URI d'espace de noms cible qui inclut un indicateur de version, comme `targetNamespace="urn:example:invoice:v2"`. Cela rend explicites les changements de schéma cassants - les consommateurs en v1 verront un désaccord d'espace de noms plutôt que de valider silencieusement contre la mauvaise version du schéma. Gardez l'ancien schéma disponible pour les déploiements rétrocompatibles pendant la fenêtre de migration.

  • Déclarez un targetNamespace : évite les collisions de noms d'éléments lorsque les schémas sont composés via xs:import.
  • Utilisez xs:documentation : ajoutez des descriptions lisibles dans des blocs xs:annotation pour que les consommateurs du schéma comprennent chaque champ.
  • Fixez minOccurs/maxOccurs explicites : ne vous fiez jamais à la valeur par défaut - énoncez la cardinalité explicitement pour communiquer l'intention.
  • Utilisez xs:restriction pour les chaînes contraintes : un champ de code postal devrait utiliser xs:pattern, pas xs:string - la validation attrape les erreurs de format à la frontière.
  • Scindez les grands schémas : utilisez xs:include pour découper un schéma de 500 lignes en fichiers par domaine (addresses.xsd, line-items.xsd) pour un entretien plus facile.

Tip

Après avoir modifié un XSD, revalidez toujours vos documents de test existants par rapport au schéma mis à jour. Un changement de schéma qui resserre une contrainte peut invalider silencieusement des documents auparavant valides. Utilisez le [Validateur XML](/tools/data/validators/xml-validator) pour lancer une vérification de régression rapide sur vos fixtures de test canoniques avant de publier le schéma mis à jour.

Note

Si vous travaillez avec des données XML destinées à être consommées par des API REST ou des applications JavaScript, le [Convertisseur XML vers JSON](/tools/data/converters/xml-json-converter) convertit les documents XML validés au format JSON en préservant la hiérarchie des éléments et les valeurs d'attributs.

Key takeaways

  • La validation XSD vérifie un document XML par rapport à un contrat de schéma - types d'éléments, champs obligatoires, plages de valeurs et ordre - au-delà de la simple bonne formation.
  • Confirmez toujours la bonne formation avec le Vérificateur de bonne formation XML avant de lancer la validation XSD pour éviter des sorties d'erreurs trompeuses.
  • Les erreurs XSD les plus courantes sont les inadéquations de types, les éléments obligatoires manquants, les éléments inattendus et les violations d'ordre xs:sequence.
  • Utilisez `xmllint --schema schema.xsd document.xml --noout` en ligne de commande pour une validation locale rapide et une intégration CI/CD.
  • Ajoutez une étape de validation XSD à votre workflow GitHub Actions pour empêcher les documents XML invalides d'être fusionnés dans la branche principale.
  • Concevez les schémas XSD avec des types nommés, une cardinalité explicite, des espaces de noms cibles et des facettes xs:restriction pour créer des schémas à la fois stricts et maintenables.
  • Utilisez le Localisateur et Testeur XPath pour localiser des valeurs précises dans de grands documents XML avant et après la validation.

Questions fréquentes

XSD validation is the process of checking an XML document against an XML Schema Definition (XSD) file to confirm it meets all defined structural and data constraints. It goes beyond well-formedness checks - which only verify that the XML is syntactically correct - by enforcing element order, data types, value ranges, string patterns, and which elements are required or optional. A document that is well-formed but fails XSD validation is called invalid.

A well-formed XML document follows the basic XML syntax rules: every opening tag has a matching closing tag, tags are properly nested, attribute values are quoted, and there is exactly one root element. A valid XML document is well-formed AND conforms to a specific schema (DTD, XSD, or Relax NG) that defines the allowed elements, attributes, types, and constraints. Well-formedness is checked by any XML parser; validity requires the schema file to be present during the check.

The quickest approach is to use the Aback Tools XML Validator, which runs entirely in your browser. Paste your XML document into the first panel and your XSD schema into the second, then click Validate. The tool reports each constraint violation with the element path and line number. No file is uploaded to a server - all processing happens locally, which makes it safe for schemas that contain proprietary data structures or sensitive field names.

Run the command: xmllint --schema yourschema.xsd yourdocument.xml --noout. The --noout flag suppresses the document echo, leaving only validation errors in the output. A clean exit with no output means the document is valid. xmllint is part of the libxml2 package, available on Linux via apt-get install libxml2-utils and on macOS via Homebrew with brew install libxml2. For Windows, it is included with many XML toolkits.

The most frequent XSD errors are: missing required elements (an element declared with minOccurs='1' is absent), type mismatches (a string in a field declared as xs:integer), pattern violations (a value that does not match an xs:pattern restriction), unexpected element order (elements declared in a specific sequence appearing out of order), and attribute violations (a required attribute is missing or an undeclared attribute is present). Most validators report these with the element path and constraint name.

Yes. Large XML schemas are often split across multiple XSD files using xs:import and xs:include directives. The root XSD imports the sub-schemas, and a validating parser resolves them either from the file system or from namespace URIs. When validating locally with xmllint or a Java-based validator (Xerces, Saxon), you pass the root XSD and the parser follows the import chain automatically, provided all referenced schema files are accessible.

xs:include pulls in a schema file that belongs to the same target namespace as the current schema. xs:import pulls in a schema file that belongs to a different namespace. Use xs:include to split a large schema into manageable files that all share one namespace. Use xs:import when you need to reference elements or types from an external namespace, such as the SOAP envelope namespace or a shared enterprise data model namespace.

For new projects using REST APIs and JSON payloads, JSON Schema is the practical choice - it has better tooling integration with OpenAPI, a lighter syntax, and broader library support in modern languages. XSD remains the right choice when working with SOAP web services, EDI formats like UBL and EDIFACT, government and healthcare data exchange (HL7 CDA, FHIR XML), or any legacy system that is already XML-based. If the ecosystem you are integrating with uses XML, XSD is the validation standard.

ShareXLinkedIn