<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:schema="http://www.slc.co.uk/course/schema/1.0" xmlns:entites="http://www.slc.co.uk/course/entities/1.0" xmlns:types="http://www.slc.co.uk/course/types/1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.slc.co.uk/course/schema/1.0" elementFormDefault="unqualified" attributeFormDefault="unqualified">
	<xs:annotation>
		<xs:documentation>SLC Course Database Schema</xs:documentation>
		<xs:documentation>Author: John McTeague</xs:documentation>
		<xs:documentation>Version: 1.0</xs:documentation>
		<xs:documentation>Simple schema based on existing DB schema</xs:documentation>
	</xs:annotation>
	<xs:import namespace="http://www.slc.co.uk/course/entities/1.0" schemaLocation="./HEICourseDatabaseEntities.xsd"/>
	<xs:import namespace="http://www.slc.co.uk/course/types/1.0" schemaLocation="./HEICourseDatabaseTypes.xsd"/>
	<xs:element name="courseCatalogRequest">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="heiCode" type="types:heiCode"/>
				<xs:element name="academicYear" type="types:academicYear"/>
				<xs:element name="schemaVersion" type="xs:decimal"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="courseCatalogResponse">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="catalog" type="schema:catalog" minOccurs="0"/>
				<xs:element name="result" type="schema:result" minOccurs="0"/>
				<xs:element name="schemaVersion" type="xs:decimal"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="courseRequest">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="heiCode" type="types:heiCode"/>
				<xs:element name="slcCourseCode" type="types:slcCourseCode"/>
				<xs:element name="academicYear" type="types:academicYear"/>
				<xs:element name="schemaVersion" type="xs:decimal"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="courseResponse">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="course" type="entites:course" minOccurs="0"/>
				<xs:element name="result" type="schema:result" minOccurs="0"/>
				<xs:element name="schemaVersion" type="xs:decimal"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="locationRequest">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="heiCode" type="types:heiCode"/>
				<xs:element name="campus" type="types:campus"/>
				<xs:element name="franchise" type="types:yesNo"/>
				<xs:element name="schemaVersion" type="xs:decimal"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="locationResponse">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="location" type="entites:location" minOccurs="0"/>
				<xs:element name="result" type="schema:result"/>
				<xs:element name="schemaVersion" type="xs:decimal"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="institutionRequest">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="heiCode" type="types:heiCode"/>				
				<xs:element name="schemaVersion" type="xs:decimal"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="institutionResponse">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="institution" type="entites:institution" minOccurs="0"/>
				<xs:element name="result" type="schema:result"/>
				<xs:element name="schemaVersion" type="xs:decimal" />
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="institutionYearRequest">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="heiCode" type="types:heiCode"/>
				<xs:element name="academicYear" type="types:academicYear"/>
				<xs:element name="schemaVersion" type="xs:decimal"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="institutionYearResponse">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="institutionYear" type="entites:institutionYear" minOccurs="0"/>
				<xs:element name="result" type="schema:result"/>
				<xs:element name="schemaVersion" type="xs:decimal"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="qualificationsListRequest">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="schemaVersion" type="xs:decimal"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="qualificationsListResponse">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="qualification" type="entites:qualification" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="result" type="schema:result"/>
				<xs:element name="schemaVersion" type="xs:decimal"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="courseCatalogSubmissionRequest">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="academicYear" type="types:academicYear" minOccurs="0" maxOccurs="1"/>
				<xs:element name="catalog" type="schema:catalog"/>
				<xs:element name="schemaVersion" type="xs:decimal"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="courseCatalogSubmissionResponse">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="catalogSubmissionResponse" type="schema:catalogSubmissionResponse" minOccurs="0"/>
				<xs:element name="result" type="schema:result"/>
				<xs:element name="submissionNumber" type="xs:int"/>
				<xs:element name="schemaVersion" type="xs:decimal"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="catalog">
		<xs:annotation>
			<xs:documentation>Root element. A catalog is made up of one or more institutions.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="institution" type="entites:institution" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="catalogSubmissionResponse">
		<xs:sequence>
			<xs:element name="institutionSubmissionResponse" type="schema:institutionSubmissionResponse" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="institutionSubmissionResponse">
		<xs:annotation>
			<xs:documentation>
				The response to all the updates for an institution.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="heiCode" type="types:heiCode"/>
			<xs:element name="locationSubmissionResponse" type="schema:locationSubmissionResponse" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="institutionYearSubmissionResponse" type="schema:institutionYearSubmissionResponse" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="courseSubmissionResponse" type="schema:courseSubmissionResponse" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="result" type="schema:result"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="courseSubmissionResponse">
		<xs:annotation>
			<xs:documentation>The response from a course update/insert</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="slcCourseCode" type="types:slcCourseCode" minOccurs="0" maxOccurs="1"/>
			<xs:element name="shortName" type="types:courseShortName" minOccurs="0"/>
			<xs:element name="heiCourseCode" type="types:courseHeiCourseCode" minOccurs="0"/>					
			<xs:element name="result" type="schema:result"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="institutionYearSubmissionResponse">
		<xs:annotation>
			<xs:documentation>Response for an institution update/insert</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="academicYear" type="types:academicYear"/>
			<xs:element name="result" type="schema:result"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="locationSubmissionResponse">
		<xs:annotation>
			<xs:documentation>
				The response for a location update/insert
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="campus" type="types:campus"/>
			<xs:element name="franchise" type="types:yesNo"/>
			<xs:element name="result" type="schema:result"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="result">
		<xs:annotation>
			<xs:documentation>The response from an update/insert</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="resultNumber" type="xs:int" minOccurs="0"/>
			<xs:element name="message" type="schema:resultMessage" minOccurs="0"/>
			<xs:element name="lastUpdatedDateTime" type="types:timeStamp" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:simpleType name="resultMessage">
		<xs:restriction base="xs:string">
			<xs:minLength value="0"/>
			<xs:maxLength value="100"/>
		</xs:restriction>
	</xs:simpleType>
</xs:schema>

