XSD:在XML模式中进行测试

时间:2016-05-01 08:43:47

标签: xml xsd

我有一个XML模式,其中包含类似下面的行。

这些测试线是什么意思?
他们以某种方式描述文件吗?

...
<xs:element name="Document" 
            type="BaseDocument">
  <xs:alternative test="(@doc_face eq 'init') 
                        and 
                        (@doc_op eq 'included')" 
                  type="SystemInit"/>
  <xs:alternative test="(@doc_face eq 'Z')" 
                  type="Zreport"/>
</xs:element>
...

2 个答案:

答案 0 :(得分:1)

请参阅Type Alternatives

  

元素声明可以使用类型替代来指定条件({test}),在该条件下,特定类型({类型定义})用作管理类型定义·用于由该元素声明管理的元素信息项

答案 1 :(得分:1)

他们(正如Alexander Petrov已经指出的那样)在XSD 1.1架构中的类型替代品。 test属性按顺序进行评估:

  • 如果Document元素具有doc_facedoc_op属性,其值为&#39; init&#39;分别包含&#39;,然后第一个测试评估为true,Document元素的管理类型是默认名称空间中名为SystemInit的类型(或没有名称空间值) ,如果没有)。
  • 否则,如果Document元素的doc_face属性值为&#39; Z&#39;,则Document元素的管理类型为ZReport类型{1}}在默认命名空间中(或者没有命名空间值,如果没有)。
  • 否则(即,如果没有替代测试的计算结果为true),则声明的元素类型(默认名称空间中为BaseDocument(或无))将成为Document元素的管理类型