课程表的XML模式定义

时间:2013-03-30 18:44:41

标签: xml xsd

因此,我的任务是编写一个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会正确保存而不会出错。

1 个答案:

答案 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>