スキーマは次のとおりです。
<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 はエラーなしでスキーマを検証します。しかし XMLSpy は、D1amaxOccurs
は未満であってはならないため無効であると言いますminOccurs
。Visual Studio はBaseminOccurs
から継承され、0 に等しいと考えているようです。しかし、XMLSpy は、 Baseから継承されるべきではなく、1 (デフォルト値) に等しいと考えています。minOccurs
XSD 仕様に準拠する動作はどれですか?