Conversion de XML en XSD : création d'un schéma à partir de plusieurs instances XML
Récemment, j'ai discuté avec l'un de nos ingénieurs du support technique concernant les questions fréquemment posées par nos clients. L'une de ces questions, qui revient souvent, concerne la génération de schémas, plus précisément : "Comment puis-je générer un fichier XSD à partir d'un fichier XML ?" La réponse, bien sûr, est d'utiliser votre éditeur XML préféré. XMLSpy peut générer un fichier XSD valide à partir d'un DTD, d'une structure de base de données relationnelle, d'un schéma JSON, et bien sûr, d'une instance XML.
Mais ce que beaucoup de clients sont surpris d'apprendre, c'est que l'éditeur XML va également créer un schéma XML basé sur un.. groupe de fichiers XML associés, et c'est une exigence courante. Examinons maintenant son fonctionnement.

Générer un fichier XSD
Supposons que j'ai hérité d'un projet de développement web, et que j'ai reçu un ensemble de fichiers XML comme point de départ, mais sans schéma XML. Pour générer un fichier XSD pour ces fichiers, je dois d'abord les ajouter à un projet XMLSpy. Cela sera utile par la suite, car le projet regroupe tous les fichiers associés dans un ensemble de dossiers facile à gérer, où je peux rechercher des fichiers spécifiques, appliquer des transformations XSLT, effectuer des opérations par lots telles que la validation à l'échelle du projet et la recherche dans les fichiers, et ainsi de suite.
Il est utile de prendre un instant pour parler du projet XMLSpy lui-même. Les dossiers peuvent correspondre à des répertoires réels sur le système de fichiers, ou je peux définir des extensions de type de fichier pour chaque dossier, afin que les fichiers courants soient regroupés dans un seul endroit pratique. Les dossiers du projet sont des dossiers virtuels et n'ont pas besoin de correspondre à une organisation hiérarchique des fichiers sur le serveur lui-même.
Je peux également attribuer différents paramètres de transformation XSL à chaque dossier, et un même fichier physique peut être présent dans plusieurs dossiers de projet. Ceci est particulièrement utile lorsque je dois conserver les données dans un seul fichier XML et utiliser différentes feuilles de style XSL pour produire des résultats différents. De plus, la gestion de projets XMLSpy s'intègre à la plupart des systèmes de contrôle de version.
OK, retournons à la génération du fichier XSD. La première étape consiste à sélectionner « Nouveau projet » dans le menu « Projet ». XMLSpy crée un projet de base avec des dossiers temporaires pour différents types de fichiers. Il est facile d'ajouter des dossiers personnalisés, si nécessaire. Pour ajouter les fichiers que j'ai reçus à ce nouveau projet, je clique avec le bouton droit sur le dossier « Fichiers XML » et je sélectionne « Ajouter des fichiers… »
![]()
...et parcourez les fichiers pour sélectionner les fichiers XML destinés au site web. C'est le moment idéal pour enregistrer le projet avec un nom descriptif, ce qui permet également d'enregistrer les associations de fichiers nouvellement ajoutées au projet.
![]()
Maintenant, il me suffit de faire un clic droit sur le dossier "Fichiers XML" et de sélectionner "Générer le DTD / le schéma...", puis de vérifier ou de mettre à jour les options de configuration.
![]()
Cela générera un fichier XSD basé sur tous les fichiers XML inclus dans le dossier. Après avoir cliqué sur OK, une fenêtre s'ouvre pour vous demander de sauvegarder le schéma XML généré automatiquement, et il s'affiche dans la vue graphique du schéma XML. Voici les éléments globaux générés à partir des fichiers d'exemple XML :
![]()
En cliquant sur l'icône représentant un arbre à côté de n'importe quel élément, vous pouvez afficher le modèle de contenu détaillé.
![]()
Le paradigme de conception graphique de l'éditeur XSD facilite la modification et l'ajustement de ce schéma, selon les besoins.
Voilà, en quelques étapes simples, j'ai généré un schéma valide à partir d'un ensemble de fichiers d'instances.
Quelles fonctionnalités d'XMLSpy vous aident à simplifier votre travail quotidien ? Ou, existe-t-il une fonctionnalité qui vous ferait gagner du temps et que vous aimeriez voir ajoutée ? Nous serions ravis de recevoir vos commentaires. N'hésitez pas à laisser un commentaire ci-dessous !