2

スキーマは次のとおりです。

<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 仕様に準拠する動作はどれですか?

4

1 に答える 1