这是一个架构:
<xs:complexType name="Base">
<xs:sequence>
<xs:element name="opt" minOccurs="0" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="D1a">
<xs:complexContent>
<xs:restriction base="Base">
<xs:sequence>
<xs:element name="opt" maxOccurs="0" />
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="D1b">
<xs:complexContent>
<xs:restriction base="Base">
<xs:sequence>
<xs:element name="opt" minOccurs="0" maxOccurs="0" />
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="D1c">
<xs:complexContent>
<xs:restriction base="Base">
<xs:sequence>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
Visual Studio 验证 shema 没有错误。但是 XMLSpy 说D1a是无效的,因为maxOccurs
不应该小于minOccurs
. 似乎 Visual Studio 认为它minOccurs
是从Base继承的,等于 0。但 XMLSpy 认为minOccurs
不应该从Base继承,等于 1(默认值)。
哪种行为符合 XSD 规范?