0

因此,我的任务是编写一个 XML 模式定义来存储我当前学期的学习时间表。我应该包括我的姓名和班级年份以及每个学术课程的其他元素。我需要强制执行规则,我必须至少有四个班级并且不超过八个班级。对于每个班级,我需要一个代号、课程名称、讲师姓名和当前的总体百分比。我还需要确保它们都是合适的数据类型。

我的问题似乎在于将部分名称和班级年份。目前,我有:

<?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 正确保存而没有错误。

4

1 回答 1

1

您的模式大部分都很好,但是complexType节点的定义要求属性位于序列之后。例如:

<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>
于 2013-03-30T18:56:46.660 回答