我编写了以下xml-schema:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" elementFormDefault="qualified"
vc:minVersion="1.0" vc:maxVersion="1.1">
<xs:element name="zoo_ct">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="zootier_ct" type="Tier" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="Tier">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="alter" type="xs:positiveInteger"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="säugetier_ct">
<xs:complexContent>
<xs:extension base="Tier">
<xs:element name="tragezeit" type="xs:positiveInteger"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="vogel_ct">
<xs:complexContent>
<xs:extension base="Tier">
<xs:element name="flugfähig" type="xs:boolean"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="pfleger_ct">
<xs:element name="zootier_ct" type="Tier" maxOccurs="unbounded"/>
</xs:complexType>
<xs:complexType name="behausung_ct">
<xs:element name="bezeichnung" type="xs:string"/>
<xs:element name="zootier_ct" type="Tier" maxOccurs="unbounded"/>
</xs:complexType>
<xs:complexType name="gebäude_ct">
<xs:complexContent>
<xs:extension base="behausung_ct">
<xs:element name="fläche" type="xs:double"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="teich_ct">
<xs:complexContent>
<xs:extension base="behausung_ct">
<xs:element name="wassertiefe" type="xs:double"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:schema>
然而,当运行它时,它会产生6条错误消息,每条消息都是相同的类型:对于相应的complexType中包含的元素应该是错误的:
The content of 'säugetier_ct' is invalid. Element 'element' is invalid, misplaced, or occurs too often.
The content of 'vogel_ct' is invalid. Element 'element' is invalid, misplaced, or occurs too often.
The content of 'pfleger_ct' is invalid. Element 'element' is invalid, misplaced, or occurs too often.
The content of 'behausung_ct' is invalid. Element 'element' is invalid, misplaced, or occurs too often.
The content of 'gebäude_ct' is invalid. Element 'element' is invalid, misplaced, or occurs too often.
The content of 'teich_ct' is invalid. Element 'element' is invalid, misplaced, or occurs too often.
我不明白各个元素应该是什么问题。 这是代码中最简单的部分,我绝对相信这是正确的语法。
有人知道这里发生了什么吗?
答案 0 :(得分:1)
在XSD中,xs:complexType
和xs:extension
不能将xs:element
作为直接子女。
以下是添加了xs:sequence
包装的XSD:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning"
elementFormDefault="qualified"
vc:minVersion="1.0" vc:maxVersion="1.1">
<xs:element name="zoo_ct">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="zootier_ct" type="Tier" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="Tier">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="alter" type="xs:positiveInteger"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="säugetier_ct">
<xs:complexContent>
<xs:extension base="Tier">
<xs:sequence>
<xs:element name="tragezeit" type="xs:positiveInteger"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="vogel_ct">
<xs:complexContent>
<xs:extension base="Tier">
<xs:sequence>
<xs:element name="flugfähig" type="xs:boolean"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="pfleger_ct">
<xs:sequence>
<xs:element name="zootier_ct" type="Tier" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="behausung_ct">
<xs:sequence>
<xs:element name="bezeichnung" type="xs:string"/>
<xs:element name="zootier_ct" type="Tier" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="gebäude_ct">
<xs:complexContent>
<xs:extension base="behausung_ct">
<xs:sequence>
<xs:element name="fläche" type="xs:double"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="teich_ct">
<xs:complexContent>
<xs:extension base="behausung_ct">
<xs:sequence>
<xs:element name="wassertiefe" type="xs:double"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:schema>
这可以解决您的所有错误。