最佳答案
我经常不得不为不同的基于 XML 的导入例程设计 XML 模式。很明显,XML 模式将随着时间的推移而发展,或者它们可能包含需要修复的错误,因此捕获模式的版本并拥有针对特定版本的绑定机制非常重要。
目前我有两种情况:
在模式中发现错误,所有模式实例必须符合固定版本。
升级后的模式应该被认为是可取的,但是也应该支持旧的模式。
最后,我想出了在 schema 的名称空间中存储版本信息的方法:
targetNamespace="http://schemas.company.com/Geodesy/2010/River.xsd"
当修复一个 bug 时,我把它修复在同一个名称空间中,但如果我要升级一个模式,那么我需要创建一个新的名称空间,但增加了升级月份:
targetNamespace="http://schemas.company.com/Geodesy/2010/01/River.xsd"
如果我在一个月内升级了不止一次,那么也可以增加一天:
targetNamespace="http://schemas.company.com/Geodesy/2010/01/17/River.xsd"
你有更好的办法吗?