¿Cuáles son las mejores prácticas para versionar esquemas XML?
A menudo tengo que diseñar esquemas XML para diferentes rutinas de importación de bases XML. Está claro que los esquemas XML evolucionarán con el tiempo o podrían contener errores que deben solucionarse, por lo que es importante capturar la versión del esquema y tener algún mecanismo para enlazar contra una versión específica.
Actualmente tengo dos escenarios:
El error se encuentra dentro del esquema y todas las instancias del esquema deben cumplir con la versión corregida.
El esquema actualizado y debe considerarse como preferible, pero también se debe admitir uno antiguo.
Finalmente se me ocurrió almacenar información de versión dentro del espacio de nombres del esquema:
targetNamespace="http://schemas.company.com/Geodesy/2010/River.xsd"
Cuando soluciono un error, lo soluciono en el mismo espacio de nombres, pero si estoy a punto de actualizar un esquema, entonces necesito crear un nuevo espacio de nombres pero con el mes de actualización agregado:
targetNamespace="http://schemas.company.com/Geodesy/2010/01/River.xsd"
Y si tengo más de una actualización en un mes, simplemente agregue un día también:
targetNamespace="http://schemas.company.com/Geodesy/2010/01/17/River.xsd"
¿Conoces algún enfoque mejor?