XML 跨架构版本的属性

XML Attributes across schema versions

我有以下案例:

产品有两个版本:Product v1.0 和 Product 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。 这种情况有解决方案吗???

您的 XSD 的 1.0 版无法验证包含意外属性的 XML 文档。

您可能已经使用 xsd:anyxsd:anyAttribute 为 v1.0 XSD 的未来更新设置了一些条款。然而,这样的解决方案必然会破坏严格指定接口的目的。有一种反对使用这种逃逸机制的论点,认为灵活但冻结不如精确进化,但对这些权衡的评估在这里无关紧要,因为你已经做出了 XSD 的承诺而没有这样的逃逸机制。

鉴于您已经致力于严格类型化的界面,您必须面对这样一个事实,即保持不变,您的旧 software/services 依赖于您的旧 XSD 并且不能接受新的新 XML.

然而,您可能会考虑将新属性设为可选(如果可能),这样您的旧 XML 将继续对您的新 XSD 有效。