Qu'est-ce que le format de fichier XSD ?
Un fichier .xsd contient une description formelle des éléments d'un document XML - des définitions de données enregistrées au format texte XML. Il définit un ensemble de règles que les fichiers XML doivent suivre pour être considérés comme des documents XML valides ; un analyseur syntaxique de validation rejette tout document qui enfreint ces règles.
Les fichiers .xsd n'ont pas d'identifiant de type de média Internet unique - ils partagent le même type que le XML ordinaire : application/xml ou text/xml. Les fichiers commencent généralement par une déclaration XML (<?xml version="1.0"?>) et un élément racine <xs:schema> lié à l'espace de noms http://www.w3.org/2001/XMLSchema. Les données XSD peuvent être organisées en espaces de noms. Les principaux composants du schéma sont :
- Déclarations d'éléments,
- Déclarations d'attributs,
- Types de données - simples ou complexes, basés sur des restrictions, des listes de sélection ou des types primitifs,
- Groupes réutilisables d'éléments ou d'attributs (analogues aux macros).
La spécification XSD a été développée en 2001 avec l'aide du W3C (World Wide Web Consortium). XSD offre plus de fonctionnalités que le format de définition de document similaire .dtd, notamment les données typées et la prise en charge des espaces de noms. Les fichiers de description de services Web tels que .wsdl intègrent couramment des définitions de type XSD pour leurs structures de messages. Le document de spécification XSD est divisé en trois parties :
- Partie 0. Primer - contient une description générale de la norme et des bases, couramment consultée par les utilisateurs moins techniques travaillant avec le
.xsd, - Partie 1. Structures,
- Partie 2. Datatypes.
Les parties 1 et 2 font de nombreuses pages et sont rédigées dans un langage technique. Une deuxième version de la spécification a été publiée en 2004, et XSD 1.1 a été approuvé par le W3C en 2012, ajoutant des assertions et l'attribution conditionnelle de types. Les fichiers XSD sont utilisés pour stocker des métadonnées pour les documents XML, mais ils peuvent également être utilisés par les développeurs pour générer du code ou des descriptions de documents sous une forme lisible par l'homme.
Sécurité et sûreté
RISQUE : LOWUn XSD est du texte brut et ne peut pas exécuter de code, donc l'ouvrir pour le lire est sûr. Les seuls risques réels sont indirects : <xs:import>/<xs:include> peuvent appeler des schémas externes (les attaques d'entités externes de type XXE ciblent l'ANALYSEUR XML, pas le schéma lui-même), donc validez les XML non fiables avec l'expansion d'entités et les récupérations externes désactivées. La <xs:documentation> intégrée au fichier peut révéler des détails sur les champs ou systèmes internes, ce qui relève de la divulgation d'informations plutôt que d'un risque de logiciel malveillant.
Détails du format
en brefProgrammes qui ouvrent les fichiers XSD
xmllint --schema schema.xsd data.xml --noout Détails techniques
spécifications approfondies| Type de format de fichier | Document XML en texte brut (encodé en UTF-8) |
| Type MIME | application/xml ou text/xml (partagé avec tous les fichiers XML ; aucun type MIME spécifique au XSD n'existe) |
| Élément racine | <xs:schema> ou <xsd:schema>, lié à l'espace de noms W3C http://www.w3.org/2001/XMLSchema |
| Signature de fichier | Aucune (texte brut) ; les fichiers s'ouvrent conventionnellement par une déclaration XML <?xml version="1.0"?> |
| Convention de préfixe d'espace de noms | xs: ou xsd: (les deux sont valides ; xs: est le choix moderne le plus courant) |
| Système de types intégré | Plus de 44 types primitifs et dérivés : string, integer, decimal, dateTime, boolean, base64Binary, anyURI, et plus encore |
| Dérivation de type | Les types complexes supportent la dérivation par restriction ou extension ; les types simples par restriction, liste ou union |
| Contraintes de validation | Modèle de contenu (sequence, choice, all), cardinalité via minOccurs/maxOccurs, et facettes telles que pattern, length et enumeration |
| Support des espaces de noms | L'attribut targetNamespace déclare l'espace de noms du schéma ; les directives xs:import, xs:include et xs:redefine combinent les schémas |
| Mécanisme d'annotation | <xs:annotation> contenant <xs:documentation> pour le texte lisible par l'homme et <xs:appinfo> pour les métadonnées lisibles par machine |
| Ajouts de XSD 1.1 | Assertions (xs:assert), attribution conditionnelle de type (xs:alternative) et contraintes de cooccurrence assouplies |
| Comparé au DTD | Remplace le DTD pour une validation typée et compatible avec les espaces de noms ; le DTD n'a pas de types de données ni de support d'espace de noms |
| Comparé à RELAX NG | Plus largement supporté par les outils que le .rng ; RELAX NG est plus simple mais manque d'héritage de type XSD |
| Intégration des outils | Supporté par Visual Studio, VS Code et Altova XMLSpy pour l'autocomplétion, la validation en temps réel et la génération de code pilotée par le schéma |
| Contextes d'utilisation courants | Validation de fichiers de configuration, services web SOAP/WSDL, contrats d'échange de données, formats de documents bureautiques OOXML |
| Publié | 2001 (W3C XML Schema 1.0 Recommendation); 1.1 in 2012 |
| Standard ouvert | Oui · libre de droits |
| Spécification | www.w3.org |
Conversions XSD
Q&R de la communauté
posées par les utilisateursPas encore de questions - soyez le premier à poser une question sur les fichiers XSD.
Foire aux questions
À quoi sert un fichier XSD ?
Comment ouvrir un fichier XSD ?
Quelle est la différence entre XML et XSD ?
Comment valider un fichier XML par rapport à un XSD ?
xmllint --schema fichier.xsd data.xml en ligne de commande, la commande « Valider » d'un éditeur XML, ou un validateur XSD en ligne. Il indique exactement où le XML enfreint les règles du schéma.