Quelles sont les meilleures pratiques pour la gestion des versions de schémas XML?
J'ai souvent à la conception de schémas XML pour les différents XML bases de l'importation des routines. Il est clair que les schémas XML va évoluer au fil du temps ou ils pourraient contenir des bugs à corriger, donc il est important de saisir le schéma de la version et de disposer d'un mécanisme pour se lier à l'encontre d'une version spécifique.
Actuellement, j'ai deux scénarios:
-
Le bug est trouvé dans le schéma et toutes schéma de cas, il doit se conformer à la version fixe.
-
Le schéma mis à jour et devrait être considérée comme préférable, mais une ancienne devrait être également pris en charge.
Enfin, je suis venu avec de stocker les informations de version dans l'espace de noms du schéma:
targetNamespace="http://schemas.company.com/Geodesy/2010/River.xsd"
Lors de la fixation d'un bug que j'ai corrigé dans le même espace de noms, mais si je suis sur le point de mettre à jour un schéma puis j'ai besoin de créer un nouvel espace de noms, mais avec la mise à jour du mois ajouté:
targetNamespace="http://schemas.company.com/Geodesy/2010/01/River.xsd"
Et si j'ai plus d'une mise à niveau en un mois puis ajoutez simplement un jour de trop:
targetNamespace="http://schemas.company.com/Geodesy/2010/01/17/River.xsd"
Connaissez-vous une meilleure approche?
Vous devez vous connecter pour publier un commentaire.
C'est un sujet difficile qu'il n'est même pas drôle, et que j'ai passé des années conseil de soutien de.
Il y a beaucoup de les meilleures pratiques là-bas, mais la plupart d'entre eux ne fonctionnent pas dans toutes les situations. Par exemple, beaucoup préconisent l'utilisation de "xsd:any" pour permettre des extensions, et c'est juste une recette pour un désastre si les développeurs sont en charge de l'entretien du schéma, de la transformer en un cliché.
Voici quelques conseils pour vous si vous êtes à la mise en route:
Dood chance!
http://www.xml.com/pub/a/2004/07/21/design.html fournit des directives et schémas XML 1.1 permet 'versioning" par conditionnelle de l'inclusion (http://www.w3.org/TR/xmlschema11-1/#cip).