我有两个模式。
第一个架构定义类型BasicSequence
(文件Basic.xsd
)。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://basic-schema.com"
targetNamespace="http://basic-schema.com"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:complexType name="BasicSequence">
<xs:sequence>
<xs:element name="ElementA" type="xs:string"/>
<xs:any />
</xs:sequence>
</xs:complexType>
<xs:complexType name="MySequence1">
<xs:complexContent>
<xs:restriction base="BasicSequence">
<xs:sequence>
<xs:element name="ElementA" type="xs:string"/>
<xs:element name="ElementB" type="xs:string"/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:schema>
在第二个模式中,我试图基于BasicSequence
定义类型:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:basic="http://basic-schema.com"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:import namespace="http://basic-schema.com" schemaLocation="Basic.xsd"/>
<xs:complexType name="MySequence2">
<xs:complexContent>
<xs:restriction base="basic:BasicSequence">
<xs:sequence>
<xs:element name="ElementA" type="xs:string"/>
<xs:element name="ElementB" type="xs:string"/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:schema>
但是在解析过程中,我会遇到下一个错误:
通过限制无效的粒子派生-根据Elt:Elt-NameAndTypeOK,“派生元素'ElementA'不是对基本元素'http://basic-schema.com:ElementA'的有效限制”。
如您所见,MySequence1
和MySequence2
具有相同的结构。但是MySequence1
已成功解析,而MySequence2
未成功解析。
请帮助您理解问题所在。
答案 0 :(得分:0)
对于我来说,您尝试使用xs:import
而不是xs:include
似乎很奇怪。
有关详细信息,请参见What's the difference between xsd:include and xsd:import?。