【发布时间】:2011-02-10 23:41:01
【问题描述】:
如何设计我的 xsd 以忽略元素序列?
<root> <a/> <b/> </root>
<root> <b/> <a/> </root>
出于代码生成原因,我需要使用extension,所以我尝试了以下使用all:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.example.com/test"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:t="http://www.example.com/test" >
<xs:complexType name="BaseType">
<xs:all>
<xs:element name="a" type="xs:string" />
</xs:all>
</xs:complexType>
<xs:complexType name="ExtendedType">
<xs:complexContent>
<xs:extension base="t:BaseType">
<xs:all> <!-- ERROR -->
<xs:element name="b" type="xs:string" />
</xs:all>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="root" type="t:ExtendedType"></xs:element>
</xs:schema>
虽然这个xsd无效,<!-- ERROR -->报错如下:
cos-all-limited.1.2:一个所有模型组必须出现在一个粒子中,且{min发生} = {max发生} = 1,并且该粒子必须是构成的 {content type} 对的一部分一个复杂的类型定义。
cos-all-limited.1.2 的文档说:
1.2 粒子的 {term} 属性,{max 出现}=1,它是构成复杂类型定义的 {content type} 的一对的一部分。
我不太明白这个(xsd 和英语母语都不是 :))。
我是在做错事,是在做错事,还是没有办法做到这一点?
【问题讨论】: