Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
跨模式版本的XML属性_Xml_Xsd - Fatal编程技术网

跨模式版本的XML属性

跨模式版本的XML属性,xml,xsd,Xml,Xsd,我有以下情况: 产品有两个版本:产品v1.0和产品v1.1 v1.0具有成功验证以下xml的架构: <Root> <Tag Name="Tag1"> </Root> <Root> <Tag Name="Tag1" ID="1"> <Root> v1.1具有成功验证以下xml的架构: <Root> <Tag Name="Tag1"> </Root> <Root&g

我有以下情况:

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

v1.0具有成功验证以下xml的架构:

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

v1.1具有成功验证以下xml的架构:

<Root>
  <Tag Name="Tag1">
</Root>
<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

考虑到您已经承诺使用严格类型的接口,您必须面对这样一个事实:如果保持不变,您的旧软件/服务依赖于旧XSD,并且不能接受新的XML


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

< P>您的XSD的1版本是通过无法验证包含意外属性的XML文档来完成它的工作的。

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

考虑到您已经承诺使用严格类型的接口,您必须面对这样一个事实:如果保持不变,您的旧软件/服务依赖于旧XSD,并且不能接受新的XML


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

您能进一步详细说明您的用例吗?我猜想标准的解决方案是向文档添加
xmlns
属性,这些属性指示每个文档使用的确切模式版本的URI。您能否进一步详细说明您的用例?我猜想标准的解决方案是向文档添加
xmlns
属性,这些属性指示每个文档使用的确切模式版本的URI。您能否进一步详细说明您的用例?我猜想标准的解决方案是向文档添加
xmlns
属性,这些属性指示每个文档使用的确切模式版本的URI。