Je dois souvent concevoir des schémas XML pour différentes routines d'importation de bases XML. Il est clair que les schémas XML évolueront avec le temps ou qu'ils pourraient contenir des bogues à corriger, il est donc important de capturer la version du schéma et d'avoir un mécanisme pour se lier à une version spécifique.
Actuellement, j'ai deux scénarios:
Le bogue se trouve dans le schéma et toutes les instances de schéma doivent être conformes à la version fixe.
Le schéma a été mis à niveau et doit être considéré comme préférable, mais un ancien doit également être pris en charge.
Enfin, j'ai trouvé le stockage des informations de version dans l'espace de noms du schéma:
targetNamespace="http://schemas.company.com/Geodesy/2010/River.xsd"
Lors de la correction d'un bug, je le corrige dans le même espace de noms, mais si je suis sur le point de mettre à niveau un schéma, je dois créer un nouvel espace de noms mais avec un mois de mise à niveau ajouté:
targetNamespace="http://schemas.company.com/Geodesy/2010/01/River.xsd"
Et si j'ai plus d'une mise à niveau en un mois, ajoutez également un jour:
targetNamespace="http://schemas.company.com/Geodesy/2010/01/17/River.xsd"
Connaissez-vous une meilleure approche?
C'est un sujet tellement difficile qu'il n'est même pas drôle, et pour lequel j'ai passé des années à fournir un soutien de conseil.
Il existe de nombreuses meilleures pratiques , mais la plupart d'entre elles ne fonctionnent pas dans toutes les situations. Par exemple, beaucoup préconisent l'utilisation de "xsd: any" pour autoriser les extensions, et ce n'est qu'une recette pour un désastre si les développeurs sont chargés de maintenir le schéma, le transformant en un vidage.
Voici quelques conseils pour vous si vous commencez:
Bonne chance!
http://www.xml.com/pub/a/2004/07/21/design.html fournit de bonnes lignes directrices et XML Schema 1.1 permet le 'versioning' par inclusion conditionnelle ( http : //www.w3.org/TR/xmlschema11-1/#cip ).