<!--
		SIF Implementation Specification (Australia) 1.1 (December 23, 2010) Infrastructure Version: 2.4-16
	-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" targetNamespace="http://www.sifinfo.org/au/infrastructure/2.x" xmlns:sif="http://www.sifinfo.org/au/infrastructure/2.x" elementFormDefault="qualified">
  <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="imports/xml/xml.xsd" />
  <xs:simpleType name="LocalIdType">
    <xs:restriction base="xs:normalizedString">
      <xs:annotation>
        <xs:documentation>
        This is a common element used to define the locally assigned identifier associated with an entity. 
      </xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="LocalId" type="sif:LocalIdType" />

  <xs:complexType name="LocationType">
    <xs:sequence>
      <xs:element name="LocationName" minOccurs="0" nillable="true" type="xs:token">
        <xs:annotation>
          <xs:documentation>Name of the location.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LocationRefId" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:annotation>
            <xs:documentation>
      RefId of the location object if the location is a SIF Object such as </xs:documentation>
          </xs:annotation>
          <xs:simpleContent>
            <xs:extension base="sif:IdRefTypeOrEmpty">
              <xs:attribute name="SIF_RefObject" use="required">
                <xs:annotation>
                  <xs:documentation>
      Type of SIF Object </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="SchoolInfo" />
                    <xs:enumeration value="LEAInfo" />
                    <xs:enumeration value="RoomInfo" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="Type" use="optional">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="Classroom" />
          <xs:enumeration value="School" />
          <xs:enumeration value="District" />
          <xs:enumeration value="Campus" />
          <xs:enumeration value="IntermediateUnit" />
          <xs:enumeration value="StateEducationAgency" />
          <xs:enumeration value="NonInstructionalSpace" />
          <xs:enumeration value="AthleticVenue" />
          <xs:enumeration value="Other" />
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="Location" type="sif:LocationType" />

  <xs:simpleType name="StateProvinceIdType">
    <xs:restriction base="xs:normalizedString">
      <xs:annotation>
        <xs:documentation>The identifier for this entity as assigned by the state or province.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="StateProvinceId" type="sif:StateProvinceIdType" />

  <xs:complexType name="AttendanceCodeType">
    <xs:annotation>
      <xs:documentation>Code that describes the absence/attendance.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Code" minOccurs="0" type="sif:AUCodeSetsAttendanceCodeType">
        <xs:annotation>
          <xs:documentation>Code representing the absence/attendance.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="AttendanceCode" type="sif:AttendanceCodeType" />

  <xs:complexType name="YearLevelType">
    <xs:annotation>
      <xs:documentation>Year or academic level.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Code" minOccurs="0" type="sif:AUCodeSetsYearLevelCodeType">
        <xs:annotation>
          <xs:documentation>Code representing the year level.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="YearLevel" type="sif:YearLevelType" />

  <xs:complexType name="PersonInfoType">
    <xs:annotation>
      <xs:documentation />
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Name" minOccurs="0" type="sif:NameOfRecordType">
        <xs:annotation>
          <xs:documentation>The name of the person. Note: Type attribute value of LGL must be used here.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="OtherNames" minOccurs="0" nillable="true" type="sif:OtherNamesType">
        <xs:annotation>
          <xs:documentation>Previous, alternate or other names or aliases associated with the person.</xs:documentation>
        </xs:annotation>
        <xs:unique name="OtherNamesKey1">
          <xs:selector xpath="./sif:Name" />
          <xs:field xpath="@Type" />
        </xs:unique>
      </xs:element>
      <xs:element name="Demographics" minOccurs="0" nillable="true" type="sif:DemographicsType">
        <xs:annotation>
          <xs:documentation>Demographic information about the person.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AddressList" minOccurs="0" nillable="true" type="sif:AddressListType">
        <xs:annotation>
          <xs:documentation>The person’s address(es).</xs:documentation>
        </xs:annotation>
        <xs:unique name="AddressListKey1">
          <xs:selector xpath="./sif:Address" />
          <xs:field xpath="@Type" />
          <xs:field xpath="@Role" />
        </xs:unique>
      </xs:element>
      <xs:element name="PhoneNumberList" minOccurs="0" nillable="true" type="sif:PhoneNumberListType">
        <xs:annotation>
          <xs:documentation>The person’s phone number(s).</xs:documentation>
        </xs:annotation>
        <xs:unique name="PhoneNumberListKey1">
          <xs:selector xpath="./sif:PhoneNumber" />
          <xs:field xpath="@Type" />
        </xs:unique>
      </xs:element>
      <xs:element name="EmailList" minOccurs="0" nillable="true" type="sif:EmailListType">
        <xs:annotation>
          <xs:documentation>The person’s e-mail address(es).</xs:documentation>
        </xs:annotation>
        <xs:unique name="EmailListKey1">
          <xs:selector xpath="./sif:Email" />
          <xs:field xpath="@Type" />
        </xs:unique>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="PersonInfo" type="sif:PersonInfoType" />

  <xs:complexType name="YearLevelsType">
    <xs:annotation>
      <xs:documentation>
        List of year levels.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:YearLevel" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="YearLevels" type="sif:YearLevelsType" />

  <xs:simpleType name="SchoolURLType">
    <xs:restriction base="xs:anyURI">
      <xs:annotation>
        <xs:documentation>URL for a school.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="SchoolURL" type="sif:SchoolURLType" />

  <xs:complexType name="PrincipalInfoType">
    <xs:annotation>
      <xs:documentation>Information about the campus or school principal.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="ContactName" minOccurs="0" type="sif:NameOfRecordType">
        <xs:annotation>
          <xs:documentation>The name of the principal.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ContactTitle" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The principal's title.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PhoneNumberList" minOccurs="0" nillable="true" type="sif:PhoneNumberListType">
        <xs:annotation>
          <xs:documentation>The principal’s phone number(s).</xs:documentation>
        </xs:annotation>
        <xs:unique name="PhoneNumberListKey2">
          <xs:selector xpath="./sif:PhoneNumber" />
          <xs:field xpath="@Type" />
        </xs:unique>
      </xs:element>
      <xs:element name="EmailList" minOccurs="0" nillable="true" type="sif:EmailListType">
        <xs:annotation>
          <xs:documentation>The principal’s e-mail address(es).</xs:documentation>
        </xs:annotation>
        <xs:unique name="EmailListKey2">
          <xs:selector xpath="./sif:Email" />
          <xs:field xpath="@Type" />
        </xs:unique>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="PrincipalInfo" type="sif:PrincipalInfoType" />

  <xs:complexType name="SchoolContactListType">
    <xs:annotation>
      <xs:documentation>A list of contact persons associated with a school.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SchoolContact" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="PublishInDirectory" minOccurs="0" nillable="true" type="sif:PublishInDirectoryType">
              <xs:annotation>
                <xs:documentation>Indicates whether or not this school contact's information should be published in a directory of school information.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element ref="sif:ContactInfo" minOccurs="0" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SchoolContactList" type="sif:SchoolContactListType" />

  <xs:simpleType name="PublishInDirectoryType">
    <xs:restriction base="sif:AUCodeSetsYesOrNoCategoryType">
      <xs:annotation>
        <xs:documentation>Indicates whether or not information should be published in a directory.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="PublishInDirectory" type="sif:PublishInDirectoryType" />

  <xs:complexType name="ContactInfoType">
    <xs:annotation>
      <xs:documentation>Common element used to supply information for a contact person at a school, LEA, or other institution.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:Name" minOccurs="0" />
      <xs:element name="PositionTitle" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The contact person's position title.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Role" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Role played by this contact in this instance.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Address" minOccurs="0" nillable="true" type="sif:AddressType">
        <xs:annotation>
          <xs:documentation>Address of the contact.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EmailList" minOccurs="0" nillable="true" type="sif:EmailListType">
        <xs:annotation>
          <xs:documentation>List of Email elements.</xs:documentation>
        </xs:annotation>
        <xs:unique name="EmailListKey3">
          <xs:selector xpath="./sif:Email" />
          <xs:field xpath="@Type" />
        </xs:unique>
      </xs:element>
      <xs:element name="PhoneNumberList" minOccurs="0" nillable="true" type="sif:PhoneNumberListType">
        <xs:annotation>
          <xs:documentation>List of PhoneNumber elements.</xs:documentation>
        </xs:annotation>
        <xs:unique name="PhoneNumberListKey3">
          <xs:selector xpath="./sif:PhoneNumber" />
          <xs:field xpath="@Type" />
        </xs:unique>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ContactInfo" type="sif:ContactInfoType" />

  <xs:complexType name="AddressType">
    <xs:annotation>
      <xs:documentation>This element contains address data.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Street" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Line1" minOccurs="0" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Address line 1.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="Line2" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Address line 2.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="Line3" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Address line 3.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="Complex" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Name of the complex.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="StreetNumber" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The address number assigned to the building.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="StreetPrefix" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Street prefix like NE</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="StreetName" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The name of the street.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="StreetType" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The type of street. For example, Lane, Blvd., Ave., etc.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="StreetSuffix" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Street suffix like SW.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="ApartmentType" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Type of apartment, for example, Suite.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="ApartmentNumberPrefix" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Apartment number prefix.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="ApartmentNumber" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The number of the apartment.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="ApartmentNumberSuffix" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Apartment number suffix.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="City" minOccurs="0" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The city part of the address.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StateProvince" minOccurs="0" nillable="true" type="sif:StateProvinceType">
        <xs:annotation>
          <xs:documentation>The state or province code. StateTerritory Code only applicable if an Australian Address. Conditional- If Australian Address this is mandatory. </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Country" minOccurs="0" nillable="true" type="sif:CountryType">
        <xs:annotation>
          <xs:documentation>The country code.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PostalCode" minOccurs="0" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The ZIP/postal code.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="GridLocation" minOccurs="0" nillable="true" type="sif:GridLocationType">
        <xs:annotation>
          <xs:documentation>The location of the address.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="MapReference" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="XCoordinate" minOccurs="0" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>X Co-ordinate of reference</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="YCoordinate" minOccurs="0" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Y Co-ordinate of reference</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
          <xs:attribute name="Type" use="required" type="xs:normalizedString">
            <xs:annotation>
              <xs:documentation>Type map reference</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:complexType>
      </xs:element>
      <xs:element name="RadioContact" minOccurs="0" nillable="true" type="xs:string">
        <xs:annotation>
          <xs:documentation>UHF Radio frequency or channel used for contact eg: 477MHz or CH60</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Community" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>This element is used to describe a Community that is associated with the instance of the address.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LocalId" minOccurs="0" nillable="true" type="sif:LocalIdType">
        <xs:annotation>
          <xs:documentation>This is the LocalId of the specific address if it can be provided.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AddressGlobalUID" minOccurs="0" nillable="true" type="sif:GUIDType">
        <xs:annotation>
          <xs:documentation>
        This is the GUID generated by the Provider system.  Where it is available to be provided, the globally unique identifier links together separate instances of the Address Common Element which reference the same physical address.
      </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="Type" use="required" type="sif:AUCodeSetsAddressTypeType">
      <xs:annotation>
        <xs:documentation>Code that defines the location of the address. Note: A subset of specific valid values for each instance in a data object may be listed in that object.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="Role" use="required" type="sif:AUCodeSetsAddressRoleType">
      <xs:annotation>
        <xs:documentation>A facet of Address</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="Address" type="sif:AddressType" />

  <xs:complexType name="AddressListType">
    <xs:annotation>
      <xs:documentation>A list of Address elements.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Address" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:complexContent>
            <xs:extension base="sif:AddressType">
              <xs:attribute name="SIF_Action" use="optional">
                <xs:annotation>
                  <xs:documentation>
        In a Change event, this flag can be used to indicate an element has been deleted from the parent list container.  At a minimum the key for the list must also be present.
      </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="Delete" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="AddressList" type="sif:AddressListType">
    <xs:unique name="AddressListKey2">
      <xs:selector xpath="./sif:Address" />
      <xs:field xpath="@Type" />
      <xs:field xpath="@Role" />
    </xs:unique>
  </xs:element>

  <xs:complexType name="EmailListType">
    <xs:annotation>
      <xs:documentation>A list of e-mail addresses associated with an individual or organization.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Email" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="sif:EmailType">
              <xs:attribute name="SIF_Action" use="optional">
                <xs:annotation>
                  <xs:documentation>
        In a Change event, this flag can be used to indicate an element has been deleted from the parent list container.  At a minimum the key for the list must also be present.
      </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="Delete" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="EmailList" type="sif:EmailListType">
    <xs:unique name="EmailListKey4">
      <xs:selector xpath="./sif:Email" />
      <xs:field xpath="@Type" />
    </xs:unique>
  </xs:element>

  <xs:complexType name="EmailType">
    <xs:annotation>
      <xs:documentation>
        This element represents an e-mail address of one of a number of types and occurs in objects such as
        StudentPersonal, StaffPersonal, StudentContactPersonal, etc.
      </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="xs:normalizedString">
        <xs:attribute name="Type" use="required" type="sif:AUCodeSetsEmailTypeType">
          <xs:annotation>
            <xs:documentation>This attribute specifies the type of e-mail address.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:element name="Email" type="sif:EmailType" />

  <xs:complexType name="PhoneNumberListType">
    <xs:annotation>
      <xs:documentation>Lists phone numbers associated with an entity.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="PhoneNumber" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:complexContent>
            <xs:extension base="sif:PhoneNumberType">
              <xs:attribute name="SIF_Action" use="optional">
                <xs:annotation>
                  <xs:documentation>
        In a Change event, this flag can be used to indicate an element has been deleted from the parent list container.  At a minimum the key for the list must also be present.
      </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="Delete" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="PhoneNumberList" type="sif:PhoneNumberListType">
    <xs:unique name="PhoneNumberListKey4">
      <xs:selector xpath="./sif:PhoneNumber" />
      <xs:field xpath="@Type" />
    </xs:unique>
  </xs:element>

  <xs:complexType name="PhoneNumberType">
    <xs:annotation>
      <xs:documentation>This element represents a phone number and occurs within objects such as StudentPersonal, StaffPersonal, etc.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Number" minOccurs="0" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Phone number.  Free-form, but typical Australian formats include:</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Extension" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Phone number extension.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ListedStatus" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
        <xs:annotation>
          <xs:documentation>Indicates whether or not the phone number is available to the public.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="Type" use="required" type="sif:AUCodeSetsTelephoneNumberTypeType">
      <xs:annotation>
        <xs:documentation>Code that specifies what type of phone number this is.  Note: A subset of valid values may be specified in data objects.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="PhoneNumber" type="sif:PhoneNumberType" />

  <xs:simpleType name="CountryType">
    <xs:annotation>
      <xs:documentation>A country code.</xs:documentation>
    </xs:annotation>
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="sif:AUCodeSetsStandardAustralianClassificationOfCountriesSACCType" />
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>

  <xs:element name="Country" type="sif:CountryType" />

  <xs:complexType name="GridLocationType">
    <xs:annotation>
      <xs:documentation>
        This element contains a map location. The GridLocation element is utilized within the Address element.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Latitude" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="xs:decimal">
            <xs:annotation>
              <xs:documentation>Latitude in decimal degrees.</xs:documentation>
            </xs:annotation>
            <xs:minInclusive value="-90" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:maxInclusive value="90" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="Longitude" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="xs:decimal">
            <xs:annotation>
              <xs:documentation>Longitude in decimal degrees.</xs:documentation>
            </xs:annotation>
            <xs:minInclusive value="-180" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:maxInclusive value="180" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="GridLocation" type="sif:GridLocationType" />

  <xs:simpleType name="OperationalStatusType">
    <xs:annotation>
      <xs:documentation>Operational condition of an institution.</xs:documentation>
    </xs:annotation>
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="sif:AUCodeSetsOperationalStatusType" />
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>

  <xs:element name="OperationalStatus" type="sif:OperationalStatusType" />

  <xs:simpleType name="StateProvinceType">
    <xs:annotation>
      <xs:documentation>A state or province code. Note: When dealing with countries other than Australia, state/province codes/values other than those referenced here can be used.</xs:documentation>
    </xs:annotation>
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="sif:AUCodeSetsStateTerritoryCodeType" />
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:token" />
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>

  <xs:element name="StateProvince" type="sif:StateProvinceType" />

  <xs:simpleType name="SchoolYearType">
    <xs:restriction base="xs:gYear">
      <xs:annotation>
        <xs:documentation>School year for which the information is applicable, expressed as the four-digit year in which the school year ends (e.g., "2009").</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="SchoolYear" type="sif:SchoolYearType" />

  <xs:complexType name="ElectronicIdListType">
    <xs:annotation>
      <xs:documentation>A list of electronic identifiers associated with an entity.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:ElectronicId" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ElectronicIdList" type="sif:ElectronicIdListType" />

  <xs:complexType name="ElectronicIdType">
    <xs:annotation>
      <xs:documentation>
        Common element used to specify entity identifiers that are read by electronic equipment. 
      </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="xs:normalizedString">
        <xs:attribute name="Type" use="required" type="sif:AUCodeSetsElectronicIdTypeType">
          <xs:annotation>
            <xs:documentation>Electronic ID type.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:element name="ElectronicId" type="sif:ElectronicIdType" />

  <xs:complexType name="OtherNamesType">
    <xs:annotation>
      <xs:documentation>Previous, alternate or other names or aliases associated with a person.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Name" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:annotation>
            <xs:documentation>
        Name of the person.  Note: Type value of LGL may not occur here.
      </xs:documentation>
          </xs:annotation>
          <xs:complexContent>
            <xs:extension base="sif:OtherNameType">
              <xs:attribute name="SIF_Action" use="optional">
                <xs:annotation>
                  <xs:documentation>
        In a Change event, this flag can be used to indicate an element has been deleted from the parent list container.
        At a minimum the key for the list must also be present.
      </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="Delete" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="OtherNames" type="sif:OtherNamesType">
    <xs:unique name="OtherNamesKey2">
      <xs:selector xpath="./sif:Name" />
      <xs:field xpath="@Type" />
    </xs:unique>
  </xs:element>

  <xs:complexType name="DemographicsType">
    <xs:annotation>
      <xs:documentation>
        Demographics information about the student, contact, staff member, etc. 
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="IndigenousStatus" minOccurs="0" nillable="true" type="sif:AUCodeSetsIndigenousStatusType">
        <xs:annotation>
          <xs:documentation>Whether or not the student identifies themselves as being of Aboriginal and/or Torres Strait Islander descent.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Sex" minOccurs="0" nillable="true" type="sif:AUCodeSetsSexCodeType">
        <xs:annotation>
          <xs:documentation>'Sex' is the distinction 'male' and 'female', as reported by the person</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="BirthDate" minOccurs="0" nillable="true" type="sif:BirthDateType">
        <xs:annotation>
          <xs:documentation>The person's date of birth.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="BirthDateVerification" minOccurs="0" nillable="true" type="sif:AUCodeSetsBirthdateVerificationType">
        <xs:annotation>
          <xs:documentation>Means by which the person's birth date was validated.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PlaceOfBirth" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The person's place of birth—like village, town, city etc.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StateOfBirth" minOccurs="0" nillable="true" type="sif:StateProvinceType">
        <xs:annotation>
          <xs:documentation>The person's state of birth.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CountryOfBirth" minOccurs="0" nillable="true" type="sif:CountryType">
        <xs:annotation>
          <xs:documentation>The person's country of birth.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CountriesOfCitizenship" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="CountryOfCitizenship" minOccurs="0" maxOccurs="unbounded" type="sif:CountryType">
              <xs:annotation>
                <xs:documentation>A person's country of citizenship.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="CountriesOfResidency" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="CountryOfResidency" minOccurs="0" maxOccurs="unbounded" type="sif:CountryType">
              <xs:annotation>
                <xs:documentation>A person's country of residence.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="CountryArrivalDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date the person first arrived in the country.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AustralianCitizenshipStatus" minOccurs="0" nillable="true" type="sif:AUCodeSetsAustralianCitizenshipStatusType">
        <xs:annotation>
          <xs:documentation>The person's citizenship status.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EnglishProficiency" minOccurs="0" nillable="true" type="sif:EnglishProficiencyType">
        <xs:annotation>
          <xs:documentation>Person's proficiency in English.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LanguageList" minOccurs="0" nillable="true" type="sif:LanguageListType">
        <xs:annotation>
          <xs:documentation>List of languages an individual uses to communicate.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DwellingArrangement" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Code" minOccurs="0" type="sif:AUCodeSetsDwellingArrangementType">
              <xs:annotation>
                <xs:documentation>Code representing the setting/environment in which the person resides</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Religion" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Code" minOccurs="0" type="sif:AUCodeSetsAustralianStandardClassificationOfReligiousGroupsASCRGType">
              <xs:annotation>
                <xs:documentation>Religion Code</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="ReligiousEventList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="ReligiousEvent" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Type" minOccurs="0" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>Religious Event - Currently Free Text</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="Date" minOccurs="0" type="xs:date">
                    <xs:annotation>
                      <xs:documentation>Date of Religious Event</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="ReligiousRegion" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Belong to Religious Region - Currently Free Text.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PermanentResident" minOccurs="0" nillable="true" type="sif:AUCodeSetsPermanentResidentStatusType">
        <xs:annotation>
          <xs:documentation>Australian Residency Status (Mandatory for Student)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="VisaSubClass" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>Visa Sub-Class - Can be free text - not necessary to validate</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:union>
            <xs:simpleType>
              <xs:restriction base="sif:AUCodeSetsVisaSubClassType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="xs:string" />
            </xs:simpleType>
          </xs:union>
        </xs:simpleType>
      </xs:element>
      <xs:element name="VisaStatisticalCode" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Visa Statistical Code - Can be free text - not necessary to validate</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="VisaExpiryDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Expiry Date of Visa if one exists</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ImmunisationCertificateStatus" minOccurs="0" nillable="true" type="sif:AUCodeSetsImmunisationCertificateStatusType">
        <xs:annotation>
          <xs:documentation>Status of Immunisation Certificate</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CulturalBackground" minOccurs="0" nillable="true" type="sif:AUCodeSetsAustralianStandardClassificationOfCulturalAndEthnicGroupsASCCEGType">
        <xs:annotation>
          <xs:documentation>Used to indicate cultural background. </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="MaritalStatus" minOccurs="0" nillable="true" type="sif:AUCodeSetsMaritalStatusAIHWType">
        <xs:annotation>
          <xs:documentation>The person's marital status.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="Demographics" type="sif:DemographicsType" />

  <xs:complexType name="EnglishProficiencyType">
    <xs:sequence>
      <xs:element name="Code" minOccurs="0" type="sif:AUCodeSetsEnglishProficiencyType">
        <xs:annotation>
          <xs:documentation>Person's proficiency in English.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="EnglishProficiency" type="sif:EnglishProficiencyType" />

  <xs:complexType name="LanguageListType">
    <xs:sequence>
      <xs:element name="Language" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Code" minOccurs="0" type="sif:AUCodeSetsAustralianStandardClassificationOfLanguagesASCLType">
              <xs:annotation>
                <xs:documentation>The code representing the specific language that an individual uses to communicate. </xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
            <xs:element name="LanguageType" minOccurs="0" nillable="true" type="sif:AUCodeSetsLanguageTypeType">
              <xs:annotation>
                <xs:documentation>An indication of the function and context in which an individual uses a language to communicate.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="Dialect" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Specific dialect of a person's language.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="LanguageList" type="sif:LanguageListType" />

  <xs:simpleType name="BirthDateType">
    <xs:restriction base="xs:date">
      <xs:annotation>
        <xs:documentation>A person's date of birth.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="BirthDate" type="sif:BirthDateType" />

  <xs:simpleType name="ProjectedGraduationYearType">
    <xs:restriction base="xs:gYear">
      <xs:annotation>
        <xs:documentation>Currently projected graduation year (CCYY).</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="ProjectedGraduationYear" type="sif:ProjectedGraduationYearType" />

  <xs:simpleType name="OnTimeGraduationYearType">
    <xs:restriction base="xs:gYear">
      <xs:annotation>
        <xs:documentation>First projected graduation year, usually determined when student is accepted into 9th grade (CCYY).</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="OnTimeGraduationYear" type="sif:OnTimeGraduationYearType" />

  <xs:complexType name="RelationshipType">
    <xs:annotation>
      <xs:documentation>Code that defines the relationship of one person to another.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Code" minOccurs="0" type="sif:AUCodeSetsRelationshipToStudentType">
        <xs:annotation>
          <xs:documentation>Code representing the relationship.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="Relationship" type="sif:RelationshipType" />

  <xs:simpleType name="EducationalLevelType">
    <xs:restriction base="sif:AUCodeSetsSchoolEducationLevelTypeType">
      <xs:annotation>
        <xs:documentation>A code representing the highest level of education completed by a person.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="EducationalLevel" type="sif:EducationalLevelType" />

  <xs:simpleType name="GraduationDateType">
    <xs:restriction base="sif:PartialDateType">
      <xs:annotation>
        <xs:documentation>Date student officially graduated from secondary education.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="GraduationDate" type="sif:GraduationDateType" />

  <xs:complexType name="NameType">
    <xs:annotation>
      <xs:documentation>
      The Name element, which could belong to a student, staff member, contact, etc. This element or a form with a
      subset of Type values occurs within objects
      such as StudentPersonal, StudentContactPersonal, StaffPersonal, etc.
    </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="sif:BaseNameType">
        <xs:attribute name="Type" use="required" type="sif:AUCodeSetsNameUsageTypeType">
          <xs:annotation>
            <xs:documentation>
        Code that specifies what type of name this is.  If unsure, use LGL.
      </xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:element name="Name" type="sif:NameType" />

  <xs:simpleType name="HomeroomNumberType">
    <xs:restriction base="xs:normalizedString">
      <xs:annotation>
        <xs:documentation>
        Common element used to specify the locally-defined number or identifier for a homeroom. It is used in objects such
        as RoomInfo and StudentSnapshot.
      </xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="HomeroomNumber" type="sif:HomeroomNumberType" />

  <xs:complexType name="TimeElementType">
    <xs:annotation>
      <xs:documentation>A common metadata element designed to contain time data, both self-defined and by type.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Type" minOccurs="0" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>
        This element is designed to contain the time period attached to an object.
        Very long periods (school year, quarter, etc.) and very small periods (second, millisecond, etc.) can be defined.
        This element provides a scoping description of the time metadata enclosed.
      </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Code" minOccurs="0" type="xs:token">
        <xs:annotation>
          <xs:documentation>
      This element provides a place for the application to send structured data (code values, unique identifier, timestamps).
      This code value can, depending upon the use case agreement between agents, be used to qualify the data in the </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Name" minOccurs="0" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>
      Contains a human-readable description of the value in </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Value" minOccurs="0" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Contains the human-readable value.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StartDateTime" minOccurs="0" nillable="true" type="xs:dateTime" />
      <xs:element name="EndDateTime" minOccurs="0" nillable="true" type="xs:dateTime" />
      <xs:element name="SpanGaps" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SpanGap" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Type" minOccurs="0" type="xs:normalizedString" />
                  <xs:element name="Code" minOccurs="0" type="xs:token" />
                  <xs:element name="Name" minOccurs="0" type="xs:normalizedString" />
                  <xs:element name="Value" minOccurs="0" type="xs:normalizedString" />
                  <xs:element name="StartDateTime" minOccurs="0" nillable="true" type="xs:dateTime" />
                  <xs:element name="EndDateTime" minOccurs="0" nillable="true" type="xs:dateTime" />
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="IsCurrent" minOccurs="0" type="xs:boolean">
        <xs:annotation>
          <xs:documentation>
      This element allows for the system to tag an object as being explicitly current.
      Although the baseline assumption in SIF is that objects are always current (default value is typically </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="TimeElement" type="sif:TimeElementType" />

  <xs:complexType name="LifeCycleType">
    <xs:annotation>
      <xs:documentation>
        This common metadata element describes the life cycle of the object it represents, based on the IEEE LOM LifeCycle element [LOM].
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Created" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="DateTime" minOccurs="0" type="xs:dateTime" />
            <xs:element name="Creators" minOccurs="0" nillable="true">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Creator" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="Name" minOccurs="0" type="xs:normalizedString">
                          <xs:annotation>
                            <xs:documentation>
      Human-readable name of the data's creator. If the object contains system-generated data,
      the name should identify the creating service or application.
    </xs:documentation>
                          </xs:annotation>
                        </xs:element>
                        <xs:element name="ID" minOccurs="0" type="xs:normalizedString">
                          <xs:annotation>
                            <xs:documentation>Unique identifier of the creator.  An email address or URI could be used here.</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="ModificationHistory" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Modified" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="By" minOccurs="0" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>Identifier of the system or person that modified the data.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="DateTime" minOccurs="0" type="xs:dateTime">
                    <xs:annotation>
                      <xs:documentation>The date/time the modification occurred.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="Description" minOccurs="0" nillable="true" type="xs:string">
                    <xs:annotation>
                      <xs:documentation>Human readable description of the data modifications.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="TimeElements" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="sif:TimeElement" minOccurs="0" maxOccurs="unbounded" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="LifeCycle" type="sif:LifeCycleType" />

  <xs:complexType name="OtherCodeListType">
    <xs:annotation>
      <xs:documentation>
        List of other codes or strings that crosswalk to or serve as translations of the Code element paired with this common element.  If Code changes
        and OtherCodes are supported, both Code and all associated OtherCode elements must be present.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="OtherCode" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
        A state/province code, local code, other code or a text string that crosswalks to or serves as a translation of an associated Code element.
      </xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:token">
              <xs:attribute name="Codeset" use="required">
                <xs:annotation>
                  <xs:documentation>
        Describes the OtherCode element content as either a state/province code, a local code, other code, or text string.
      </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="StateProvince" />
                    <xs:enumeration value="Local" />
                    <xs:enumeration value="Other" />
                    <xs:enumeration value="Text" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="OtherCodeList" type="sif:OtherCodeListType" />

  <xs:complexType name="ProgramStatusType">
    <xs:sequence>
      <xs:element name="Code" minOccurs="0">
        <xs:annotation>
          <xs:documentation>The current status of the student's program participation.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="S001">
              <xs:annotation>
                <xs:documentation>Referred</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="S002">
              <xs:annotation>
                <xs:documentation>Eligible</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="S003">
              <xs:annotation>
                <xs:documentation>Not Eligible</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="S004">
              <xs:annotation>
                <xs:documentation>Active</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="S005">
              <xs:annotation>
                <xs:documentation>Exited</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="S006">
              <xs:annotation>
                <xs:documentation>Withdrew/refused</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="9999">
              <xs:annotation>
                <xs:documentation>Other</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ProgramStatus" type="sif:ProgramStatusType" />

  <xs:complexType name="SubjectAreaListType">
    <xs:annotation>
      <xs:documentation>A list of subject areas.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:SubjectArea" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SubjectAreaList" type="sif:SubjectAreaListType" />

  <xs:complexType name="SubjectAreaType">
    <xs:annotation>
      <xs:documentation>Subject matter.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Code" minOccurs="0" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The subject area details</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SubjectArea" type="sif:SubjectAreaType" />

  <xs:complexType name="ACStrandSubjectAreaType">
    <xs:annotation>
      <xs:documentation>Subject matter.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="ACStrand" minOccurs="0" type="sif:AUCodeSetsACStrandType">
        <xs:annotation>
          <xs:documentation>Subject matter.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SubjectArea" minOccurs="0" nillable="true" type="sif:SubjectAreaType">
        <xs:annotation>
          <xs:documentation>Subject matter.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ACStrandSubjectArea" type="sif:ACStrandSubjectAreaType" />

  <xs:complexType name="EducationFilterType">
    <xs:sequence>
      <xs:element name="LearningStandardItems" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="LearningStandardItemRefId" minOccurs="0" maxOccurs="unbounded" type="sif:IdRefType" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="EducationFilter" type="sif:EducationFilterType" />

  <xs:complexType name="SIF_MetadataType">
    <xs:annotation>
      <xs:documentation>A commonly defined container for metadata elements defined within SIF.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="TimeElements" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="sif:TimeElement" minOccurs="0" maxOccurs="unbounded" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="LifeCycle" minOccurs="0" nillable="true" type="sif:LifeCycleType" />
      <xs:element name="EducationFilter" minOccurs="0" nillable="true" type="sif:EducationFilterType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Metadata" type="sif:SIF_MetadataType" />

  <xs:complexType name="SIF_ExtendedElementsType">
    <xs:annotation>
      <xs:documentation>Allows an agent to include data not yet defined within a SIF data object as name/value pairs.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SIF_ExtendedElement" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:annotation>
            <xs:documentation>A name/value pair, the name being contained in the Name attribute, the value being the element content.</xs:documentation>
          </xs:annotation>
          <xs:complexContent>
            <xs:extension base="sif:ExtendedContentType">
              <xs:attribute name="Name" use="required" type="xs:normalizedString">
                <xs:annotation>
                  <xs:documentation>The name of the extended element. As it is possible that names for extended elements may collide from agent to agent, it is recommended that the names of extended elements be configurable in an agent, or that agents use URIs for the names of extended elements.</xs:documentation>
                </xs:annotation>
              </xs:attribute>
              <!--<xs:attribute ref="xsi:type" use="optional" />-->
              <xs:attribute name="SIF_Action" use="optional">
                <xs:annotation>
                  <xs:documentation>
        In a Change event, this flag can be used to indicate an element has been deleted from the parent list container.  At a minimum the key for the list must also be present.
      </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="Delete" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_ExtendedElements" type="sif:SIF_ExtendedElementsType">
    <xs:unique name="SIF_ExtendedElementsKey1">
      <xs:selector xpath="./sif:SIF_ExtendedElement" />
      <xs:field xpath="@Name" />
    </xs:unique>
  </xs:element>

</xs:schema>