我正在尝试为 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>
需要两个修复:
- 在复杂类型之前关闭
person
的xs:element
标记 其余类型的声明。 - 修正一个错别字:
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>