Quais são as melhores práticas para a versão de esquemas XML?
Muitas vezes tenho que projetar esquemas XML para diferentes rotinas de importação de bases XML. É claro que os esquemas XML evoluirão com o tempo ou poderão conter bugs a serem corrigidos, portanto, é importante capturar a versão do esquema e ter algum mecanismo para vincular-se a uma versão específica.
Atualmente tenho dois cenários:
O bug é encontrado dentro do esquema e todas as instâncias do esquema devem estar em conformidade com a versão corrigida.
O esquema foi atualizado e deve ser considerado como preferível, mas um antigo deve ser também suportado.
Finalmente eu inventei armazenar informações de versão dentro do namespace do esquema:
targetNamespace="http://schemas.company.com/Geodesy/2010/River.xsd"
Ao consertar um bug, corrijo-o no mesmo namespace, mas se estou prestes a atualizar um esquema, preciso criar um novo namespace, mas com o upgrade incluído no mês:
targetNamespace="http://schemas.company.com/Geodesy/2010/01/River.xsd"
E se eu tiver mais de um upgrade em um mês, acrescente apenas um dia também:
targetNamespace="http://schemas.company.com/Geodesy/2010/01/17/River.xsd"
Você conhece alguma abordagem melhor?