<xs:element name="quizTime"><xs:annotation><xs:documentation>This is the root element that holds all information for the Quiz Time
system. This includes users of the system and exams/quizzes themselves.</xs:documentation></xs:annotation><xs:complexType><xs:sequence><xs:element ref="people" minOccurs="1" maxOccurs="1"/><xs:element ref="courses" minOccurs="1" maxOccurs="1"/><xs:element ref="students" minOccurs="1" maxOccurs="1"/><xs:element ref="professors" minOccurs="1" maxOccurs="1"/><xs:element ref="quizzes" minOccurs="1" maxOccurs="1"/><xs:element ref="stats" minOccurs="1" maxOccurs="1"/></xs:sequence></xs:complexType><!-- ########## --><!-- Keys/Refs --><!-- ########## --><xs:key name="personKey"><xs:annotation><xs:documentation>This key gets the id attribute from a person element under the people
element.</xs:documentation></xs:annotation><xs:selector xpath="people/person"/><xs:field xpath="@id"/></xs:key><xs:keyref refer="personKey" name="studentIsPerson"><xs:annotation><xs:documentation>This checks if the person attribute under a student is a valid id for a
person</xs:documentation></xs:annotation><xs:selector xpath="students/student"/><xs:field xpath="@person"/></xs:keyref><xs:keyref refer="personKey" name="professorIsPerson"><xs:annotation><xs:documentation>This checks if the person attribute under a professor is a valid id for a
person</xs:documentation></xs:annotation><xs:selector xpath="professors/professor"/><xs:field xpath="@person"/></xs:keyref><xs:key name="quizKey"><xs:annotation><xs:documentation>This gets the quiz attribute for a quiz found under
quizzes.</xs:documentation></xs:annotation><xs:selector xpath="quizzes/quiz"/><xs:field xpath="@quiz"/></xs:key><xs:keyref refer="quizKey" name="QuizTakenIsQuiz"><xs:annotation><xs:documentation>This checks if the quiz attribute under a student's quizTaken is a valid
quiz id.</xs:documentation></xs:annotation><xs:selector xpath="students/student/quizzesTaken/quizTaken"/><xs:field xpath="@quiz"/></xs:keyref><xs:keyref refer="quizKey" name="QuizStatsIsQuiz"><xs:annotation><xs:documentation>This checks if the quiz attribute under a quizStat element is a valid quiz
id.</xs:documentation></xs:annotation><xs:selector xpath="stats/quizStats/quizStat"/><xs:field xpath="@quiz"/></xs:keyref><xs:keyref refer="quizKey" name="professorOwnsQuiz"><xs:annotation><xs:documentation>This checks if the quiz attribute under a professors quizMade is a valid
quiz id.</xs:documentation></xs:annotation><xs:selector xpath="professors/professor/quizzesMade/quizMade"/><xs:field xpath="@quiz"/></xs:keyref><xs:key name="questionChoiceKey"><xs:annotation><xs:documentation>This gets the choiceLetter attribute from a multiple choice or true/false
question</xs:documentation></xs:annotation><xs:selector xpath="quizzes/quiz/questions/MCQuestion/mcChoice|quizzes/quiz/questions/TFQuestion/mcChoice"/><xs:field xpath="@choiceLetter"/></xs:key><xs:keyref refer="questionChoiceKey" name="answerIsChoice"><xs:annotation><xs:documentation>This checks if the answerID attribute for a multiple choice or true/false
question is a valid choice.</xs:documentation></xs:annotation><xs:selector xpath="quizzes/quiz/questions/MCQuestion/answer|quizzes/quiz/questions/TFQuestion/answer"/><xs:field xpath="@answerID"/></xs:keyref><xs:key name="courseNoKey"><xs:annotation><xs:documentation>This gets the courseNo attribute from a course under courses.</xs:documentation></xs:annotation><xs:selector xpath="courses/course"/><xs:field xpath="@courseNo"/></xs:key><xs:keyref refer="courseNoKey" name="studentCourseIsCourse"><xs:annotation><xs:documentation>This checks if the courseNo attribute under a student's class element is
a valid courseNo from courses</xs:documentation></xs:annotation><xs:selector xpath="students/student/classes/class"/><xs:field xpath="@courseNo"/></xs:keyref><xs:keyref refer="courseNoKey" name="professorCourseIsCourse"><xs:annotation><xs:documentation>This checks if the courseNo attribute under a professor's class element is
a valid courseNo from courses</xs:documentation></xs:annotation><xs:selector xpath="professors/professor/classes/class"/><xs:field xpath="@courseNo"/></xs:keyref><xs:keyref refer="courseNoKey" name="quizCourseIsCourse"><xs:annotation><xs:documentation>This checks if the courseNo attribute under a quiz is a valid courseNo
from courses</xs:documentation></xs:annotation><xs:selector xpath="quizzes/quiz"/><xs:field xpath="@courseNo"/></xs:keyref><!-- ########## --><!-- Uniques --><!-- ########## --><xs:unique name="personUsername"><xs:annotation><xs:documentation>This insures that every username for users of the system is
unique.</xs:documentation></xs:annotation><xs:selector xpath="people/person/username"/><xs:field xpath="."/></xs:unique></xs:element>
This element holds information about users of the system. This model isbeing used because it is possible for some users to teach courses and also be students inother courses.
<xs:element name="people"><xs:annotation><xs:documentation>This element holds information about users of the system. This model is
being used because it is possible for some users to teach courses and also be students in
other courses.</xs:documentation></xs:annotation><xs:complexType><xs:sequence><xs:element maxOccurs="unbounded" ref="person"/></xs:sequence></xs:complexType></xs:element>
This is an identifier attribute for each user of thesystem
Source
<xs:element name="person"><xs:annotation><xs:documentation>This element holds information for a specific user of the system. See the
parent element, people, for more information.</xs:documentation></xs:annotation><xs:complexType><xs:sequence><xs:element ref="name" minOccurs="1" maxOccurs="1"/><xs:element ref="username" minOccurs="1" maxOccurs="1"/><xs:element ref="password" minOccurs="1" maxOccurs="1"/></xs:sequence><xs:attributeGroup ref="personAtts"/></xs:complexType></xs:element>
<xs:element name="name"><xs:annotation><xs:documentation>This element holds a specific user's first, middle, and last
name.</xs:documentation></xs:annotation><xs:complexType><xs:sequence><xs:element ref="firstName" minOccurs="1" maxOccurs="1"/><xs:element ref="middle" minOccurs="1" maxOccurs="5"/><xs:element ref="lastName" minOccurs="1" maxOccurs="1"/></xs:sequence></xs:complexType></xs:element>
<xs:element name="firstName" type="xs:NCName"><xs:annotation><xs:documentation>This element represents the first name of a person.</xs:documentation></xs:annotation></xs:element>
<xs:element name="middle" type="xs:string"><xs:annotation><xs:documentation>This element represents the middle name(s) of a person.</xs:documentation></xs:annotation></xs:element>
<xs:element name="lastName" type="xs:NCName"><xs:annotation><xs:documentation>This element represents the last name of a person.</xs:documentation></xs:annotation></xs:element>
<xs:element name="username" type="xs:string"><xs:annotation><xs:documentation>This element stores a username for a person who has access to the system.</xs:documentation></xs:annotation></xs:element>
<xs:element name="password" type="xs:string"><xs:annotation><xs:documentation>This element stores an MD5 hashed password for a person who has access to
the system.</xs:documentation></xs:annotation></xs:element>
<xs:element name="courses"><xs:annotation><xs:documentation>This element holds a collection of course elements.</xs:documentation></xs:annotation><xs:complexType><xs:sequence><xs:element ref="course" minOccurs="1" maxOccurs="unbounded"/></xs:sequence></xs:complexType></xs:element>
This attribute defines a course number in the format "0000-000-00" where the0s are any digits.
Source
<xs:element name="course"><xs:annotation><xs:documentation>This element holds information about a specific course that quizzes can be
given under.</xs:documentation></xs:annotation><xs:complexType mixed="false"><xs:sequence><xs:element ref="courseTitle" minOccurs="1" maxOccurs="1"/><xs:element ref="courseDescription" minOccurs="1" maxOccurs="1"/><xs:element ref="link" minOccurs="0" maxOccurs="1"/></xs:sequence><xs:attribute ref="courseNo" use="required"/></xs:complexType></xs:element>
<xs:element name="courseDescription"><xs:annotation><xs:documentation>This holds a description for a course</xs:documentation></xs:annotation><xs:complexType mixed="true"><xs:sequence><xs:element ref="link" maxOccurs="unbounded" minOccurs="0"/></xs:sequence></xs:complexType></xs:element>
<xs:element name="link" type="xs:anyURI"><xs:annotation><xs:documentation>This element is used for inserting links into any of the existing
elements</xs:documentation></xs:annotation></xs:element>
<xs:element name="students"><xs:annotation><xs:documentation>This element holds a collection of student elements.</xs:documentation></xs:annotation><xs:complexType><xs:sequence><xs:element maxOccurs="unbounded" ref="student"/></xs:sequence></xs:complexType></xs:element>
This element holds information specific to a student in the system. Itlinks to a person element through the "person" attribute and then holds information specificto this user as a student of the system.
This attribute is used to link a student or professor to a specific personin the system.
Source
<xs:element name="student"><xs:annotation><xs:documentation>This element holds information specific to a student in the system. It
links to a person element through the "person" attribute and then holds information specific
to this user as a student of the system.</xs:documentation></xs:annotation><xs:complexType><xs:sequence><xs:element ref="classes" minOccurs="0" maxOccurs="unbounded"/><xs:element ref="quizzesTaken" minOccurs="1" maxOccurs="1"/></xs:sequence><!-- @person is keyref'ed to @id in person --><xs:attribute ref="person" use="required"/></xs:complexType></xs:element>
<xs:element name="classes"><xs:annotation><xs:documentation>This element is a container for other class elements that a professor may
or may not have.</xs:documentation></xs:annotation><xs:complexType><xs:sequence><xs:element ref="class" minOccurs="1" maxOccurs="unbounded"/></xs:sequence></xs:complexType></xs:element>
This attribute defines a course number in the format "0000-000-00" where the0s are any digits.
Source
<xs:element name="class"><xs:annotation><xs:documentation>This element stores a course number as an attribute and then plain text
(which is assumed to be the name of the course) for a specific class.</xs:documentation></xs:annotation><xs:complexType mixed="true"><xs:sequence><xs:element ref="link" minOccurs="0" maxOccurs="unbounded"/></xs:sequence><xs:attribute ref="courseNo" use="required"/></xs:complexType></xs:element>
<xs:element name="quizzesTaken"><xs:annotation><xs:documentation>This element stores information about quizzes a student in the system has
taken.</xs:documentation></xs:annotation><xs:complexType><xs:sequence><xs:element ref="quizTaken" minOccurs="0" maxOccurs="unbounded"/></xs:sequence></xs:complexType></xs:element>
This is used to link an element to a specific quiz
Source
<xs:element name="quizTaken"><xs:annotation><xs:documentation>This element stores information about a specific qiuz a student has taken.</xs:documentation></xs:annotation><xs:complexType><xs:sequence><xs:element minOccurs="0" maxOccurs="unbounded" ref="answer"/></xs:sequence><!-- @quiz is keyref'ed to @quiz in quizzes/quiz--><xs:attribute ref="quiz" use="required"/></xs:complexType></xs:element>
This links an element to a specific question element
Source
<xs:element name="answer"><xs:annotation><xs:documentation>This element stores an answer to a question. It can be used by both
students (for their answers) and quizzes (for the correct answer).</xs:documentation></xs:annotation><xs:complexType mixed="true"><xs:sequence><xs:element ref="link" minOccurs="0" maxOccurs="unbounded"/></xs:sequence><xs:attribute ref="question" use="required"/><xs:attribute ref="essay" use="optional"/></xs:complexType></xs:element>
<xs:element name="professors"><xs:annotation><xs:documentation>This element stores a collection of professor elements.</xs:documentation></xs:annotation><xs:complexType><xs:sequence><xs:element maxOccurs="unbounded" ref="professor"/></xs:sequence></xs:complexType></xs:element>
This element stores information about a specific professor. It links to aperson element through the "person" attribute so that additional information about being aprofessor can be linked through a user.
This attribute is used to link a student or professor to a specific personin the system.
Source
<xs:element name="professor"><xs:annotation><xs:documentation>This element stores information about a specific professor. It links to a
person element through the "person" attribute so that additional information about being a
professor can be linked through a user.</xs:documentation></xs:annotation><xs:complexType><!-- @person is keyref'ed to a person element --><xs:sequence><xs:element ref="classes" minOccurs="0" maxOccurs="1"/><xs:element ref="quizzesMade" minOccurs="0" maxOccurs="1"/></xs:sequence><xs:attribute ref="person" use="required"/></xs:complexType></xs:element>
<xs:element name="quizzesMade"><xs:annotation><xs:documentation>This element is a container for quizMade elements that a professor is
'responsible' for.</xs:documentation></xs:annotation><xs:complexType><xs:sequence><xs:element ref="quizMade" minOccurs="1" maxOccurs="unbounded"/></xs:sequence></xs:complexType></xs:element>
This element is linked to an existing quiz (as a professor would beresponsible for making a quiz) and allows for a professor to put his/her own notes about thequiz as plain text.
This is used to link an element to a specific quiz
Source
<xs:element name="quizMade"><xs:annotation><xs:documentation>This element is linked to an existing quiz (as a professor would be
responsible for making a quiz) and allows for a professor to put his/her own notes about the
quiz as plain text.</xs:documentation></xs:annotation><xs:complexType mixed="true"><xs:sequence><xs:element ref="link" minOccurs="0" maxOccurs="unbounded"/></xs:sequence><xs:attribute ref="quiz" use="required"/></xs:complexType></xs:element>
<xs:element name="quizzes"><xs:annotation><xs:documentation>This element holds a collection of quiz elements.</xs:documentation></xs:annotation><xs:complexType><xs:sequence><xs:element ref="quiz" minOccurs="0" maxOccurs="unbounded"/></xs:sequence></xs:complexType></xs:element>
This attribute defines when a quiz can be started bystudents
Source
<xs:element name="quiz"><xs:annotation><xs:documentation>This element represents a quiz in the system. It holds different kinds of
questions and associated answers to the questions.</xs:documentation></xs:annotation><xs:complexType><xs:sequence><xs:element ref="link" maxOccurs="unbounded" minOccurs="0"/><xs:element ref="notes" minOccurs="0" maxOccurs="1"/><xs:element ref="questions" minOccurs="1" maxOccurs="1"/></xs:sequence><xs:attributeGroup ref="quizAtts"/></xs:complexType></xs:element>
<xs:element name="notes"><xs:annotation><xs:documentation>This is a general 'notes' element. It is meant to hold plain text and be
re-used as it is needed.</xs:documentation></xs:annotation><xs:complexType mixed="true"><xs:sequence><xs:choice><xs:element ref="link" minOccurs="0" maxOccurs="unbounded"/><xs:element ref="image" minOccurs="0" maxOccurs="unbounded"/></xs:choice></xs:sequence></xs:complexType></xs:element>
<xs:element name="image"><xs:annotation><xs:documentation>This element will support images for the quiz system.</xs:documentation></xs:annotation><xs:complexType><xs:attributeGroup ref="imageAtts"/></xs:complexType></xs:element>
<xs:element name="questions"><xs:annotation><xs:documentation>This element holds a collection of different questions (multiple choice,
true/false, and essay/write in).</xs:documentation></xs:annotation><xs:complexType><xs:sequence minOccurs="1"><xs:element ref="MCQuestion" minOccurs="0" maxOccurs="unbounded"/><xs:element ref="TFQuestion" minOccurs="0" maxOccurs="unbounded"/><xs:element ref="EssayQuestion" minOccurs="0" maxOccurs="unbounded"/></xs:sequence></xs:complexType></xs:element>
This is an attribute used for determining the type of character to prependa multiple choice answer with (a,b,c,d,etc.). It allows for multiple letters followed bynumbers (so you could have "aa" or "a1" as choice options, as well). This was decided forquestions that have the potential to have alot of answers. This syntax also supports the useof true or false.
Source
<xs:element name="mcChoice"><xs:annotation><xs:documentation>This element holds information relating to a choice in a multiple choice
question.</xs:documentation></xs:annotation><xs:complexType mixed="true"><xs:sequence><xs:choice maxOccurs="unbounded"><xs:element ref="image" maxOccurs="unbounded" minOccurs="0"/><xs:element ref="link" minOccurs="0" maxOccurs="unbounded"/></xs:choice></xs:sequence><xs:attribute ref="choiceLetter" use="required"/></xs:complexType></xs:element>
<xs:element name="stats"><xs:annotation><xs:documentation>This element stores statistical information about quizzes taken. It gets
aggregated with data from quizzes after a process is run.</xs:documentation></xs:annotation><xs:complexType><xs:sequence><xs:element ref="quizStats"/></xs:sequence></xs:complexType></xs:element>
<xs:element name="quizStats"><xs:annotation><xs:documentation>This element is a container for statistical information about each quiz.
Elements here are only added when a process generates them.</xs:documentation></xs:annotation><xs:complexType><xs:sequence><xs:element ref="quizStat" minOccurs="0" maxOccurs="unbounded"/></xs:sequence></xs:complexType></xs:element>
This element holds statistical information about a specific quiz. It allowsfor mixed content so that HTML (or some other data represenation) content can be placed init.
This is used to link an element to a specific quiz
Source
<xs:element name="quizStat"><xs:annotation><xs:documentation>This element holds statistical information about a specific quiz. It allows
for mixed content so that HTML (or some other data represenation) content can be placed in
it.</xs:documentation></xs:annotation><xs:complexType mixed="true"><xs:sequence maxOccurs="unbounded"><xs:choice maxOccurs="unbounded"><xs:element ref="image" minOccurs="0" maxOccurs="unbounded"/><xs:element ref="link" minOccurs="0" maxOccurs="unbounded"/><xs:element ref="question" minOccurs="1" maxOccurs="unbounded"/><xs:element ref="answer" minOccurs="1" maxOccurs="unbounded"/></xs:choice></xs:sequence><!-- @quiz is keyref'ed to @quiz in quizzes/quiz --><xs:attribute ref="quiz" use="required"/></xs:complexType></xs:element>
This attribute is used to define a question number on one of the questionelements
Source
<xs:element name="question"><xs:annotation><xs:documentation>This is a generic question element that is used for statistical
reporting</xs:documentation></xs:annotation><xs:complexType mixed="true"><xs:sequence><xs:choice maxOccurs="unbounded"><xs:element ref="image" maxOccurs="unbounded" minOccurs="0"/><xs:element ref="link" maxOccurs="unbounded" minOccurs="0"/></xs:choice></xs:sequence><xs:attribute ref="questionNum" use="required"/></xs:complexType></xs:element>
<xs:attribute name="id" use="required" type="xs:integer"><xs:annotation><xs:documentation>This is an identifier attribute for each user of the
system</xs:documentation></xs:annotation></xs:attribute>
<xs:attribute name="admin" use="optional" type="xs:boolean"><xs:annotation><xs:documentation>This is an attribute that flags a user as an administrator or
not</xs:documentation></xs:annotation></xs:attribute>
<xs:attribute name="courseNo"><xs:annotation><xs:documentation>This attribute defines a course number in the format "0000-000-00" where the
0s are any digits.</xs:documentation></xs:annotation><xs:simpleType><xs:restriction base="xs:string"><xs:pattern value="\d{4}-\d{3}-\d{2}"/></xs:restriction></xs:simpleType></xs:attribute>
<xs:attribute name="question" type="xs:integer"><xs:annotation><xs:documentation>This links an element to a specific question element</xs:documentation></xs:annotation></xs:attribute>
<xs:attribute name="essay" type="xs:boolean"><xs:annotation><xs:documentation>This determines if an answer should be an essay format
answer</xs:documentation></xs:annotation></xs:attribute>
<xs:attribute name="quiz" type="xs:integer"><xs:annotation><xs:documentation>This is used to link an element to a specific quiz</xs:documentation></xs:annotation></xs:attribute>
<xs:attribute name="person" type="xs:integer"><xs:annotation><xs:documentation>This attribute is used to link a student or professor to a specific person
in the system.</xs:documentation></xs:annotation></xs:attribute>
This is an attribute used for determining the type of character to prependa multiple choice answer with (a,b,c,d,etc.). It allows for multiple letters followed bynumbers (so you could have "aa" or "a1" as choice options, as well). This was decided forquestions that have the potential to have alot of answers. This syntax also supports the useof true or false.
<xs:attribute name="choiceLetter"><xs:annotation><xs:documentation>This is an attribute used for determining the type of character to prepend
a multiple choice answer with (a,b,c,d,etc.). It allows for multiple letters followed by
numbers (so you could have "aa" or "a1" as choice options, as well). This was decided for
questions that have the potential to have alot of answers. This syntax also supports the use
of true or false.</xs:documentation></xs:annotation><xs:simpleType><xs:restriction base="xs:string"><xs:pattern value="[a-zA-Z]+\d*|true|false"/></xs:restriction></xs:simpleType></xs:attribute>
<xs:attribute name="questionNum" type="xs:integer"><xs:annotation><xs:documentation>This attribute is used to define a question number on one of the question
elements</xs:documentation></xs:annotation></xs:attribute>
<xs:attribute name="created" use="required" type="xs:dateTime"><xs:annotation><xs:documentation>This attribute defines when an object in the system is created (such as a
quiz)</xs:documentation></xs:annotation></xs:attribute>
<xs:attribute name="modified" use="required" type="xs:dateTime"><xs:annotation><xs:documentation>This attribute defines when an object in the system is modified (such as a
quiz)</xs:documentation></xs:annotation></xs:attribute>
<xs:attribute name="start" use="optional" type="xs:dateTime"><xs:annotation><xs:documentation>This attribute defines when a quiz can be started by
students</xs:documentation></xs:annotation></xs:attribute>
This is an identifier attribute for each user of thesystem
Source
<xs:attributeGroup name="personAtts"><xs:annotation><xs:documentation>This groups the attributes used by the person element.</xs:documentation></xs:annotation><xs:attribute name="id" use="required" type="xs:integer"><xs:annotation><xs:documentation>This is an identifier attribute for each user of the
system</xs:documentation></xs:annotation></xs:attribute><xs:attribute name="admin" use="optional" type="xs:boolean"><xs:annotation><xs:documentation>This is an attribute that flags a user as an administrator or
not</xs:documentation></xs:annotation></xs:attribute></xs:attributeGroup>
This attribute defines when a quiz can be started bystudents
Source
<xs:attributeGroup name="quizAtts"><xs:attribute ref="quiz" use="required"/><xs:attribute ref="courseNo" use="optional"/><xs:attribute name="created" use="required" type="xs:dateTime"><xs:annotation><xs:documentation>This attribute defines when an object in the system is created (such as a
quiz)</xs:documentation></xs:annotation></xs:attribute><xs:attribute name="modified" use="required" type="xs:dateTime"><xs:annotation><xs:documentation>This attribute defines when an object in the system is modified (such as a
quiz)</xs:documentation></xs:annotation></xs:attribute><xs:attribute name="start" use="optional" type="xs:dateTime"><xs:annotation><xs:documentation>This attribute defines when a quiz can be started by
students</xs:documentation></xs:annotation></xs:attribute><xs:attribute name="end" use="optional" type="xs:dateTime"><xs:annotation><xs:documentation>This attribute defines when a quiz ends (for student
completion)</xs:documentation></xs:annotation></xs:attribute></xs:attributeGroup>