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:any
或 xsd:anyAttribute
为 v1.0 XSD 的未来更新设置了一些条款。然而,这样的解决方案必然会破坏严格指定接口的目的。有一种反对使用这种逃逸机制的论点,认为灵活但冻结不如精确进化,但对这些权衡的评估在这里无关紧要,因为你已经做出了 XSD 的承诺而没有这样的逃逸机制。
鉴于您已经致力于严格类型化的界面,您必须面对这样一个事实,即保持不变,您的旧 software/services 依赖于您的旧 XSD 并且不能接受新的新 XML.
然而,您可能会考虑将新属性设为可选(如果可能),这样您的旧 XML 将继续对您的新 XSD 有效。
我有以下案例:
产品有两个版本: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:any
或 xsd:anyAttribute
为 v1.0 XSD 的未来更新设置了一些条款。然而,这样的解决方案必然会破坏严格指定接口的目的。有一种反对使用这种逃逸机制的论点,认为灵活但冻结不如精确进化,但对这些权衡的评估在这里无关紧要,因为你已经做出了 XSD 的承诺而没有这样的逃逸机制。
鉴于您已经致力于严格类型化的界面,您必须面对这样一个事实,即保持不变,您的旧 software/services 依赖于您的旧 XSD 并且不能接受新的新 XML.
然而,您可能会考虑将新属性设为可选(如果可能),这样您的旧 XML 将继续对您的新 XSD 有效。