我的要求是我有三个要素,其中ProductID
和DivisionID
是必需的,而单位是可选的。
<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 version="1.0" encoding="UTF-8"?>
<Message>
<Product>
<productID>ABC-EDI</productID>
</Product>
</Message>
Cvc-complex-type.2.4.b:元素'产品'的内容不完整。其中一个'{Unit,DivisionID}'是预期的。,'4'行,'14'列。
错误应该是只需要DivisionID
。 为什么需要Unit
?
答案 0 :(得分:2)
您的XML对发布的XSD有效。
如果您要省略所需的DivisionID
元素,您确实会收到验证错误
cvc-complex-type.2.4.b:元素'Product'的内容不是 完成。预计会有一个“{Unit,DivisionID}”。
在Unit
之后,应该将此错误解读为productID
,而是Unit
或DivisionID
。 productID
。您可以理解地看到了满足XSD要求所需的最小变更。但是,它正在按照
嘿,我刚刚看到
Product
的关闭标记及其内容模型 仍然不满意。在Product
结束之前,我希望看到其中一个 此时Unit
或DivisionID
。