人员将是根标签。人员将拥有每个人的姓名,年龄,性别,地址。一个人可以是学生或工作人员。学生将有rollno,标准和部分。如果是员工,那么工作人员和主题。每个学生必须有一个地址与以下入口 - doorno,街道,城市和州。 管理员提出了一个XML文档。
这是我的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" elementFormDefault="qualified">
<xs:element name="persons">
<xs:complexType>
<xs:sequence>
<xs:element name="person" maxOccurs="unbounded">
<xs:complexType>
<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">
<xs:complexType>
<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:element>
<xs:element name="student">
<xs:complexType>
<xs:sequence>
<xs:element name="rollno" type="xs:integer"/>
<xs:element name="standard" type="xs:integer"/>
<xs:element name="section" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="staff">
<xs:complexType>
<xs:sequence>
<xs:element name="staffid" type="xs:integer"/>
<xs:element name="subject" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
我是XML和学习者的新手。
错误:
Exception: cvc-complex-type.2.4.b: The content of element 'person' is not comple te. One of '{staff}' is expected.
答案 0 :(得分:1)
您的XSD表示应<xs:element name="student">
后跟<xs:element name="staff">
,但您希望有#34;学生或员工&#34;。对于此XSD,还有另一个元素<xs:choice>
:
<xs:choice>
<xs:element name="student">
<xs:complexType>
<xs:sequence>
<xs:element name="rollno" type="xs:integer"/>
<xs:element name="standard" type="xs:integer"/>
<xs:element name="section" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="staff">
<xs:complexType>
<xs:sequence>
<xs:element name="staffid" type="xs:integer"/>
<xs:element name="subject" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
请查看另一个答案:How to specify in an XML schema that either one of two fields must be present?