正如我一直认为的那样,xs:restriction
用于限制某个simpleType或complexType,因此名称为restriction
。但下面的xsd片段是正确的。看一下Norwegian_customer
,country
被complexType覆盖,所以它被扩展,不受限制。它被重命名。 xs:restriction
想要提供什么? xs:restriction
是xs:extension
的超集吗?该代码段在WebStorm
验证。
<xs:complexType name="customer">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
<xs:element name="country" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Norwegian_customer">
<xs:complexContent>
<xs:restriction base="customer">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
<xs:element name="country1">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
<xs:element name="country" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
答案 0 :(得分:2)
但下面的xsd片段是正确的。
不,您的XSD代码段不正确。 Norwegian_customer
不是customer
的有效限制,因为它不允许country
,只允许country1
。必须在派生类型中明确允许受限制的基类型的内容模型的所有部分。
该片段在WebStorm中得到验证。
如果Webstorm验证了此XSD,那么它就不符合。
请参阅W3C XML Schema Part 1: Structures Second Edition,具体来说:
请注意,基于Xerces的验证程序会通知您,如下所示:
[错误] try.xsd:13:45:rcase-Recurse.2:没有完整的 粒子之间的功能映射。
[错误] try.xsd:13:45:derivation-ok-restriction.5.4.2:类型错误 'Norwegian_customer'。该类型的粒子不是有效的 限制碱的颗粒。