<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<!-- definition of simple type elements -->
	<xs:simpleType name="ID">
		<xs:restriction base="xs:integer"/>
	</xs:simpleType>
	<xs:simpleType name="EmailString">
		<xs:restriction base="xs:string"/>
	</xs:simpleType>
	<xs:simpleType name="PhoneNumber">
		<xs:restriction base="xs:string"/>
	</xs:simpleType>
	<xs:simpleType name="NameString">
		<xs:restriction base="xs:string">
			<xs:minLength value="1"/>
			<xs:maxLength value="255"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="Late">
		<xs:restriction base="xs:boolean"/>
	</xs:simpleType>
	<xs:element name="FirstName" type="NameString"/>
	<xs:element name="MiddleName" type="NameString"/>
	<xs:element name="LastName" type="NameString"/>
	<xs:element name="Address" type="xs:string"/>
	<xs:element name="City" type="xs:string"/>
	<xs:element name="StateOrProvince" type="xs:string"/>
	<xs:element name="PostalCode" type="xs:string"/>
	<xs:element name="Major" type="xs:string"/>
	<xs:element name="Extension" type="xs:string"/>
	<xs:element name="DepartmentName" type="NameString"/>
	<xs:element name="DepartmentNumber" type="xs:string"/>
	<xs:element name="StudentNumber" type="xs:string"/>
	<xs:element name="SectionNumber" type="xs:integer"/>
	<xs:element name="Term" type="xs:string"/>
	<xs:element name="Units" type="xs:integer"/>
	<xs:element name="Year" type="xs:integer"/>
	<xs:element name="Location" type="xs:string"/>
	<xs:element name="DaysAndTimes" type="xs:string"/>
	<xs:element name="Notes" type="xs:string"/>
	<xs:element name="AssignmentDescription" type="xs:string"/>
	<xs:element name="Exam" type="xs:string"/>
	<xs:element name="PercentOfGrade" type="xs:decimal"/>
	<xs:element name="MaximumPoints" type="xs:integer"/>
	<xs:element name="Grade" type="xs:integer"/>
	<xs:element name="Score" type="xs:integer"/>
	<!-- definition of complex type elements -->
	<!-- ************************** -->
	<!-- Name Type Container -->
	<!-- ************************** -->
	<xs:complexType name="NameType">
		<xs:sequence>
			<xs:element ref="FirstName"/>
			<xs:element ref="MiddleName" minOccurs="0"/>
			<xs:element ref="LastName"/>
		</xs:sequence>
	</xs:complexType>
	<!-- ************** -->
	<!-- Id Container -->
	<!-- ************** -->
	<xs:complexType name="IdType">
		<xs:sequence>
			<xs:element name="ID" type="ID"/>
		</xs:sequence>
	</xs:complexType>
	<!-- *********************** -->
	<!-- Address Container -->
	<!-- *********************** -->
	<xs:complexType name="AddressType">
		<xs:sequence>
			<xs:element ref="Address"/>
			<xs:element ref="City"/>
			<xs:element ref="StateOrProvince"/>
			<xs:element ref="PostalCode"/>
		</xs:sequence>
	</xs:complexType>
	<!-- ********************** -->
	<!-- Student Container  -->
	<!-- ********************** -->
	<xs:element name="Student">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="StudentID" type="IdType"/>
				<xs:element ref="StudentNumber"/>
				<xs:element name="Name" type="NameType"/>
				<xs:element name="Address" type="AddressType"/>
				<xs:element name="PhoneNumber" type="PhoneNumber"/>
				<xs:element name="Email" type="EmailString"/>
				<xs:element ref="Major"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

	<!-- ************************ -->
	<!-- Instructor Container -->
	<!-- ************************ -->
	<xs:element name="Instructor">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="InstructorID" type="IdType"/>
				<xs:element name="InstructorName" type="NameType"/>
				<xs:element name="Email" type="EmailString"/>
				<xs:element name="PhoneNumber" type="PhoneNumber"/>
				<xs:element ref="Extension"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

	<!-- ************************** -->
	<!-- Department Container -->
	<!-- ************************** -->
	<xs:element name="Department">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="DepartmentID" type="IdType"/>
				<xs:element ref="DepartmentName"/>
				<xs:element ref="DepartmentNumber"/>
				<xs:element name="DepartmentManager" type="NameType"/>
				<xs:element name="DepartmentChairperson" type="NameType"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

	<!-- ******************* -->
	<!-- Class Container -->
	<!-- ******************* -->
	<xs:element name="Class">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="ClassID" type="IdType"/>
				<xs:element name="ClassName" type="NameString"/>
				<xs:element name="DepartmentID" type="IdType"/>
				<xs:element ref="SectionNumber"/>
				<xs:element name="InstructorID" type="IdType"/>
				<xs:element ref="Term"/>
				<xs:element ref="Units"/>
				<xs:element ref="Year"/>
				<xs:element ref="Location"/>
				<xs:element ref="DaysAndTimes"/>
				<xs:element ref="Notes"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

	<!-- ************************** -->
	<!-- Assignment Container -->
	<!-- ************************** -->
	<xs:element name="Assignment">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="AssignmentID" type="IdType"/>
				<xs:element ref="AssignmentDescription"/>
				<xs:element name="ClassID" type="IdType"/>
				<xs:element ref="Exam"/>
				<xs:element ref="PercentOfGrade"/>
				<xs:element ref="MaximumPoints"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

	<!-- *************************************** -->
	<!-- Students and Classes Container -->
	<!-- *************************************** -->
	<xs:element name="StudentAndClass">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="StudentsClassID" type="IdType"/>
				<xs:element name="ClassID" type="IdType"/>
				<xs:element name="StudentID" type="IdType"/>
				<xs:element ref="Grade"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

	<!-- ******************** -->
	<!-- Result Container -->
	<!-- ******************** -->
	<xs:element name="Result">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="ResultsID" type="IdType"/>
				<xs:element name="StudentID" type="IdType"/>
				<xs:element name="AssignmentID" type="IdType"/>
				<xs:element ref="Score"/>
				<xs:element name="Late" type="Late"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

</xs:schema>
