我有以下案例:
产品有两个版本:产品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。 是否有针对这种情况的解决方案???
答案 0 :(得分:0)
XSD的1.0版本无法验证包含意外属性的XML文档,从而完成了它的工作。
您可能已使用xsd:any
或xsd:anyAttribute
内置了一些用于v1.0 XSD未来更新的规定。但是,这样的解决方案必然会破坏严格指定接口的目的。有人反对使用这种逃避机制,认为灵活但冻结不如精确发展,但对这些权衡的评估在这里是无关紧要的,因为你已经在没有这种逃避机制的情况下承诺了XSD。 / p>
鉴于您已经承诺使用严格类型的界面,您必须面对这样一个事实:保持不变,您的旧软件/服务依赖于您的旧XSD,并且无法接受新的XML。
然而,您可能会考虑做的是使新属性成为可选项(如果可能),以便旧的XML对您的新XSD继续有效。