因此,我的任务是编写一个XML Schema Definition来存储我当前学期的学术计划。我应该包括我的名字和课程年份以及我的每个学术课程的其他元素。我需要执行规则,我必须至少有四个类,不超过八个类。对于每个班级,我需要一个指示符,课程名称,教师姓名和当前总体百分比。我还需要确保它们都是合适的数据类型。
我的问题似乎在于部分名称和课程年份。目前,我有:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="classSchedule">
<xs:complexType>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="classYear" type="xs:int"/>
<xs:sequence minOccurs="4" maxOccurs="8">
<xs:element name="class">
<xs:complexType>
<xs:all>
<xs:element name="courseDesignator" type="xs:string"/>
<xs:element name="courseName" type="xs:string"/>
<xs:element name="instructorName" type="xs:string"/>
<xs:element name="currentGrade" type="xs:float"/>
</xs:all>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
现在,我收到sequence
标记无法置于complexType
标记下方的错误。
姓名和班级年份是关于学生的信息,每个学生将有4到8个班级;现在我无法弄清楚为什么我在输入名字和课程年度时遇到了麻烦。当我拿出名称和班级年份的两行时,XSD会正确保存而不会出错。
答案 0 :(得分:1)
您的架构基本上很好,但是complexType节点的定义要求属性在序列之后。 E.g:
<xs:complexType>
<xs:sequence minOccurs="4" maxOccurs="8">
<xs:element name="class">
<xs:complexType>
...
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="classYear" type="xs:int"/>
</xs:complexType>