这是一个架构:
<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 规范?