模式版本

时间:2015-06-17 13:41:39

标签: xml xsd

我有以下案例:

产品有两个版本:产品v1.0和产品v1.1

v1.0具有成功验证以下xml的模式:

<Root>
  <Tag Name="Tag1">
</Root>

v1.1具有成功验证以下xml的模式:

<Root>
  <Tag Name="Tag1" ID="1">
<Root>

新版本具有新的xml属性“ID”,无法使用v1.0中的xml架构从v1.1成功验证xml。 是否有针对这种情况的解决方案???

1 个答案:

答案 0 :(得分:0)

XSD的1.0版本无法验证包含意外属性的XML文档,从而完成了它的工作。

您可能已使用xsd:anyxsd:anyAttribute内置了一些用于v1.0 XSD未来更新的规定。但是,这样的解决方案必然会破坏严格指定接口的目的。有人反对使用这种逃避机制,认为灵活但冻结不如精确发展,但对这些权衡的评估在这里是无关紧要的,因为你已经在没有这种逃避机制的情况下承诺了XSD。 / p>

鉴于您已经承诺使用严格类型的界面,您必须面对这样一个事实:保持不变,您的旧软件/服务依赖于您的旧XSD,并且无法接受新的XML。

然而,您可能会考虑做的是使新属性成为可选项(如果可能),以便旧的XML对您的新XSD继续有效。