XSD 可选元素 minOccurs="0" 但在验证时它是预期的?

XSD optional element minOccurs="0" but on validation it is expected?

我的要求是我有三个元素,其中 ProductIDDivisionID 是必需的,单位是可选的。

XSD

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           attributeFormDefault="unqualified" elementFormDefault="qualified">
<xs:element name="Message">
<xs:complexType>
    <xs:sequence>
        <xs:element name="Product">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="productID">
                    <xs:simpleType>
                            <xs:restriction base="xs:string">
                              <xs:minLength value="1"/>
                              <xs:maxLength value="100"/>
                            </xs:restriction>
                    </xs:simpleType>
                </xs:element>
                <xs:element name="Unit" minOccurs="0">
                    <xs:simpleType>
                            <xs:restriction base="xs:string">
                              <xs:minLength value="0"/>
                              <xs:maxLength value="30"/>
                            </xs:restriction>
                    </xs:simpleType>
                </xs:element>
                <xs:element name="DivisionID">
                    <xs:simpleType>
                            <xs:restriction base="xs:string">
                              <xs:minLength value="0"/>
                              <xs:maxLength value="30"/>
                            </xs:restriction>
                    </xs:simpleType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
        </xs:element>
    </xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

XML

<?xml version="1.0" encoding="UTF-8"?>
<Message>
   <Product>
      <productID>ABC-EDI</productID>

   </Product>
</Message>

验证错误

Cvc-complex-type.2.4.b: The Content Of Element 'Product' Is Not Complete. One Of '{Unit, DivisionID}' Is Expected., Line '4', Column '14'.

问题

错误应该是只需要 DivisionID为什么要 Unit

你的 XML 对你发布的 XSD 有效。

如果您要省略必需的 DivisionID 元素,您确实会收到类似

的验证错误

cvc-complex-type.2.4.b: The content of element 'Product' is not complete. One of '{Unit, DivisionID}' is expected.

这个错误应该理解为不是说 UnitproductID 之后 需要 ,而是说 UnitDivisionID 预计将跟随 productID。可以理解,您希望了解满足 XSD 要求所需的最小更改。但是,它正在按照

的方式发表更广泛的声明

Hey, I just saw a close tag for Product, and its content model remains unsatisfied. Before Product ends, I expected to see one of Unit or DivisionID at this point.