<!--SIF Implementation Specification UK 1.1-4 (September 18, 2009)-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" targetNamespace="http://www.sifinfo.org/uk/infrastructure/2.x" xmlns:sif="http://www.sifinfo.org/uk/infrastructure/2.x" elementFormDefault="qualified">
  <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="imports/xml/xml.xsd" />
  <xs:simpleType name="ObjectNameType">
    <xs:restriction>
      <xs:simpleType>
        <xs:restriction base="xs:NCName">
          <xs:annotation>
            <xs:documentation>An unenumerated SIF object name.</xs:documentation>
          </xs:annotation>
          <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
        </xs:restriction>
      </xs:simpleType>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="MonetaryAmountType">
    <xs:annotation>
      <xs:documentation>A monetary amount.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="xs:decimal">
        <xs:attribute name="Currency" use="optional" type="sif:ISO4217CurrencyNamesAndCodeElementsType">
          <xs:annotation>
            <xs:documentation>Currency code.  Where omitted, defaults to implementation-defined local currency, typically </xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="URIOrBinaryType">
    <xs:annotation>
      <xs:documentation>Allows for a URL or a Base-64 encoding.</xs:documentation>
    </xs:annotation>
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:anyURI" />
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:base64Binary" />
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>

  <xs:simpleType name="GUIDType">
    <xs:restriction>
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:annotation>
            <xs:documentation>SIF format for a GUID.</xs:documentation>
          </xs:annotation>
          <xs:pattern value="[0-9A-F]{32}" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
        </xs:restriction>
      </xs:simpleType>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="MsgIdType">
    <xs:restriction base="sif:GUIDType">
      <xs:annotation>
        <xs:documentation>A message identifier.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="RefIdType">
    <xs:restriction base="sif:GUIDType">
      <xs:annotation>
        <xs:documentation>An object or element identifier.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="IdRefType">
    <xs:restriction base="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>A reference to a RefId.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="VersionType">
    <xs:restriction>
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:annotation>
            <xs:documentation>A SIF version number.</xs:documentation>
          </xs:annotation>
          <xs:maxLength value="12" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          <xs:pattern value="[0-9]+[.][0-9]+(r[0-9]+)?" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
        </xs:restriction>
      </xs:simpleType>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="VersionWithWildcardsType">
    <xs:restriction>
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:annotation>
            <xs:documentation>A SIF version number, with wildcards for matching multiple versions.</xs:documentation>
          </xs:annotation>
          <xs:maxLength value="12" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          <xs:pattern value="\*|([0-9]+[.]\*)|([0-9]+[.][0-9]+r\*)|([0-9]+[.][0-9]+(r[0-9]+)?)" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
        </xs:restriction>
      </xs:simpleType>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="DefinedProtocolsType">
    <xs:restriction base="xs:token">
      <xs:annotation>
        <xs:documentation>The transport protocols defined in SIF.</xs:documentation>
      </xs:annotation>
      <xs:enumeration value="HTTPS" />
      <xs:enumeration value="HTTP" />
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="ExtendedContentType">
    <xs:complexContent mixed="true" xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:restriction base="xs:anyType">
        <xs:sequence>
          <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SelectedContentType">
    <xs:complexContent mixed="true" xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:restriction base="xs:anyType">
        <xs:sequence>
          <xs:any processContents="skip" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SIF_LogEntryExtendedContentType">
    <xs:complexContent mixed="true" xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:restriction base="xs:anyType">
        <xs:sequence>
          <xs:any processContents="skip" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:simpleType name="SIF_ProvideObjectNamesType">
    <xs:restriction base="xs:token">
      <xs:annotation>
        <xs:documentation>The SIF object names that can be specified in a </xs:documentation>
      </xs:annotation>
      <xs:enumeration value="AssessmentLearnerSet" />
      <xs:enumeration value="AssessmentResponseComponent" />
      <xs:enumeration value="AssessmentResponseComponentGroup" />
      <xs:enumeration value="AssessmentResultComponent" />
      <xs:enumeration value="AssessmentResultComponentGroup" />
      <xs:enumeration value="AssessmentResultGradeSet" />
      <xs:enumeration value="AssessmentSession" />
      <xs:enumeration value="ContactPersonal" />
      <xs:enumeration value="Identity" />
      <xs:enumeration value="LAInfo" />
      <xs:enumeration value="LearnerAssessmentResponseSet" />
      <xs:enumeration value="LearnerAssessmentResult" />
      <xs:enumeration value="LearnerAttendance" />
      <xs:enumeration value="LearnerAttendanceSummary" />
      <xs:enumeration value="LearnerContact" />
      <xs:enumeration value="LearnerExclusion" />
      <xs:enumeration value="LearnerGroupEnrolment" />
      <xs:enumeration value="LearnerPersonal" />
      <xs:enumeration value="LearnerSchoolEnrolment" />
      <xs:enumeration value="LearnerSpecialNeeds" />
      <xs:enumeration value="PersonPicture" />
      <xs:enumeration value="SchoolGroup" />
      <xs:enumeration value="SchoolGroupType" />
      <xs:enumeration value="SchoolInfo" />
      <xs:enumeration value="SIF_LogEntry" />
      <xs:enumeration value="TermInfo" />
      <xs:enumeration value="WorkforcePersonal" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="SIF_SubscribeObjectNamesType">
    <xs:restriction base="xs:token">
      <xs:annotation>
        <xs:documentation>The SIF object names that can be specified in a </xs:documentation>
      </xs:annotation>
      <xs:enumeration value="AssessmentLearnerSet" />
      <xs:enumeration value="AssessmentSession" />
      <xs:enumeration value="ContactPersonal" />
      <xs:enumeration value="Identity" />
      <xs:enumeration value="LAInfo" />
      <xs:enumeration value="LearnerAssessmentResponseSet" />
      <xs:enumeration value="LearnerAssessmentResult" />
      <xs:enumeration value="LearnerAttendance" />
      <xs:enumeration value="LearnerAttendanceSummary" />
      <xs:enumeration value="LearnerContact" />
      <xs:enumeration value="LearnerExclusion" />
      <xs:enumeration value="LearnerGroupEnrolment" />
      <xs:enumeration value="LearnerPersonal" />
      <xs:enumeration value="LearnerSchoolEnrolment" />
      <xs:enumeration value="LearnerSpecialNeeds" />
      <xs:enumeration value="PersonPicture" />
      <xs:enumeration value="SchoolGroup" />
      <xs:enumeration value="SchoolGroupType" />
      <xs:enumeration value="SchoolInfo" />
      <xs:enumeration value="SIF_AgentACL" />
      <xs:enumeration value="SIF_LogEntry" />
      <xs:enumeration value="SIF_ZoneStatus" />
      <xs:enumeration value="TermInfo" />
      <xs:enumeration value="WorkforcePersonal" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="SIF_RequestObjectNamesType">
    <xs:restriction base="xs:token">
      <xs:annotation>
        <xs:documentation>The SIF object names that can be specified in a </xs:documentation>
      </xs:annotation>
      <xs:enumeration value="AssessmentLearnerSet" />
      <xs:enumeration value="AssessmentResponseComponent" />
      <xs:enumeration value="AssessmentResponseComponentGroup" />
      <xs:enumeration value="AssessmentResultComponent" />
      <xs:enumeration value="AssessmentResultComponentGroup" />
      <xs:enumeration value="AssessmentResultGradeSet" />
      <xs:enumeration value="AssessmentSession" />
      <xs:enumeration value="ContactPersonal" />
      <xs:enumeration value="Identity" />
      <xs:enumeration value="LAInfo" />
      <xs:enumeration value="LearnerAssessmentResponseSet" />
      <xs:enumeration value="LearnerAssessmentResult" />
      <xs:enumeration value="LearnerAttendance" />
      <xs:enumeration value="LearnerAttendanceSummary" />
      <xs:enumeration value="LearnerContact" />
      <xs:enumeration value="LearnerExclusion" />
      <xs:enumeration value="LearnerGroupEnrolment" />
      <xs:enumeration value="LearnerPersonal" />
      <xs:enumeration value="LearnerSchoolEnrolment" />
      <xs:enumeration value="LearnerSpecialNeeds" />
      <xs:enumeration value="PersonPicture" />
      <xs:enumeration value="SchoolGroup" />
      <xs:enumeration value="SchoolGroupType" />
      <xs:enumeration value="SchoolInfo" />
      <xs:enumeration value="SIF_AgentACL" />
      <xs:enumeration value="SIF_LogEntry" />
      <xs:enumeration value="SIF_ZoneStatus" />
      <xs:enumeration value="TermInfo" />
      <xs:enumeration value="WorkforcePersonal" />
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="SIF_ResponseObjectType">
    <xs:annotation>
      <xs:documentation>The SIF objects that can be included in a </xs:documentation>
    </xs:annotation>
    <xs:choice>
      <xs:element ref="sif:AssessmentLearnerSet" />
      <xs:element ref="sif:AssessmentResponseComponent" />
      <xs:element ref="sif:AssessmentResponseComponentGroup" />
      <xs:element ref="sif:AssessmentResultComponent" />
      <xs:element ref="sif:AssessmentResultComponentGroup" />
      <xs:element ref="sif:AssessmentResultGradeSet" />
      <xs:element ref="sif:AssessmentSession" />
      <xs:element ref="sif:ContactPersonal" />
      <xs:element ref="sif:Identity" />
      <xs:element ref="sif:LAInfo" />
      <xs:element ref="sif:LearnerAssessmentResponseSet" />
      <xs:element ref="sif:LearnerAssessmentResult" />
      <xs:element ref="sif:LearnerAttendance" />
      <xs:element ref="sif:LearnerAttendanceSummary" />
      <xs:element ref="sif:LearnerContact" />
      <xs:element ref="sif:LearnerExclusion" />
      <xs:element ref="sif:LearnerGroupEnrolment" />
      <xs:element ref="sif:LearnerPersonal" />
      <xs:element ref="sif:LearnerSchoolEnrolment" />
      <xs:element ref="sif:LearnerSpecialNeeds" />
      <xs:element ref="sif:PersonPicture" />
      <xs:element ref="sif:SchoolGroup" />
      <xs:element ref="sif:SchoolGroupType" />
      <xs:element ref="sif:SchoolInfo" />
      <xs:element ref="sif:SIF_AgentACL" />
      <xs:element ref="sif:SIF_LogEntry" />
      <xs:element ref="sif:SIF_ZoneStatus" />
      <xs:element ref="sif:TermInfo" />
      <xs:element ref="sif:WorkforcePersonal" />
    </xs:choice>
  </xs:complexType>

  <xs:complexType name="SIF_ResponseObjectsType">
    <xs:choice minOccurs="0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:sequence>
        <xs:element ref="sif:AssessmentLearnerSet" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:AssessmentResponseComponent" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:AssessmentResponseComponentGroup" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:AssessmentResultComponent" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:AssessmentResultComponentGroup" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:AssessmentResultGradeSet" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:AssessmentSession" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:ContactPersonal" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:Identity" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:LAInfo" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:LearnerAssessmentResponseSet" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:LearnerAssessmentResult" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:LearnerAttendance" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:LearnerAttendanceSummary" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:LearnerContact" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:LearnerExclusion" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:LearnerGroupEnrolment" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:LearnerPersonal" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:LearnerSchoolEnrolment" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:LearnerSpecialNeeds" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:PersonPicture" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:SchoolGroup" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:SchoolGroupType" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:SchoolInfo" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:SIF_AgentACL" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:SIF_LogEntry" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:SIF_ZoneStatus" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:TermInfo" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:WorkforcePersonal" maxOccurs="unbounded" />
      </xs:sequence>
    </xs:choice>
  </xs:complexType>

  <xs:complexType name="SIF_EventObjectType">
    <xs:annotation>
      <xs:documentation>The SIF objects that can be included in a </xs:documentation>
    </xs:annotation>
    <xs:choice>
      <xs:element ref="sif:AssessmentLearnerSet" />
      <xs:element ref="sif:AssessmentSession" />
      <xs:element ref="sif:ContactPersonal" />
      <xs:element ref="sif:Identity" />
      <xs:element ref="sif:LAInfo" />
      <xs:element ref="sif:LearnerAssessmentResponseSet" />
      <xs:element ref="sif:LearnerAssessmentResult" />
      <xs:element ref="sif:LearnerAttendance" />
      <xs:element ref="sif:LearnerAttendanceSummary" />
      <xs:element ref="sif:LearnerContact" />
      <xs:element ref="sif:LearnerExclusion" />
      <xs:element ref="sif:LearnerGroupEnrolment" />
      <xs:element ref="sif:LearnerPersonal" />
      <xs:element ref="sif:LearnerSchoolEnrolment" />
      <xs:element ref="sif:LearnerSpecialNeeds" />
      <xs:element ref="sif:PersonPicture" />
      <xs:element ref="sif:SchoolGroup" />
      <xs:element ref="sif:SchoolGroupType" />
      <xs:element ref="sif:SchoolInfo" />
      <xs:element ref="sif:SIF_AgentACL" />
      <xs:element ref="sif:SIF_LogEntry" />
      <xs:element ref="sif:SIF_ZoneStatus" />
      <xs:element ref="sif:TermInfo" />
      <xs:element ref="sif:WorkforcePersonal" />
    </xs:choice>
  </xs:complexType>

  <xs:complexType name="SIF_ExampleObjectType">
    <xs:annotation>
      <xs:documentation>The SIF objects that can be included in </xs:documentation>
    </xs:annotation>
  </xs:complexType>

</xs:schema>