<!--
		SIF Implementation Specification (Australia) 3.4.3


		(April 5, 2018)
		
		Infrastructure Version: v3
	-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.sifassociation.org/datamodel/au/3.4" targetNamespace="http://www.sifassociation.org/datamodel/au/3.4" elementFormDefault="qualified" version="3.4.3">
  <xs:complexType name="TeachingGroupType">
    <xs:annotation>
      <xs:appinfo>
        <sifChar />
        <privacyRating>Medium</privacyRating>
      </xs:appinfo>
      <xs:documentation>
        This object identifies a particular Teaching Group or class in a particular a time table.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SchoolYear" type="SchoolYearType">
        <xs:annotation>
          <xs:appinfo>
            <sifChar>M</sifChar>
            <privacyRating>Low</privacyRating>
          </xs:appinfo>
          <xs:documentation>School year for which the information is applicable, expressed as the four-digit year in which the school year ends (e.g., "2007").</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LocalId" type="LocalIdType">
        <xs:annotation>
          <xs:appinfo>
            <sifChar>M</sifChar>
            <privacyRating>Low</privacyRating>
          </xs:appinfo>
          <xs:documentation>LocalId of the Teaching Group (previously ClassIndicator).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ShortName" type="xs:normalizedString">
        <xs:annotation>
          <xs:appinfo>
            <sifChar>M</sifChar>
            <privacyRating>Low</privacyRating>
          </xs:appinfo>
          <xs:documentation>Short free format label that describes the group.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LongName" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:appinfo>
            <sifChar>O</sifChar>
            <privacyRating>Low</privacyRating>
          </xs:appinfo>
          <xs:documentation>Longer description if required.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="GroupType" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:appinfo>
            <sifChar>O</sifChar>
            <privacyRating>Low</privacyRating>
          </xs:appinfo>
          <xs:documentation>Added to allow local implementations to filter on categories of Teaching Group. Where there is a need to filter particular groups based on their types for particular functions;  group type provides the means of identifying the type of group such as roll class or subject class for instance and treat them accordingly.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Set" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:appinfo>
            <sifChar>O</sifChar>
            <privacyRating>Low</privacyRating>
          </xs:appinfo>
          <xs:documentation>Set Number (UK)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Block" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:appinfo>
            <sifChar>O</sifChar>
            <privacyRating>Low</privacyRating>
          </xs:appinfo>
          <xs:documentation>Block (UK)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CurriculumLevel" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:appinfo>
            <sifChar>O</sifChar>
            <privacyRating>Low</privacyRating>
          </xs:appinfo>
          <xs:documentation>Assessment Stage eg VELS Level</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolInfoRefId" minOccurs="0" nillable="true" type="RefIdType">
        <xs:annotation>
          <xs:appinfo>
            <sifChar>O</sifChar>
            <privacyRating>Low</privacyRating>
          </xs:appinfo>
          <xs:documentation>GUID of SchoolInfo object this teaching group belongs to.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolLocalId" minOccurs="0" nillable="true" type="LocalIdType">
        <xs:annotation>
          <xs:appinfo>
            <sifChar>O</sifChar>
            <privacyRating>Low</privacyRating>
          </xs:appinfo>
          <xs:documentation>Local School Id.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolCourseInfoRefId" minOccurs="0" nillable="true" type="RefIdType">
        <xs:annotation>
          <xs:appinfo>
            <sifChar>O</sifChar>
            <privacyRating>Low</privacyRating>
          </xs:appinfo>
          <xs:documentation>GUID of SchoolCourseInfo object this teaching group is part of.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolCourseLocalId" minOccurs="0" nillable="true" type="LocalIdType">
        <xs:annotation>
          <xs:appinfo>
            <sifChar>O</sifChar>
            <privacyRating>Low</privacyRating>
          </xs:appinfo>
          <xs:documentation>Local Course Id.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TimeTableSubjectRefId" minOccurs="0" nillable="true" type="RefIdType">
        <xs:annotation>
          <xs:appinfo>
            <sifChar>O</sifChar>
            <privacyRating>Low</privacyRating>
          </xs:appinfo>
          <xs:documentation>GUID of TimeTableSubject object this teaching group belongs to.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TimeTableSubjectLocalId" minOccurs="0" nillable="true" type="LocalIdType">
        <xs:annotation>
          <xs:appinfo>
            <sifChar>O</sifChar>
            <privacyRating>Low</privacyRating>
          </xs:appinfo>
          <xs:documentation>Local subject Id.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Semester" minOccurs="0" nillable="true" type="xs:unsignedInt">
        <xs:annotation>
          <xs:appinfo>
            <sifChar>O</sifChar>
            <privacyRating>Low</privacyRating>
          </xs:appinfo>
          <xs:documentation>Semester, Term, or Quarter subject offered.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StudentList" minOccurs="0" nillable="true" type="StudentListType">
        <xs:annotation>
          <xs:appinfo>
            <sifChar>O</sifChar>
            <privacyRating>Medium</privacyRating>
          </xs:appinfo>
          <xs:documentation>List of Students in this Teaching Group</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TeacherList" minOccurs="0" nillable="true" type="TeacherListType">
        <xs:annotation>
          <xs:appinfo>
            <sifChar>O</sifChar>
            <privacyRating>Medium</privacyRating>
          </xs:appinfo>
          <xs:documentation>A List of teachers associated with the group –  may or may not include the teacher timetabled in the schedule.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="MinClassSize" minOccurs="0" nillable="true" type="xs:integer">
        <xs:annotation>
          <xs:appinfo>
            <sifChar>O</sifChar>
            <privacyRating>Low</privacyRating>
          </xs:appinfo>
          <xs:documentation>Minimum class size.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="MaxClassSize" minOccurs="0" nillable="true" type="xs:integer">
        <xs:annotation>
          <xs:appinfo>
            <sifChar>O</sifChar>
            <privacyRating>Low</privacyRating>
          </xs:appinfo>
          <xs:documentation>Maximum class size</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TeachingGroupPeriodList" minOccurs="0" nillable="true" type="TeachingGroupPeriodListType">
        <xs:annotation>
          <xs:appinfo>
            <sifChar>O</sifChar>
            <privacyRating>Low</privacyRating>
          </xs:appinfo>
          <xs:documentation>A List of schedule information that can be published by an SIS which is a subset of information available in the TimeTableCell object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="SIF_MetadataType">
        <xs:annotation>
          <xs:appinfo>
            <sifChar>O</sifChar>
            <privacyRating>Medium</privacyRating>
          </xs:appinfo>
          <xs:documentation />
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="SIF_ExtendedElementsType">
        <xs:annotation>
          <xs:appinfo>
            <sifChar>O</sifChar>
            <privacyRating>Medium</privacyRating>
          </xs:appinfo>
          <xs:documentation />
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="RefIdType">
      <xs:annotation>
        <xs:appinfo>
          <sifChar>M</sifChar>
          <privacyRating>Low</privacyRating>
        </xs:appinfo>
        <xs:documentation>The GUID of the TeachingGroup</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="TeachingGroup" type="TeachingGroupType">
    <xs:key name="TeachingGroupKey1">
      <xs:selector xpath="./TeachingGroup" />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>

  <xs:complexType name="TeachingGroupCollectionType">
    <xs:sequence>
      <xs:element name="TeachingGroup" type="TeachingGroupType" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="TeachingGroups" type="TeachingGroupCollectionType" />

</xs:schema>