错误:'persons'的内容必须匹配(注释?, (simpleType | complexType)?, (unique| key | keyref)*))



我正在尝试为 XML 键入 XSD,但发生了错误。我不知道为什么会发生这种情况。我是XML的新手,所以对它了解不多。 错误是:

例外:s4s-elt-must-match.1:"persons"的内容必须匹配 (annotation?, (simpleType | complexType(?, (unique | key | keyref(*((。 从 开始发现一个问题:复杂类型。

任何帮助或建议都非常感谢。

.XML

<?xml version="1.0" encoding="utf-8"?>
<persons>
<person>
<name>Tom</name>
<age>11</age>
<gender>M</gender>
<address>
<doorno>27</doorno>
<street>Tony's road, koramangala</street>
<city>Bangalore</city>
<state>Karnataka</state>
</address>
<student>
<rollno>10</rollno>
<standard>6</standard>
<section>A</section>
</student>  
</person>
<person>
<name>Shiny</name>
<age>12</age>
<gender>F</gender>
<address>
<doorno>10</doorno>
<street>Main Bazar, Madiwala</street>
<city>Bangalore</city>
<state>Karnataka</state>
</address>
<staff>
<staffid>123</staffid>
<subject>Maths</subject>
</staff>
</person>
</persons>

我正在尝试编写的 XSD

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="persons">
<xs:complexType>
<xs:sequence>
<xs:element name="person" maxOccurs="unbounded" minOccurs="1" type="personType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="personType">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="age" type="xs:integer"/>
<xs:element name="gender" type="xs:string"/>
<xs:element name="address" type="addType"/>
<xs:element name="student" maxOccurs="unbounded" minOccurs="0" type="studentType"/>
<xs:element name="staff" maxOccurs="unbounded" minOccurs="0" type="staffType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="addType">
<xs:sequence>
<xs:element name="doorno" type="xs:integer"/>
<xs:element name="street" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="state" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="studentType">
<xs:sequence>
<xs:element name="rollno" type="xs:integer"/>
<xs:element name="standard" type="xs:string"/>
<xs:element name="section" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="staffType">
<xs:sequence>
<xs:element name="staffid" type="xs:integer"/>
<xs:element name="stubject" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

需要两个修复:

  1. 在复杂类型之前关闭personxs:element标记 其余类型的声明。
  2. 修正一个错别字:stubject应该是"服从"。

总之,以下 XSD 将成功验证您的 XML 文档:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="persons">
<xs:complexType>
<xs:sequence>
<xs:element name="person" maxOccurs="unbounded" minOccurs="1" type="personType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="personType">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="age" type="xs:integer"/>
<xs:element name="gender" type="xs:string"/>
<xs:element name="address" type="addType"/>
<xs:element name="student" maxOccurs="unbounded" minOccurs="0" type="studentType"/>
<xs:element name="staff" maxOccurs="unbounded" minOccurs="0" type="staffType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="addType">
<xs:sequence>
<xs:element name="doorno" type="xs:integer"/>
<xs:element name="street" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="state" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="studentType">
<xs:sequence>
<xs:element name="rollno" type="xs:integer"/>
<xs:element name="standard" type="xs:string"/>
<xs:element name="section" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="staffType">
<xs:sequence>
<xs:element name="staffid" type="xs:integer"/>
<xs:element name="subject" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>