<!--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" />

  <!--Infrastructure Common Elements-->


  <!--SIF_Message-->

  <xs:complexType name="SIF_MessageType">
    <xs:annotation>
      <xs:documentation>Contains one of the SIF message types.</xs:documentation>
    </xs:annotation>
    <xs:choice>
      <xs:element ref="sif:SIF_Ack" />
      <xs:element ref="sif:SIF_Event" />
      <xs:element ref="sif:SIF_Provide" />
      <xs:element ref="sif:SIF_Provision" />
      <xs:element ref="sif:SIF_Register" />
      <xs:element ref="sif:SIF_Request" />
      <xs:element ref="sif:SIF_Response" />
      <xs:element ref="sif:SIF_Subscribe" />
      <xs:element ref="sif:SIF_SystemControl" />
      <xs:element ref="sif:SIF_Unprovide" />
      <xs:element ref="sif:SIF_Unregister" />
      <xs:element ref="sif:SIF_Unsubscribe" />
    </xs:choice>
    <!--<xs:attribute name="xmlns" use="optional" type="xs:anyURI">
  <xs:annotation>
    <xs:documentation>
              The xmlns attribute specifies the XML namespace for SIF messages.
              For this version of the specification, the value of this attribute MUST be http://www.sifinfo.org/uk/infrastructure/2.x. This XML namespace value will remain the same until the next major release of SIF (3.0).
            </xs:documentation>
  </xs:annotation>
</xs:attribute>-->
    <xs:attribute name="Version" use="required" type="sif:VersionType">
      <xs:annotation>
        <xs:documentation>
              The version of the SIF Implementation Specification that defines this message's XML structure.
              For this version of the specification, the value of this attribute is 2.1.
              This attribute can be used by ZIS and agent implementations to choose schema files to
              validate the message's XML.
            </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="SIF_Message" type="sif:SIF_MessageType" />


  <!--SIF_Header-->

  <xs:complexType name="SIF_HeaderType">
    <xs:annotation>
      <xs:documentation>Header information associated with a message.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SIF_MsgId" type="sif:MsgIdType">
        <xs:annotation>
          <xs:documentation>SIF_MsgId is a globally unique message identifier from the Agent or ZIS that sends out the message.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Timestamp" type="xs:dateTime">
        <xs:annotation>
          <xs:documentation>Timestamp of when the message was sent.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Security" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_SecureChannel">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_AuthenticationLevel" />
                  <xs:element ref="sif:SIF_EncryptionLevel" />
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_SourceId">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:annotation>
              <xs:documentation>The SIF_SourceId is the ID of the originator of the message. Each source needs to have a zone unique case-sensitive identifier.</xs:documentation>
            </xs:annotation>
            <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SIF_DestinationId" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:annotation>
              <xs:documentation>This element represents the ID of the recipient of the message and may be present as follows:</xs:documentation>
            </xs:annotation>
            <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Header" type="sif:SIF_HeaderType" />


  <!--SIF_EncryptionLevel-->

  <xs:simpleType name="SIF_EncryptionLevelType">
    <xs:restriction base="xs:unsignedInt">
      <xs:annotation>
        <xs:documentation>The minimum level of encryption required by the message originator to be considered a secure channel upon message delivery to other agents.</xs:documentation>
      </xs:annotation>
      <xs:enumeration value="0">
        <xs:annotation>
          <xs:documentation>No encryption required</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1">
        <xs:annotation>
          <xs:documentation>Symmetric key length of at least 40 bits is to be used</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2">
        <xs:annotation>
          <xs:documentation>Symmetric key length of at least 56 bits is to be used</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3">
        <xs:annotation>
          <xs:documentation>Symmetric key length of at least 80 bits is to be used</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4">
        <xs:annotation>
          <xs:documentation>Symmetric key length of at least 128 bits is to be used</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="SIF_EncryptionLevel" type="sif:SIF_EncryptionLevelType" />


  <!--SIF_AuthenticationLevel-->

  <xs:simpleType name="SIF_AuthenticationLevelType">
    <xs:restriction base="xs:unsignedInt">
      <xs:annotation>
        <xs:documentation>The minimum level of authentication required by the message originator to be considered a secure channel upon message delivery to other agents.</xs:documentation>
      </xs:annotation>
      <xs:enumeration value="0">
        <xs:annotation>
          <xs:documentation>No authentication required and a valid certificate does not need to be presented.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1">
        <xs:annotation>
          <xs:documentation>A valid certificate must be presented.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2">
        <xs:annotation>
          <xs:documentation>
                A valid certificate from a trusted certificate
                authority must be presented.
              </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3">
        <xs:annotation>
          <xs:documentation>
                A valid certificate from a trusted certificate
                authority must be presented and the CN field of the certificate's
                Subject entry must match the host sending the certificate.
              </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="SIF_AuthenticationLevel" type="sif:SIF_AuthenticationLevelType" />


  <!--SIF_Contexts-->

  <xs:complexType name="SIF_ContextsType">
    <xs:annotation>
      <xs:documentation>
              A list of SIF contexts that applies to a message or operation.  Typically where used as an optional element,
              the omission of this element implies the SIF_Default context applies.
            </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:SIF_Context" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Contexts" type="sif:SIF_ContextsType" />


  <!--SIF_Context-->

  <xs:simpleType name="SIF_ContextType">
    <xs:restriction>
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:annotation>
            <xs:documentation>The name of a SIF Context that applies to a message or operation.</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:element name="SIF_Context" type="sif:SIF_ContextType" />


  <!--SIF_Protocol-->

  <xs:complexType name="SIF_ProtocolType">
    <xs:annotation>
      <xs:documentation>Contains protocol information regarding a ZIS or Agent.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SIF_URL" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="xs:anyURI">
            <xs:annotation>
              <xs:documentation>This element is required if the protocol is HTTPS or HTTP. 
            It contains the https or http URL for contacting the agent.</xs:documentation>
            </xs:annotation>
            <xs:maxLength value="256" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SIF_Property" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Name">
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:annotation>
                    <xs:documentation>
              Property name.
            </xs:documentation>
                  </xs:annotation>
                  <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
            <xs:element name="SIF_Value">
              <xs:simpleType>
                <xs:restriction base="xs:string">
                  <xs:annotation>
                    <xs:documentation>
              Property value.
            </xs:documentation>
                  </xs:annotation>
                  <xs:maxLength value="256" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="Type" use="required">
      <xs:annotation>
        <xs:documentation>The type of protocol to use (HTTPS, HTTP or an implementation-defined protocol).</xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:union>
          <xs:simpleType>
            <xs:restriction base="sif:DefinedProtocolsType" />
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token" />
          </xs:simpleType>
        </xs:union>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="Secure" use="required">
      <xs:annotation>
        <xs:documentation>Whether the protocol provides a secure channel.</xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="Yes" />
          <xs:enumeration value="No" />
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="SIF_Protocol" type="sif:SIF_ProtocolType" />


  <!--SIF_Status-->

  <xs:complexType name="SIF_StatusType">
    <xs:annotation>
      <xs:documentation>This element is used to signal a successful response.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SIF_Code" type="sif:InfrastructureStatusCodeType" />
      <xs:element name="SIF_Desc" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:annotation>
              <xs:documentation>
              An optional textual description/equivalent of SIF_Code.
            </xs:documentation>
            </xs:annotation>
            <xs:maxLength value="1024" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SIF_Data" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
              Optional element to hold data related to a successful operation.  This data is currently limited
              to a SIF_Message returned by the ZIS in response to a Pull-Mode Agent's SIF_GetMessage,
              SIF_AgentACL returned by the ZIS in response to SIF_Register and SIF_GetAgentACL,
              and SIF_ZoneStatus returned by the ZIS in response to SIF_GetZoneStatus.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:choice>
            <xs:element ref="sif:SIF_Message" />
            <xs:element name="SIF_AgentACL" type="sif:SIF_AgentACLInfrastructureType" />
            <xs:element name="SIF_ZoneStatus" type="sif:SIF_ZoneStatusInfrastructureType" />
          </xs:choice>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Status" type="sif:SIF_StatusType" />


  <!--SIF_Error-->

  <xs:complexType name="SIF_ErrorType">
    <xs:annotation>
      <xs:documentation>This element is used to signal an unsuccessful response.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SIF_Category" type="sif:InfrastructureErrorCategoryType" />
      <xs:element name="SIF_Code">
        <xs:annotation>
          <xs:documentation>
              See Error Codes.
            </xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:union>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureXMLValidationErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureEncryptionErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureAuthenticationErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureAccessAndPermissionErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureRegistrationErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureProvisionErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureSubscriptionErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureRequestAndResponseErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureEventReportingAndProcessingErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureTransportErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureSystemErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureGenericMessageHandlingErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="xs:token" />
            </xs:simpleType>
          </xs:union>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SIF_Desc">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:annotation>
              <xs:documentation>A simple, easy to understand, description of the error. The primary consumer of this message is the application user. Example: "Unable to open database."</xs:documentation>
            </xs:annotation>
            <xs:maxLength value="1024" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SIF_ExtendedDesc" minOccurs="0" type="xs:string">
        <xs:annotation>
          <xs:documentation>An optional error description that is more complete and technical in nature. It is to be used as a diagnostic message in trouble-shooting procedures. Example: "The 'Students' table is opened in exclusive mode by user 'ADM1' (dbm.cpp, line 300)."</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Error" type="sif:SIF_ErrorType" />


  <!--SIF_Query-->

  <xs:complexType name="SIF_QueryType">
    <xs:annotation>
      <xs:documentation>SIF's default query mechanism.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SIF_QueryObject">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Element" minOccurs="0" maxOccurs="unbounded" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Individual elements/attributes being requested of matching object.  See SIF_Element Syntax below. 
						If specified, only the elements/attributes requested are returned in the SIF_Response (with any parent elements/attributes); 
						otherwise, all elements supported by the provider's object are returned.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
          <xs:attribute name="ObjectName" use="required" type="sif:SIF_RequestObjectNamesType">
            <xs:annotation>
              <xs:documentation>The actual name of the object that is being queried for.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:complexType>
      </xs:element>
      <xs:choice minOccurs="0">
        <xs:element name="SIF_ConditionGroup">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="SIF_Conditions" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="SIF_Condition" maxOccurs="unbounded">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="SIF_Element" type="xs:normalizedString">
                            <xs:annotation>
                              <xs:documentation>This is the element/attribute being queried.  See below for syntax.</xs:documentation>
                            </xs:annotation>
                          </xs:element>
                          <xs:element name="SIF_Operator">
                            <xs:annotation>
                              <xs:documentation>The comparison operator for the condition.</xs:documentation>
                            </xs:annotation>
                            <xs:simpleType>
                              <xs:restriction base="xs:token">
                                <xs:enumeration value="EQ">
                                  <xs:annotation>
                                    <xs:documentation>Equals</xs:documentation>
                                  </xs:annotation>
                                </xs:enumeration>
                                <xs:enumeration value="LT">
                                  <xs:annotation>
                                    <xs:documentation>Less Than</xs:documentation>
                                  </xs:annotation>
                                </xs:enumeration>
                                <xs:enumeration value="GT">
                                  <xs:annotation>
                                    <xs:documentation>Greater Than</xs:documentation>
                                  </xs:annotation>
                                </xs:enumeration>
                                <xs:enumeration value="LE">
                                  <xs:annotation>
                                    <xs:documentation>Less Than Or Equals</xs:documentation>
                                  </xs:annotation>
                                </xs:enumeration>
                                <xs:enumeration value="GE">
                                  <xs:annotation>
                                    <xs:documentation>Greater Than Or Equals</xs:documentation>
                                  </xs:annotation>
                                </xs:enumeration>
                                <xs:enumeration value="NE">
                                  <xs:annotation>
                                    <xs:documentation>Not Equals</xs:documentation>
                                  </xs:annotation>
                                </xs:enumeration>
                              </xs:restriction>
                            </xs:simpleType>
                          </xs:element>
                          <xs:element name="SIF_Value" type="xs:string">
                            <xs:annotation>
                              <xs:documentation>SIF_Value is the data that is used to compare with the value of the element or attribute.</xs:documentation>
                            </xs:annotation>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="Type" use="required">
                    <xs:annotation>
                      <xs:documentation>
								The boolean operator for joining conditions (SIF_Condition elements) within this element.  Note that None should be used if there
								is only one SIF_Condition element.
							</xs:documentation>
                    </xs:annotation>
                    <xs:simpleType>
                      <xs:restriction base="xs:token">
                        <xs:enumeration value="And" />
                        <xs:enumeration value="Or" />
                        <xs:enumeration value="None" />
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:attribute>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="Type" use="required">
              <xs:annotation>
                <xs:documentation>
								The Boolean operator for joining conditions (SIF_Conditions elements) within this element.  Note that None should be used if there is only one
								SIF_Conditions element.
							</xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="And" />
                  <xs:enumeration value="Or" />
                  <xs:enumeration value="None" />
                </xs:restriction>
              </xs:simpleType>
            </xs:attribute>
          </xs:complexType>
        </xs:element>
        <xs:element name="SIF_Example" type="sif:SIF_ExampleObjectType">
          <xs:annotation>
            <xs:documentation>
							An example SIF object that serves as a template for matching objects.  There is an implied EQ operator
							for every element/attribute value present and an implied And group of all resulting conditions.  Currently
							this is an experimental feature and limited to use with select objects; wider use may be considered in future
							versions of this specification.
						</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Query" type="sif:SIF_QueryType" />


  <!--SIF_ExtendedQuery-->

  <xs:complexType name="SIF_ExtendedQueryType">
    <xs:annotation>
      <xs:documentation>SIF's default query mechanism for SIF_Request, SIF_Query, has several limitations that limit its usefulness when creating reporting applications
						that process data from a SIF zone.  SIF_Query is limited to matching only one object type per query, requiring applications to
						manually join together results as needed for reporting and general data processing.  SIF_ExtendedQuery is designed to allow for joins on
						object identifiers/RefIds and to allow retrieval of data in a row/column fashion similar to SQL.  Each returned column may contain hierarchical XML elements/objects.
						Providers and Responders in a Zone may support SIF_ExtendedQuery
							in addition to SIF_Query.  Support for SIF_ExtendedQuery can be declared in and retrieved from the Zone is various Infrastructure
							messages and objects.
						</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SIF_DestinationProvider" minOccurs="0" type="sif:SIF_RequestObjectNamesType">
        <xs:annotation>
          <xs:documentation>
              If no SIF_DestinationId applies to the request and this element is supplied, the Requester specifies that the
              extended query be routed to the Provider on record for the given object name.  If this element is omitted and no SIF_DestinationId
              applies to the request, the ZIS routes the request to the Provider on record for the object name in SIF_From.
            </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Select">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Element" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation>Indicates the element/attribute to return as a column.  Contents can be left empty to return the whole object specified in ObjectName,
						or * can be designated to return all attributes and immediate child elements of the object specified in ObjectName, or 
							SIF_Element Syntax can be specified, relative to the object specified in ObjectName.  Requested attributes
							are to be returned as the text value of the corresponding attribute, elements as a copy of the XML element itself including attributes if they exist.
					</xs:documentation>
              </xs:annotation>
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:normalizedString">
                    <xs:attribute name="Alias" use="optional">
                      <xs:simpleType>
                        <xs:restriction base="xs:normalizedString">
                          <xs:annotation>
                            <xs:documentation>Optional caption for the column.</xs:documentation>
                          </xs:annotation>
                          <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:attribute>
                    <xs:attribute name="ObjectName" use="required" type="sif:SIF_RequestObjectNamesType">
                      <xs:annotation>
                        <xs:documentation>The name of the object from which to retrieve element/attributes.</xs:documentation>
                      </xs:annotation>
                    </xs:attribute>
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
          <xs:attribute name="Distinct" use="required" type="xs:boolean">
            <xs:annotation>
              <xs:documentation>Specifies whether query results should return all rows (false) or just distinct ones (true).  Rows are distinct if
						at least one column differs between them.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RowCount" use="required">
            <xs:annotation>
              <xs:documentation>The maximum number of rows to return.  If All, return all rows, otherwise return the top rows up to the maximum
						row count indicated.
					</xs:documentation>
            </xs:annotation>
            <xs:simpleType>
              <xs:union>
                <xs:simpleType>
                  <xs:restriction base="xs:positiveInteger" />
                </xs:simpleType>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="All" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:union>
            </xs:simpleType>
          </xs:attribute>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_From">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Join" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_JoinOn" maxOccurs="unbounded">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_LeftElement">
                          <xs:annotation>
                            <xs:documentation>Specifies the left-side element/attribute on which to constrain the join.  Currently only support for keys/RefIds/RefId references is required.</xs:documentation>
                          </xs:annotation>
                          <xs:complexType>
                            <xs:simpleContent>
                              <xs:extension base="xs:normalizedString">
                                <xs:attribute name="ObjectName" use="required" type="sif:SIF_RequestObjectNamesType">
                                  <xs:annotation>
                                    <xs:documentation>Name of the object that contains the element/attribute.</xs:documentation>
                                  </xs:annotation>
                                </xs:attribute>
                              </xs:extension>
                            </xs:simpleContent>
                          </xs:complexType>
                        </xs:element>
                        <xs:element name="SIF_RightElement">
                          <xs:annotation>
                            <xs:documentation>Specifies right left-side element/attribute on which to constrain the join.  Currently only support for keys/RefIds/RefId references is required.</xs:documentation>
                          </xs:annotation>
                          <xs:complexType>
                            <xs:simpleContent>
                              <xs:extension base="xs:normalizedString">
                                <xs:attribute name="ObjectName" use="required" type="sif:SIF_RequestObjectNamesType">
                                  <xs:annotation>
                                    <xs:documentation>Name of the object that contains the element/attribute.</xs:documentation>
                                  </xs:annotation>
                                </xs:attribute>
                              </xs:extension>
                            </xs:simpleContent>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="Type" use="required">
                  <xs:annotation>
                    <xs:documentation>Type of relational join.</xs:documentation>
                  </xs:annotation>
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:enumeration value="Inner" />
                      <xs:enumeration value="LeftOuter" />
                      <xs:enumeration value="RightOuter" />
                      <xs:enumeration value="FullOuter" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
          <xs:attribute name="ObjectName" use="required" type="sif:SIF_RequestObjectNamesType">
            <xs:annotation>
              <xs:documentation>The name of the object to query.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Where" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_ConditionGroup">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_Conditions" maxOccurs="unbounded">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Condition" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="SIF_Element">
                                <xs:annotation>
                                  <xs:documentation>This is the element/attribute being queried.</xs:documentation>
                                </xs:annotation>
                                <xs:complexType>
                                  <xs:simpleContent>
                                    <xs:extension base="xs:normalizedString">
                                      <xs:attribute name="ObjectName" use="required" type="sif:SIF_RequestObjectNamesType">
                                        <xs:annotation>
                                          <xs:documentation>The name of the object containing the element/attribute.</xs:documentation>
                                        </xs:annotation>
                                      </xs:attribute>
                                    </xs:extension>
                                  </xs:simpleContent>
                                </xs:complexType>
                              </xs:element>
                              <xs:element name="SIF_Operator">
                                <xs:annotation>
                                  <xs:documentation>The comparison operator for the condition.</xs:documentation>
                                </xs:annotation>
                                <xs:simpleType>
                                  <xs:restriction base="xs:token">
                                    <xs:enumeration value="EQ">
                                      <xs:annotation>
                                        <xs:documentation>Equals</xs:documentation>
                                      </xs:annotation>
                                    </xs:enumeration>
                                    <xs:enumeration value="LT">
                                      <xs:annotation>
                                        <xs:documentation>Less Than</xs:documentation>
                                      </xs:annotation>
                                    </xs:enumeration>
                                    <xs:enumeration value="GT">
                                      <xs:annotation>
                                        <xs:documentation>Greater Than</xs:documentation>
                                      </xs:annotation>
                                    </xs:enumeration>
                                    <xs:enumeration value="LE">
                                      <xs:annotation>
                                        <xs:documentation>Less Than Or Equals</xs:documentation>
                                      </xs:annotation>
                                    </xs:enumeration>
                                    <xs:enumeration value="GE">
                                      <xs:annotation>
                                        <xs:documentation>Greater Than Or Equals</xs:documentation>
                                      </xs:annotation>
                                    </xs:enumeration>
                                    <xs:enumeration value="NE">
                                      <xs:annotation>
                                        <xs:documentation>Not Equals</xs:documentation>
                                      </xs:annotation>
                                    </xs:enumeration>
                                  </xs:restriction>
                                </xs:simpleType>
                              </xs:element>
                              <xs:element name="SIF_Value" type="xs:string">
                                <xs:annotation>
                                  <xs:documentation>SIF_Value is the data that is used to compare with the value of the element or attribute.</xs:documentation>
                                </xs:annotation>
                              </xs:element>
                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                      <xs:attribute name="Type" use="required">
                        <xs:annotation>
                          <xs:documentation>
								The boolean operator for joining conditions (SIF_Condition elements) within this element.  Note that None should be used if there
								is only one SIF_Condition element.
							</xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                          <xs:restriction base="xs:token">
                            <xs:enumeration value="And" />
                            <xs:enumeration value="Or" />
                            <xs:enumeration value="None" />
                          </xs:restriction>
                        </xs:simpleType>
                      </xs:attribute>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="Type" use="required">
                  <xs:annotation>
                    <xs:documentation>
								The Boolean operator for joining conditions (SIF_Conditions elements) within this element.  Note that None should be used if there is only one
								SIF_Conditions element.
							</xs:documentation>
                  </xs:annotation>
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:enumeration value="And" />
                      <xs:enumeration value="Or" />
                      <xs:enumeration value="None" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_OrderBy" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Element" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation>
							Indicates the element/attribute by which to sort.
						</xs:documentation>
              </xs:annotation>
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:normalizedString">
                    <xs:attribute name="ObjectName" use="required" type="sif:SIF_RequestObjectNamesType">
                      <xs:annotation>
                        <xs:documentation>The name of the object containing the element/attribute.</xs:documentation>
                      </xs:annotation>
                    </xs:attribute>
                    <xs:attribute name="Ordering" use="required">
                      <xs:annotation>
                        <xs:documentation>Whether to order the element/attribute in ascending or descending order.</xs:documentation>
                      </xs:annotation>
                      <xs:simpleType>
                        <xs:restriction base="xs:token">
                          <xs:enumeration value="Ascending" />
                          <xs:enumeration value="Descending" />
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:attribute>
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_ExtendedQuery" type="sif:SIF_ExtendedQueryType" />


  <!--SIF_ExtendedQueryResults-->

  <xs:complexType name="SIF_ExtendedQueryResultsType">
    <xs:annotation>
      <xs:documentation>
              This element provides a wrapper for data returned in response to a SIF_ExtendedQuery.  Used in SIF_Response
              and SIF_ReportObject.
            </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SIF_ColumnHeaders">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Element" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation>The element/attribute specified for the column in SIF_ExtendedQuery.</xs:documentation>
              </xs:annotation>
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:normalizedString">
                    <xs:attribute name="ObjectName" use="required" type="sif:SIF_RequestObjectNamesType">
                      <xs:annotation>
                        <xs:documentation>The object in which the element/attribute occurs.</xs:documentation>
                      </xs:annotation>
                    </xs:attribute>
                    <xs:attribute name="Alias" use="optional">
                      <xs:simpleType>
                        <xs:restriction base="xs:normalizedString">
                          <xs:annotation>
                            <xs:documentation>The caption for the column, if specified in SIF_ExtendedQuery.
					</xs:documentation>
                          </xs:annotation>
                          <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:attribute>
                    <!--<xs:attribute ref="xsi:type" use="optional" />-->
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Rows">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="R" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="C" maxOccurs="unbounded" type="sif:SelectedContentType">
                    <xs:annotation>
                      <xs:documentation>
              Contains the value of each column specified in SIF_ExtendedQuery/SIF_Select.  
							The order of the columns must correspond to the order of the elements as requested in SIF_ExtendedQuery.
							Note the number of columns may be expanded from the requested columns if * is indicated
							one or more times in the SIF_Select clause.
            </xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_ExtendedQueryResults" type="sif:SIF_ExtendedQueryResultsType" />


  <!--Infrastructure Messages-->


  <!--SIF_Ack-->

  <xs:complexType name="SIF_AckType">
    <xs:annotation>
      <xs:documentation>This message is used as an acknowledgement to an infrastructure message.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:SIF_Header" />
      <xs:element name="SIF_OriginalSourceId" nillable="true" type="xs:token">
        <xs:annotation>
          <xs:documentation>The SIF_SourceId of the infrastructure message for which the SIF_Ack serves as a response.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_OriginalMsgId" nillable="true" type="sif:MsgIdType">
        <xs:annotation>
          <xs:documentation>The SIF_MsgId of the infrastructure message for which the SIF_Ack message serves as a response.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:choice>
        <xs:element ref="sif:SIF_Status" />
        <xs:element ref="sif:SIF_Error" />
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Ack" type="sif:SIF_AckType" />


  <!--SIF_Event-->

  <xs:complexType name="SIF_EventType">
    <xs:annotation>
      <xs:documentation>SIF_Event is used to deliver event objects as defined in SIF.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:SIF_Header" />
      <xs:element name="SIF_ObjectData">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_EventObject">
              <xs:complexType>
                <xs:annotation>
                  <xs:documentation>Contains the actual object (partial or whole) that is being added, changed or deleted.</xs:documentation>
                </xs:annotation>
                <xs:complexContent>
                  <xs:extension base="sif:SIF_EventObjectType">
                    <xs:attribute name="ObjectName" use="required" type="sif:SIF_SubscribeObjectNamesType">
                      <xs:annotation>
                        <xs:documentation>This is the name of the object being added, changed or deleted.</xs:documentation>
                      </xs:annotation>
                    </xs:attribute>
                    <xs:attribute name="Action" use="required">
                      <xs:annotation>
                        <xs:documentation>This is the action associated with the object that is being conveyed by this SIF_Event.</xs:documentation>
                      </xs:annotation>
                      <xs:simpleType>
                        <xs:restriction base="xs:token">
                          <xs:enumeration value="Add" />
                          <xs:enumeration value="Delete" />
                          <xs:enumeration value="Change" />
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:attribute>
                  </xs:extension>
                </xs:complexContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Event" type="sif:SIF_EventType" />


  <!--SIF_Provide-->

  <xs:complexType name="SIF_ProvideType">
    <xs:annotation>
      <xs:documentation>The SIF_Provide message is used for advertising the provision of data objects.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:SIF_Header" />
      <xs:element name="SIF_Object" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_ExtendedQuerySupport" minOccurs="0" type="xs:boolean">
              <xs:annotation>
                <xs:documentation>Whether or not the Agent supports SIF_ExtendedQuery for this object.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
          </xs:sequence>
          <xs:attribute name="ObjectName" use="required" type="sif:SIF_ProvideObjectNamesType">
            <xs:annotation>
              <xs:documentation>The actual name of the object that is being provided.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Provide" type="sif:SIF_ProvideType" />


  <!--SIF_Provision-->

  <xs:complexType name="SIF_ProvisionType">
    <xs:annotation>
      <xs:documentation>
			Once registered, this message allows an agent to announce to the ZIS the functionality the agent will provide.
			The ZIS compares the functionality to its access control list and either returns a failure or a success.  Upon success,
			the ZIS performs an atomic update of its provide/subscribe database entries for the agent to match the objects listed in this message and atomically
			updates other stored settings for the agent.
			A ZIS must not allow an agent to perform operations that it did not successfully announce.  Agents should be aware that if the access control
			list changes after a successful SIF_Provision, some operations may still be rejected with access control errors.
		</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:SIF_Header" />
      <xs:element name="SIF_ProvideObjects">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ExtendedQuerySupport" minOccurs="0" type="xs:boolean">
                    <xs:annotation>
                      <xs:documentation>Whether or not SIF_ExtendedQuery is supported with regard to this object.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
                </xs:sequence>
                <xs:attribute name="ObjectName" use="required" type="sif:SIF_ProvideObjectNamesType">
                  <xs:annotation>
                    <xs:documentation>The name of each object.</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_SubscribeObjects">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
                </xs:sequence>
                <xs:attribute name="ObjectName" use="required" type="sif:SIF_SubscribeObjectNamesType">
                  <xs:annotation>
                    <xs:documentation>The name of each object.</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_PublishAddObjects">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
                </xs:sequence>
                <xs:attribute name="ObjectName" use="required" type="sif:SIF_SubscribeObjectNamesType">
                  <xs:annotation>
                    <xs:documentation>The name of each object.</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_PublishChangeObjects">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
                </xs:sequence>
                <xs:attribute name="ObjectName" use="required" type="sif:SIF_SubscribeObjectNamesType">
                  <xs:annotation>
                    <xs:documentation>The name of each object.</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_PublishDeleteObjects">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
                </xs:sequence>
                <xs:attribute name="ObjectName" use="required" type="sif:SIF_SubscribeObjectNamesType">
                  <xs:annotation>
                    <xs:documentation>The name of each object.</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_RequestObjects">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ExtendedQuerySupport" minOccurs="0" type="xs:boolean">
                    <xs:annotation>
                      <xs:documentation>
							Optionally specify whether or not SIF_ExtendedQuery may be sent in requests for this object.
						</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
                </xs:sequence>
                <xs:attribute name="ObjectName" use="required" type="sif:SIF_RequestObjectNamesType">
                  <xs:annotation>
                    <xs:documentation>The name of each object.</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_RespondObjects">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ExtendedQuerySupport" minOccurs="0" type="xs:boolean">
                    <xs:annotation>
                      <xs:documentation>
			Whether or not SIF_ExtendedQuery is supported with regard to this object.
		</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
                </xs:sequence>
                <xs:attribute name="ObjectName" use="required" type="sif:SIF_RequestObjectNamesType">
                  <xs:annotation>
                    <xs:documentation>The name of each object.</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Provision" type="sif:SIF_ProvisionType" />


  <!--SIF_Register-->

  <xs:complexType name="SIF_RegisterType">
    <xs:annotation>
      <xs:documentation>SIF_Register is the message for registering an agent with a ZIS.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:SIF_Header" />
      <xs:element name="SIF_Name">
        <xs:simpleType>
          <xs:restriction base="xs:normalizedString">
            <xs:annotation>
              <xs:documentation>This is the descriptive name of the agent that is registering (i.e. Ramsey Media Center).</xs:documentation>
            </xs:annotation>
            <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SIF_Version" maxOccurs="unbounded" type="sif:VersionWithWildcardsType">
        <xs:annotation>
          <xs:documentation>Specifies the SIF Implementation Specification version(s) defining messages the agent can receive. If the ZIS cannot communicate in this format, it should reject the request.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_MaxBufferSize" type="xs:unsignedInt">
        <xs:annotation>
          <xs:documentation>Specifies the maximum size of a packet to be returned by the ZIS. The ZIS may return packets smaller than, or equal to, the maximum value.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Mode">
        <xs:annotation>
          <xs:documentation>Specifies the communication mode (Pull or Push) as chosen by the message sender.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Push" />
            <xs:enumeration value="Pull" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element ref="sif:SIF_Protocol" minOccurs="0" />
      <xs:element name="SIF_NodeVendor" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="xs:normalizedString">
            <xs:annotation>
              <xs:documentation>The vendor of the SIF agent.</xs:documentation>
            </xs:annotation>
            <xs:maxLength value="256" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SIF_NodeVersion" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="xs:normalizedString">
            <xs:annotation>
              <xs:documentation>The agent version number.  The format of this field is undefined, but it should
						match the format used in the agent's conformance statement, if the agent is SIF Certified.</xs:documentation>
            </xs:annotation>
            <xs:maxLength value="32" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SIF_Application" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Vendor">
              <xs:simpleType>
                <xs:restriction base="xs:normalizedString">
                  <xs:annotation>
                    <xs:documentation>The name of the company of the product that this agent supports.</xs:documentation>
                  </xs:annotation>
                  <xs:maxLength value="256" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
            <xs:element name="SIF_Product">
              <xs:simpleType>
                <xs:restriction base="xs:normalizedString">
                  <xs:annotation>
                    <xs:documentation>The name of the product that this agent supports.</xs:documentation>
                  </xs:annotation>
                  <xs:maxLength value="256" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
            <xs:element name="SIF_Version">
              <xs:simpleType>
                <xs:restriction base="xs:normalizedString">
                  <xs:annotation>
                    <xs:documentation>The version of the product. This field is informative only.</xs:documentation>
                  </xs:annotation>
                  <xs:maxLength value="32" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Icon" minOccurs="0" type="xs:anyURI">
        <xs:annotation>
          <xs:documentation>HTTP URL referencing an icon for graphical representation of the application/agent.
Should range from 16x16 pixels to 128x128 pixels and be of an image MIME type commonly supported by Web browsers (e.g. PNG, JPEG, GIF).  
Agents may optionally follow the more restrictive guidelines at [FAVICON].</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Register" type="sif:SIF_RegisterType" />


  <!--SIF_Request-->

  <xs:complexType name="SIF_RequestType">
    <xs:annotation>
      <xs:documentation>SIF_Request is used to request information in SIF data objects from other SIF nodes.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:SIF_Header" />
      <xs:element name="SIF_Version" maxOccurs="unbounded" type="sif:VersionWithWildcardsType">
        <xs:annotation>
          <xs:documentation>Specifies which SIF Implementation Specification version should be used when returning the response data; wildcards are allowed.
						The responding agent SHOULD return data using the highest version it supports 
						that falls within the specified versions.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_MaxBufferSize" type="xs:unsignedInt">
        <xs:annotation>
          <xs:documentation>Specifies the maximum size of a response packet to be returned to the requester. 
The responder may return packets smaller than, or equal to, the maximum value. 
To guarantee delivery of response packets, requesting agents must not specify a SIF_MaxBufferSize greater than its registered SIF_Register/SIF_MaxBufferSize.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:choice>
        <xs:element ref="sif:SIF_Query" />
        <xs:element ref="sif:SIF_ExtendedQuery" />
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Request" type="sif:SIF_RequestType" />


  <!--SIF_Response-->

  <xs:complexType name="SIF_ResponseType">
    <xs:annotation>
      <xs:documentation>SIF_Response is used to respond to a SIF_Request message.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:SIF_Header" />
      <xs:element name="SIF_RequestMsgId" type="sif:MsgIdType">
        <xs:annotation>
          <xs:documentation>This is the message ID of the SIF_Request message being processed. It provides a unique match between a SIF_Response and a previous SIF_Request. Since the ID of each message from an agent is unique, the receiver of a SIF_Response message will be able to relate the SIF_Response to a SIF_Request that it sent out previously.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_PacketNumber" type="xs:positiveInteger">
        <xs:annotation>
          <xs:documentation>This element represents the index of the SIF_Response message in the sequence of packets that make up a complete response. Its value must be in the range of 1 through n, with n equal to the total number of packets that make up a response.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_MorePackets">
        <xs:annotation>
          <xs:documentation>This element provides an indication as to whether there are more packets besides this one to make up a complete response.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Yes" />
            <xs:enumeration value="No" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:choice>
        <xs:element ref="sif:SIF_Error" />
        <xs:element name="SIF_ObjectData" type="sif:SIF_ResponseObjectsType">
          <xs:annotation>
            <xs:documentation>The SIF_ObjectData element contains the data objects matching the supplied criteria in the SIF_Request message if the
						SIF_Request contained SIF_Query.  If the SIF_Request contained SIF_ExtendedQuery, include SIF_ExtendedQueryResults.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element ref="sif:SIF_ExtendedQueryResults" />
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Response" type="sif:SIF_ResponseType" />


  <!--SIF_Subscribe-->

  <xs:complexType name="SIF_SubscribeType">
    <xs:annotation>
      <xs:documentation>This message is used to subscribe to event objects that are contained in this message.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:SIF_Header" />
      <xs:element name="SIF_Object" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
          </xs:sequence>
          <xs:attribute name="ObjectName" use="required" type="sif:SIF_SubscribeObjectNamesType">
            <xs:annotation>
              <xs:documentation>The actual name of the object that is being subscribed to. All valid SIF_Events for this object will be routed to the subscriber.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Subscribe" type="sif:SIF_SubscribeType" />


  <!--SIF_SystemControl-->

  <xs:complexType name="SIF_SystemControlType">
    <xs:annotation>
      <xs:documentation>This message is designed to control the flow of data an agent and ZIS or vice-versa, and to synchronously
retrieve data available from the ZIS.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:SIF_Header" />
      <xs:element name="SIF_SystemControlData">
        <xs:annotation>
          <xs:documentation>This element holds the sub-message being sent.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:choice>
            <xs:element ref="sif:SIF_Ping" />
            <xs:element ref="sif:SIF_Sleep" />
            <xs:element ref="sif:SIF_Wakeup" />
            <xs:element ref="sif:SIF_GetMessage" />
            <xs:element ref="sif:SIF_GetZoneStatus" />
            <xs:element ref="sif:SIF_GetAgentACL" />
            <xs:element ref="sif:SIF_CancelRequests" />
          </xs:choice>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_SystemControl" type="sif:SIF_SystemControlType" />


  <!--SIF_Ping-->

  <xs:complexType name="SIF_PingType">
    <xs:annotation>
      <xs:documentation>This sub-message detects if an a Push-Mode Agent or ZIS is ready to receive and process messages.</xs:documentation>
    </xs:annotation>
  </xs:complexType>

  <xs:element name="SIF_Ping" type="sif:SIF_PingType" />


  <!--SIF_Sleep-->

  <xs:complexType name="SIF_SleepType">
    <xs:annotation>
      <xs:documentation>This sub-message tells a receiver not to send any more messages to the sender.</xs:documentation>
    </xs:annotation>
  </xs:complexType>

  <xs:element name="SIF_Sleep" type="sif:SIF_SleepType" />


  <!--SIF_Wakeup-->

  <xs:complexType name="SIF_WakeupType">
    <xs:annotation>
      <xs:documentation>This message tells a receiver that the sender is able to process messages.</xs:documentation>
    </xs:annotation>
  </xs:complexType>

  <xs:element name="SIF_Wakeup" type="sif:SIF_WakeupType" />


  <!--SIF_GetMessage-->

  <xs:complexType name="SIF_GetMessageType">
    <xs:annotation>
      <xs:documentation>This message tells the ZIS to return the first available message to the agent, subject to Selective Message Blocking.</xs:documentation>
    </xs:annotation>
  </xs:complexType>

  <xs:element name="SIF_GetMessage" type="sif:SIF_GetMessageType" />


  <!--SIF_GetZoneStatus-->

  <xs:complexType name="SIF_GetZoneStatusType">
    <xs:annotation>
      <xs:documentation>This message tells the ZIS to return the current SIF_ZoneStatus in a SIF_Ack.</xs:documentation>
    </xs:annotation>
  </xs:complexType>

  <xs:element name="SIF_GetZoneStatus" type="sif:SIF_GetZoneStatusType" />


  <!--SIF_GetAgentACL-->

  <xs:complexType name="SIF_GetAgentACLType">
    <xs:annotation>
      <xs:documentation>This message tells the ZIS to return the Agent's ACL permissions in a SIF_Ack.</xs:documentation>
    </xs:annotation>
  </xs:complexType>

  <xs:element name="SIF_GetAgentACL" type="sif:SIF_GetAgentACLType" />


  <!--SIF_CancelRequests-->

  <xs:complexType name="SIF_CancelRequestsType">
    <xs:annotation>
      <xs:documentation>This sub-message asks a receiver (ZIS or Push-Mode Agent) to cancel the specified SIF_Requests, pending or in process.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SIF_NotificationType">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Standard">
              <xs:annotation>
                <xs:documentation>ZIS will send a "final" SIF_Response for each cancelled SIF_Request.</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="None">
              <xs:annotation>
                <xs:documentation>No further SIF_Responses for these requests will be placed in the Agent's queue.</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SIF_RequestMsgIds">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_RequestMsgId" maxOccurs="unbounded" type="sif:MsgIdType">
              <xs:annotation>
                <xs:documentation>This is the </xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_CancelRequests" type="sif:SIF_CancelRequestsType" />


  <!--SIF_Unprovide-->

  <xs:complexType name="SIF_UnprovideType">
    <xs:annotation>
      <xs:documentation>This message performs the opposite function of SIF_Provide.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:SIF_Header" />
      <xs:element name="SIF_Object" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
          </xs:sequence>
          <xs:attribute name="ObjectName" use="required" type="sif:SIF_ProvideObjectNamesType">
            <xs:annotation>
              <xs:documentation>The actual name of the object that is being removed.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Unprovide" type="sif:SIF_UnprovideType" />


  <!--SIF_Unregister-->

  <xs:complexType name="SIF_UnregisterType">
    <xs:annotation>
      <xs:documentation>This message is used to unregister an agent from a Zone.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:SIF_Header" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Unregister" type="sif:SIF_UnregisterType" />


  <!--SIF_Unsubscribe-->

  <xs:complexType name="SIF_UnsubscribeType">
    <xs:annotation>
      <xs:documentation>This message is used to unsubscribe from SIF_Events.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:SIF_Header" />
      <xs:element name="SIF_Object" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
          </xs:sequence>
          <xs:attribute name="ObjectName" use="required" type="sif:SIF_SubscribeObjectNamesType">
            <xs:annotation>
              <xs:documentation>The actual name of the object from which the agent should be unsubscribed. Events pertaining to this object published after successful unsubscription will no longer be queued for delivery to the agent. Events already queued for delivery to the agent prior to unsubscription will be delivered.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Unsubscribe" type="sif:SIF_UnsubscribeType" />


  <!--Infrastructure Data Objects-->


  <!--SIF_ZoneStatus-->

  <xs:complexType name="SIF_ZoneStatusType">
    <xs:annotation>
      <xs:documentation>
	The SIF_ZoneStatus object is an object that is implicitly provided by all Zone Integration Servers to provide
	information about the ZIS. Zone Integration Servers MUST provide this object.
</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SIF_Name" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The descriptive name for the zone.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Icon" minOccurs="0" type="xs:anyURI">
        <xs:annotation>
          <xs:documentation>
	HTTP URL referencing an icon for graphical representation of the ZIS/Zone.
	Should range from 16x16 pixels to 128x128 pixels and be of an image MIME type commonly supported by Web browsers (e.g. PNG, JPEG, GIF).
	Agents may optionally follow the more restrictive guidelines at [FAVICON].
</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Vendor" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Name" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The name of the company that wrote the ZIS.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="SIF_Product" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The product name assigned by the vendor to identify this ZIS.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="SIF_Version" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The version of the vendor's product—not necessarily the SIF version.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Providers" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Provider" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Object" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="SIF_ExtendedQuerySupport" type="xs:boolean" />
                              <xs:element ref="sif:SIF_Contexts" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                              <xs:annotation>
                                <xs:documentation>The name of the object being provided by this SIF node.</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required">
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:annotation>
                        <xs:documentation>The identifier of the SIF node that is providing objects. This is the agent or ZIS identifier that would appear in the SIF_SourceId field of any SIF_Header created by the SIF node.</xs:documentation>
                      </xs:annotation>
                      <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Subscribers" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Subscriber" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Object" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element ref="sif:SIF_Contexts" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                              <xs:annotation>
                                <xs:documentation>The name of the object being subscribed to by this SIF node.</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required">
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:annotation>
                        <xs:documentation>The identifier of the SIF node that is subscribing to the object events. This is the agent or ZIS identifier that would appear in the SIF_SourceId field of any SIF_Header created by the SIF node.</xs:documentation>
                      </xs:annotation>
                      <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_AddPublishers" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Publisher" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Object" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element ref="sif:SIF_Contexts" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                              <xs:annotation>
                                <xs:documentation>The name of the object being published by this agent.</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required">
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:annotation>
                        <xs:documentation>The identifier of the SIF node that can publish the SIF_Event. This is the agent identifier that would appear in the SIF_SourceId field of any SIF_Header created by the agent.</xs:documentation>
                      </xs:annotation>
                      <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_ChangePublishers" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Publisher" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Object" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element ref="sif:SIF_Contexts" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                              <xs:annotation>
                                <xs:documentation>The name of the object being published by this agent.</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required">
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:annotation>
                        <xs:documentation>The identifier of the SIF node that can publish the SIF_Event. This is the agent identifier that would appear in the SIF_SourceId field of any SIF_Header created by the agent.</xs:documentation>
                      </xs:annotation>
                      <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_DeletePublishers" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Publisher" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Object" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element ref="sif:SIF_Contexts" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                              <xs:annotation>
                                <xs:documentation>The name of the object being published by this agent.</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required">
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:annotation>
                        <xs:documentation>The identifier of the SIF node that can publish the SIF_Event. This is the agent identifier that would appear in the SIF_SourceId field of any SIF_Header created by the agent.</xs:documentation>
                      </xs:annotation>
                      <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Responders" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Responder" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Object" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="SIF_ExtendedQuerySupport" type="xs:boolean" />
                              <xs:element ref="sif:SIF_Contexts" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                              <xs:annotation>
                                <xs:documentation>The name of the object for which the agent can respond to requests.</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required">
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:annotation>
                        <xs:documentation>The identifier of the SIF node that can respond. This is the agent identifier that would appear in the SIF_SourceId field of any SIF_Header created by the agent.</xs:documentation>
                      </xs:annotation>
                      <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Requesters" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Requester" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Object" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="SIF_ExtendedQuerySupport" type="xs:boolean" />
                              <xs:element ref="sif:SIF_Contexts" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                              <xs:annotation>
                                <xs:documentation>The name of the object being requested by this agent.</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required">
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:annotation>
                        <xs:documentation>The identifier of the SIF node that can request an object. This is the agent identifier that would appear in the SIF_SourceId field of any SIF_Header created by the agent.</xs:documentation>
                      </xs:annotation>
                      <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_SIFNodes" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_SIFNode" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_Name" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>The descriptive name of the SIF node (i.e. Ramsey Food Services).</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="SIF_Icon" minOccurs="0" type="xs:anyURI">
                    <xs:annotation>
                      <xs:documentation>
	HTTP URL referencing an icon for graphical representation of the application/agent.
	Should range from 16x16 pixels to 128x128 pixels and be of an image MIME type commonly supported by Web browsers (e.g. PNG, JPEG, GIF).
	Agents may optionally follow the more restrictive guidelines at [FAVICON].
</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="SIF_NodeVendor" minOccurs="0">
                    <xs:simpleType>
                      <xs:restriction base="xs:normalizedString">
                        <xs:annotation>
                          <xs:documentation>The vendor of the SIF agent.</xs:documentation>
                        </xs:annotation>
                        <xs:maxLength value="256" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                  <xs:element name="SIF_NodeVersion" minOccurs="0">
                    <xs:simpleType>
                      <xs:restriction base="xs:normalizedString">
                        <xs:annotation>
                          <xs:documentation>
	The agent version number.  The format of this field is undefined, but it should
	match the format used in the agent's conformance statement, if the agent is SIF Certified.
</xs:documentation>
                        </xs:annotation>
                        <xs:maxLength value="32" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                  <xs:element name="SIF_Application" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Vendor">
                          <xs:simpleType>
                            <xs:restriction base="xs:normalizedString">
                              <xs:annotation>
                                <xs:documentation>The name of the company of the product that this agent supports.</xs:documentation>
                              </xs:annotation>
                              <xs:maxLength value="256" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                            </xs:restriction>
                          </xs:simpleType>
                        </xs:element>
                        <xs:element name="SIF_Product">
                          <xs:simpleType>
                            <xs:restriction base="xs:normalizedString">
                              <xs:annotation>
                                <xs:documentation>The name of the product that this agent supports.</xs:documentation>
                              </xs:annotation>
                              <xs:maxLength value="256" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                            </xs:restriction>
                          </xs:simpleType>
                        </xs:element>
                        <xs:element name="SIF_Version">
                          <xs:simpleType>
                            <xs:restriction base="xs:normalizedString">
                              <xs:annotation>
                                <xs:documentation>The version of the product. This field is informative only.</xs:documentation>
                              </xs:annotation>
                              <xs:maxLength value="32" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                            </xs:restriction>
                          </xs:simpleType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="SIF_SourceId">
                    <xs:simpleType>
                      <xs:restriction base="xs:token">
                        <xs:annotation>
                          <xs:documentation>The agent or ZIS identifier. This is the same value that the SIF node would place in any SIF_Header that it would create.</xs:documentation>
                        </xs:annotation>
                        <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                  <xs:element name="SIF_Mode">
                    <xs:annotation>
                      <xs:documentation>Specifies the communication mode (Pull or Push) as chosen by the message sender.</xs:documentation>
                    </xs:annotation>
                    <xs:simpleType>
                      <xs:restriction base="xs:token">
                        <xs:enumeration value="Push" />
                        <xs:enumeration value="Pull" />
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                  <xs:element ref="sif:SIF_Protocol" minOccurs="0" />
                  <xs:element name="SIF_VersionList">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Version" maxOccurs="unbounded" type="sif:VersionWithWildcardsType">
                          <xs:annotation>
                            <xs:documentation>This is the version or versions of the SIF Implementation Specification that define(s) the messages the SIF node can receive. 
For agents, this information was communicated when the SIF node registered with the ZIS.</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element ref="sif:SIF_AuthenticationLevel" minOccurs="0" />
                  <xs:element ref="sif:SIF_EncryptionLevel" minOccurs="0" />
                  <xs:element name="SIF_MaxBufferSize" type="xs:unsignedInt">
                    <xs:annotation>
                      <xs:documentation>Specifies that the ZIS should never send packets larger than this value. Query responses from other providers are controlled by the SIF_MaxBufferSize attribute in the SIF_Request message.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="SIF_Sleeping">
                    <xs:annotation>
                      <xs:documentation>This element shows whether the SIF node is ready to process messages.</xs:documentation>
                    </xs:annotation>
                    <xs:simpleType>
                      <xs:restriction base="xs:token">
                        <xs:enumeration value="No">
                          <xs:annotation>
                            <xs:documentation>The SIF node is ready to process messages</xs:documentation>
                          </xs:annotation>
                        </xs:enumeration>
                        <xs:enumeration value="Yes">
                          <xs:annotation>
                            <xs:documentation>The SIF node is sleeping and cannot process messages</xs:documentation>
                          </xs:annotation>
                        </xs:enumeration>
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="Type" use="required">
                  <xs:annotation>
                    <xs:documentation>
	The type of the node registered with the ZIS.  Note that ZIS is forward-looking and not used currently; all information about this
	Zone/ZIS is contained outside SIF_SIFNodes.
</xs:documentation>
                  </xs:annotation>
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:enumeration value="Agent" />
                      <xs:enumeration value="ZIS" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_SupportedAuthentication" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_ProtocolName" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation>Describes a particular authentication protocol supported.</xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="X.509" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_SupportedProtocols">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="sif:SIF_Protocol" maxOccurs="unbounded" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_SupportedVersions">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Version" maxOccurs="unbounded" type="sif:VersionType">
              <xs:annotation>
                <xs:documentation>Lists a specific SIF Implementation Specification version.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_AdministrationURL" minOccurs="0" type="xs:anyURI">
        <xs:annotation>
          <xs:documentation>Should a ZIS vendor provide an administration interface for the zone via a URL, the ZIS can make the URL available in SIF_ZoneStatus. Agent administrators can use the URL to access zone administration features, should they have permission to do so.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element ref="sif:SIF_Contexts" />
      <xs:element ref="sif:SIF_Metadata" minOccurs="0" />
      <xs:element ref="sif:SIF_ExtendedElements" minOccurs="0" />
    </xs:sequence>
    <xs:attribute name="ZoneId" use="required" type="xs:token">
      <xs:annotation>
        <xs:documentation>
	The identifier for this Zone.
	It is the same as the SIF_SourceId that the ZIS would place in any SIF_Header that it creates.
</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="SIF_ZoneStatus" type="sif:SIF_ZoneStatusType">
    <xs:key name="SIF_ZoneStatusKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@ZoneId" />
    </xs:key>
  </xs:element>


  <!--SIF_ZoneStatusInfrastructure-->

  <xs:complexType name="SIF_ZoneStatusInfrastructureType">
    <xs:annotation>
      <xs:documentation>
	The SIF_ZoneStatus object is an object that is implicitly provided by all Zone Integration Servers to provide
	information about the ZIS. Zone Integration Servers MUST provide this object.
</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SIF_Name" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The descriptive name for the zone.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Icon" minOccurs="0" type="xs:anyURI">
        <xs:annotation>
          <xs:documentation>
	HTTP URL referencing an icon for graphical representation of the ZIS/Zone.
	Should range from 16x16 pixels to 128x128 pixels and be of an image MIME type commonly supported by Web browsers (e.g. PNG, JPEG, GIF).
	Agents may optionally follow the more restrictive guidelines at [FAVICON].
</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Vendor" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Name" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The name of the company that wrote the ZIS.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="SIF_Product" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The product name assigned by the vendor to identify this ZIS.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="SIF_Version" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The version of the vendor's product—not necessarily the SIF version.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Providers" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Provider" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Object" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="SIF_ExtendedQuerySupport" type="xs:boolean" />
                              <xs:element ref="sif:SIF_Contexts" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                              <xs:annotation>
                                <xs:documentation>The name of the object being provided by this SIF node.</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required">
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:annotation>
                        <xs:documentation>The identifier of the SIF node that is providing objects. This is the agent or ZIS identifier that would appear in the SIF_SourceId field of any SIF_Header created by the SIF node.</xs:documentation>
                      </xs:annotation>
                      <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Subscribers" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Subscriber" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Object" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element ref="sif:SIF_Contexts" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                              <xs:annotation>
                                <xs:documentation>The name of the object being subscribed to by this SIF node.</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required">
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:annotation>
                        <xs:documentation>The identifier of the SIF node that is subscribing to the object events. This is the agent or ZIS identifier that would appear in the SIF_SourceId field of any SIF_Header created by the SIF node.</xs:documentation>
                      </xs:annotation>
                      <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_AddPublishers" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Publisher" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Object" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element ref="sif:SIF_Contexts" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                              <xs:annotation>
                                <xs:documentation>The name of the object being published by this agent.</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required">
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:annotation>
                        <xs:documentation>The identifier of the SIF node that can publish the SIF_Event. This is the agent identifier that would appear in the SIF_SourceId field of any SIF_Header created by the agent.</xs:documentation>
                      </xs:annotation>
                      <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_ChangePublishers" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Publisher" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Object" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element ref="sif:SIF_Contexts" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                              <xs:annotation>
                                <xs:documentation>The name of the object being published by this agent.</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required">
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:annotation>
                        <xs:documentation>The identifier of the SIF node that can publish the SIF_Event. This is the agent identifier that would appear in the SIF_SourceId field of any SIF_Header created by the agent.</xs:documentation>
                      </xs:annotation>
                      <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_DeletePublishers" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Publisher" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Object" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element ref="sif:SIF_Contexts" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                              <xs:annotation>
                                <xs:documentation>The name of the object being published by this agent.</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required">
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:annotation>
                        <xs:documentation>The identifier of the SIF node that can publish the SIF_Event. This is the agent identifier that would appear in the SIF_SourceId field of any SIF_Header created by the agent.</xs:documentation>
                      </xs:annotation>
                      <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Responders" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Responder" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Object" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="SIF_ExtendedQuerySupport" type="xs:boolean" />
                              <xs:element ref="sif:SIF_Contexts" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                              <xs:annotation>
                                <xs:documentation>The name of the object for which the agent can respond to requests.</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required">
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:annotation>
                        <xs:documentation>The identifier of the SIF node that can respond. This is the agent identifier that would appear in the SIF_SourceId field of any SIF_Header created by the agent.</xs:documentation>
                      </xs:annotation>
                      <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Requesters" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Requester" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Object" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="SIF_ExtendedQuerySupport" type="xs:boolean" />
                              <xs:element ref="sif:SIF_Contexts" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                              <xs:annotation>
                                <xs:documentation>The name of the object being requested by this agent.</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required">
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:annotation>
                        <xs:documentation>The identifier of the SIF node that can request an object. This is the agent identifier that would appear in the SIF_SourceId field of any SIF_Header created by the agent.</xs:documentation>
                      </xs:annotation>
                      <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_SIFNodes" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_SIFNode" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_Name" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>The descriptive name of the SIF node (i.e. Ramsey Food Services).</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="SIF_Icon" minOccurs="0" type="xs:anyURI">
                    <xs:annotation>
                      <xs:documentation>
	HTTP URL referencing an icon for graphical representation of the application/agent.
	Should range from 16x16 pixels to 128x128 pixels and be of an image MIME type commonly supported by Web browsers (e.g. PNG, JPEG, GIF).
	Agents may optionally follow the more restrictive guidelines at [FAVICON].
</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="SIF_NodeVendor" minOccurs="0">
                    <xs:simpleType>
                      <xs:restriction base="xs:normalizedString">
                        <xs:annotation>
                          <xs:documentation>The vendor of the SIF agent.</xs:documentation>
                        </xs:annotation>
                        <xs:maxLength value="256" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                  <xs:element name="SIF_NodeVersion" minOccurs="0">
                    <xs:simpleType>
                      <xs:restriction base="xs:normalizedString">
                        <xs:annotation>
                          <xs:documentation>
	The agent version number.  The format of this field is undefined, but it should
	match the format used in the agent's conformance statement, if the agent is SIF Certified.
</xs:documentation>
                        </xs:annotation>
                        <xs:maxLength value="32" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                  <xs:element name="SIF_Application" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Vendor">
                          <xs:simpleType>
                            <xs:restriction base="xs:normalizedString">
                              <xs:annotation>
                                <xs:documentation>The name of the company of the product that this agent supports.</xs:documentation>
                              </xs:annotation>
                              <xs:maxLength value="256" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                            </xs:restriction>
                          </xs:simpleType>
                        </xs:element>
                        <xs:element name="SIF_Product">
                          <xs:simpleType>
                            <xs:restriction base="xs:normalizedString">
                              <xs:annotation>
                                <xs:documentation>The name of the product that this agent supports.</xs:documentation>
                              </xs:annotation>
                              <xs:maxLength value="256" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                            </xs:restriction>
                          </xs:simpleType>
                        </xs:element>
                        <xs:element name="SIF_Version">
                          <xs:simpleType>
                            <xs:restriction base="xs:normalizedString">
                              <xs:annotation>
                                <xs:documentation>The version of the product. This field is informative only.</xs:documentation>
                              </xs:annotation>
                              <xs:maxLength value="32" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                            </xs:restriction>
                          </xs:simpleType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="SIF_SourceId">
                    <xs:simpleType>
                      <xs:restriction base="xs:token">
                        <xs:annotation>
                          <xs:documentation>The agent or ZIS identifier. This is the same value that the SIF node would place in any SIF_Header that it would create.</xs:documentation>
                        </xs:annotation>
                        <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                  <xs:element name="SIF_Mode">
                    <xs:annotation>
                      <xs:documentation>Specifies the communication mode (Pull or Push) as chosen by the message sender.</xs:documentation>
                    </xs:annotation>
                    <xs:simpleType>
                      <xs:restriction base="xs:token">
                        <xs:enumeration value="Push" />
                        <xs:enumeration value="Pull" />
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                  <xs:element ref="sif:SIF_Protocol" minOccurs="0" />
                  <xs:element name="SIF_VersionList">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Version" maxOccurs="unbounded" type="sif:VersionWithWildcardsType">
                          <xs:annotation>
                            <xs:documentation>This is the version or versions of the SIF Implementation Specification that define(s) the messages the SIF node can receive. 
For agents, this information was communicated when the SIF node registered with the ZIS.</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element ref="sif:SIF_AuthenticationLevel" minOccurs="0" />
                  <xs:element ref="sif:SIF_EncryptionLevel" minOccurs="0" />
                  <xs:element name="SIF_MaxBufferSize" type="xs:unsignedInt">
                    <xs:annotation>
                      <xs:documentation>Specifies that the ZIS should never send packets larger than this value. Query responses from other providers are controlled by the SIF_MaxBufferSize attribute in the SIF_Request message.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="SIF_Sleeping">
                    <xs:annotation>
                      <xs:documentation>This element shows whether the SIF node is ready to process messages.</xs:documentation>
                    </xs:annotation>
                    <xs:simpleType>
                      <xs:restriction base="xs:token">
                        <xs:enumeration value="No">
                          <xs:annotation>
                            <xs:documentation>The SIF node is ready to process messages</xs:documentation>
                          </xs:annotation>
                        </xs:enumeration>
                        <xs:enumeration value="Yes">
                          <xs:annotation>
                            <xs:documentation>The SIF node is sleeping and cannot process messages</xs:documentation>
                          </xs:annotation>
                        </xs:enumeration>
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="Type" use="required">
                  <xs:annotation>
                    <xs:documentation>
	The type of the node registered with the ZIS.  Note that ZIS is forward-looking and not used currently; all information about this
	Zone/ZIS is contained outside SIF_SIFNodes.
</xs:documentation>
                  </xs:annotation>
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:enumeration value="Agent" />
                      <xs:enumeration value="ZIS" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_SupportedAuthentication" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_ProtocolName" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation>Describes a particular authentication protocol supported.</xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="X.509" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_SupportedProtocols">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="sif:SIF_Protocol" maxOccurs="unbounded" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_SupportedVersions">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Version" maxOccurs="unbounded" type="sif:VersionType">
              <xs:annotation>
                <xs:documentation>Lists a specific SIF Implementation Specification version.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_AdministrationURL" minOccurs="0" type="xs:anyURI">
        <xs:annotation>
          <xs:documentation>Should a ZIS vendor provide an administration interface for the zone via a URL, the ZIS can make the URL available in SIF_ZoneStatus. Agent administrators can use the URL to access zone administration features, should they have permission to do so.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element ref="sif:SIF_Contexts" />
      <xs:element ref="sif:SIF_Metadata" minOccurs="0" />
      <xs:element ref="sif:SIF_ExtendedElements" minOccurs="0" />
    </xs:sequence>
    <xs:attribute name="ZoneId" use="required" type="xs:token">
      <xs:annotation>
        <xs:documentation>
	The identifier for this Zone.
	It is the same as the SIF_SourceId that the ZIS would place in any SIF_Header that it creates.
</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>


  <!--SIF_AgentACL-->

  <xs:complexType name="SIF_AgentACLType">
    <xs:annotation>
      <xs:documentation>This object provides an Agent its access control list (ACL) settings in the Zone.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SIF_ProvideAccess">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_Contexts" />
                </xs:sequence>
                <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                  <xs:annotation>
                    <xs:documentation>The name of each object.</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_SubscribeAccess">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_Contexts" />
                </xs:sequence>
                <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                  <xs:annotation>
                    <xs:documentation>The name of each object.</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_PublishAddAccess">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_Contexts" />
                </xs:sequence>
                <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                  <xs:annotation>
                    <xs:documentation>The name of each object.</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_PublishChangeAccess">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_Contexts" />
                </xs:sequence>
                <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                  <xs:annotation>
                    <xs:documentation>The name of each object.</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_PublishDeleteAccess">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_Contexts" />
                </xs:sequence>
                <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                  <xs:annotation>
                    <xs:documentation>The name of each object.</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_RequestAccess">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_Contexts" />
                </xs:sequence>
                <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                  <xs:annotation>
                    <xs:documentation>The name of each object.</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_RespondAccess">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_Contexts" />
                </xs:sequence>
                <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                  <xs:annotation>
                    <xs:documentation>The name of each object.</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element ref="sif:SIF_Metadata" minOccurs="0" />
      <xs:element ref="sif:SIF_ExtendedElements" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_AgentACL" type="sif:SIF_AgentACLType" />


  <!--SIF_AgentACLInfrastructure-->

  <xs:complexType name="SIF_AgentACLInfrastructureType">
    <xs:annotation>
      <xs:documentation>This object provides an Agent its access control list (ACL) settings in the Zone.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SIF_ProvideAccess">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_Contexts" />
                </xs:sequence>
                <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                  <xs:annotation>
                    <xs:documentation>The name of each object.</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_SubscribeAccess">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_Contexts" />
                </xs:sequence>
                <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                  <xs:annotation>
                    <xs:documentation>The name of each object.</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_PublishAddAccess">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_Contexts" />
                </xs:sequence>
                <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                  <xs:annotation>
                    <xs:documentation>The name of each object.</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_PublishChangeAccess">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_Contexts" />
                </xs:sequence>
                <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                  <xs:annotation>
                    <xs:documentation>The name of each object.</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_PublishDeleteAccess">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_Contexts" />
                </xs:sequence>
                <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                  <xs:annotation>
                    <xs:documentation>The name of each object.</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_RequestAccess">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_Contexts" />
                </xs:sequence>
                <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                  <xs:annotation>
                    <xs:documentation>The name of each object.</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_RespondAccess">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_Contexts" />
                </xs:sequence>
                <xs:attribute name="ObjectName" use="required" type="sif:ObjectNameType">
                  <xs:annotation>
                    <xs:documentation>The name of each object.</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element ref="sif:SIF_Metadata" minOccurs="0" />
      <xs:element ref="sif:SIF_ExtendedElements" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>


  <!--Data Model Common Elements-->


  <!--SIF_ExtendedElements-->

  <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:key name="SIF_ExtendedElementsKey1">
      <xs:selector xpath="./sif:SIF_ExtendedElement" />
      <xs:field xpath="@Name" />
    </xs:key>
  </xs:element>


  <!--ElectronicIdList-->

  <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" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ElectronicIdList" type="sif:ElectronicIdListType" />


  <!--ElectronicId-->

  <xs:complexType name="ElectronicIdType">
    <xs:annotation>
      <xs:documentation>
	Common element used to specify entity identifiers that are read by electronic equipment. It is used in objects such
	as StudentPersonal, StaffPersonal, and LibraryPatronStatus.
</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="xs:normalizedString">
        <xs:attribute name="Type" use="required">
          <xs:annotation>
            <xs:documentation>Electronic ID type.</xs:documentation>
          </xs:annotation>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="Barcode" />
              <xs:enumeration value="Magstripe" />
              <xs:enumeration value="PIN" />
              <xs:enumeration value="RFID" />
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:element name="ElectronicId" type="sif:ElectronicIdType" />


  <!--SchoolURL-->

  <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" />


  <!--LocalId-->

  <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. It is used in
	StudentPersonal, StaffPersonal, SchoolInfo, and other objects.
</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="LocalId" type="sif:LocalIdType" />


  <!--SchoolYear-->

  <xs:simpleType name="SchoolYearType">
    <xs:restriction base="xs:gYear">
      <xs:annotation>
        <xs:documentation>School year for which this information is applicable, expressed as the four-digit year in which the school year ends (e.g., "2004" for the 2003-04 school year).</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="SchoolYear" type="sif:SchoolYearType" />


  <!--LastName-->

  <xs:simpleType name="LastNameType">
    <xs:restriction base="xs:normalizedString">
      <xs:annotation>
        <xs:documentation>A person's last name.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="LastName" type="sif:LastNameType" />


  <!--FirstName-->

  <xs:simpleType name="FirstNameType">
    <xs:restriction base="xs:normalizedString">
      <xs:annotation>
        <xs:documentation>A person's first name.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="FirstName" type="sif:FirstNameType" />


  <!--MiddleName-->

  <xs:simpleType name="MiddleNameType">
    <xs:restriction base="xs:normalizedString">
      <xs:annotation>
        <xs:documentation>A person's middle name or initial.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="MiddleName" type="sif:MiddleNameType" />


  <!--Address-->

  <xs:complexType name="AddressType">
    <xs:annotation>
      <xs:documentation>This element contains address data, some of which is defined by the BS7666
International Address and Geographic Location Specification. Other
elements are present for support of international addresses. Applications
storing address information in the traditional line format must translate this
information into the appropriate data elements below.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="LocalId" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The locally assigned identifier for this address in the publishing system.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StartDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date person began using this address.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EndDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date person stopped using this address.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PAON">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Description" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Dwelling name, or at least a general description of the location in lieu of having any other information. This is required when no other PAON information is provided.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="StartNumber" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Start (single) dwelling number.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="StartNumberSuffix" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Start (single) dwelling number suffix.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="EndNumber" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>End dwelling number.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="EndNumberSuffix" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>End dwelling number suffix.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SAON" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Description" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Sub-dwelling name, or other descriptive information in lieu of having any other information.  This is required when no other SAON data is provided.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="StartNumber" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Start (single) dwelling number.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="StartNumberSuffix" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Start (single) dwelling number suffix.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="EndNumber" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>End dwelling number.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="EndNumberSuffix" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>End dwelling number suffix.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Street" 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="Locality" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The locality name refers to a neighbourhood, suburb, district, village, estate, settlement, or parish that may form part of a town, or stand in its own right within the context of an administrative area.  Where an industrial estate contains streets it is defined as a locality in its own right.  At least one of Locality, Town, or AdministrativeArea must be specified.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Town" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The city name refers to a city or town that is not an adminstrative area, a suburb of an administrative area that does not form part of another town or a London district. At least one of Locality, Town, or AdministrativeArea must be specified.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AdministrativeArea" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The administrative area is a geographic area that may be the highest level local administrative area, and may be a county or a unitary authority, an island or island group, or London. At least one of Locality, Town, or AdministrativeArea must be specified</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="County" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Where applicable, the name of the county.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PostTown" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Post Office usually assigns these based on Sorting Office.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PostCode" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The code allocated by the Post Office (within GBR) to identify a group of postal delivery points.  
Valid Postcode formats are:</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Country" minOccurs="0" nillable="true" type="sif:CountryType">
        <xs:annotation>
          <xs:documentation>Country where physical address is located, if known.  Usually this is going to be 'GBR' but could be outside the UK.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="UniquePropertyReferenceNumber" minOccurs="0" nillable="true">
        <xs:simpleType>
          <xs:restriction base="xs:integer">
            <xs:annotation>
              <xs:documentation>The unique Property and Land Reference Number (UPRN) for this address. Numeric: 1 to 12 digits.</xs:documentation>
            </xs:annotation>
            <xs:minInclusive value="0" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:maxInclusive value="999999999999" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="UniqueStreetReferenceNumber" minOccurs="0" nillable="true">
        <xs:simpleType>
          <xs:restriction base="xs:integer">
            <xs:annotation>
              <xs:documentation>The unique Property Street Reference Number (USRN) for this address.  Numeric: 1 to 8 digits.</xs:documentation>
            </xs:annotation>
            <xs:minInclusive value="0" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:maxInclusive value="99999999" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="LocationContext" minOccurs="0" nillable="true" type="sif:LocationContextType">
        <xs:annotation>
          <xs:documentation>The physical location of an address in terms of Census District, LA Electoral Ward, Parliamentary Constituency, and other defining location-centric characteristics.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="GridLocation" minOccurs="0" nillable="true" type="sif:GridLocationType">
        <xs:annotation>
          <xs:documentation>The physical property location coordinates.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="Type" use="required">
      <xs:annotation>
        <xs:documentation>Code that defines the address type.</xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="Current" />
          <xs:enumeration value="Mailing" />
          <xs:enumeration value="Transportation" />
          <xs:enumeration value="Previous" />
          <xs:enumeration value="Other" />
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="Address" type="sif:AddressType" />


  <!--AddressList-->

  <xs:complexType name="AddressListType">
    <xs:annotation>
      <xs:documentation>A list of Address elements.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Address" 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:key name="AddressListKey1">
      <xs:selector xpath="./sif:Address" />
      <xs:field xpath="@Type" />
    </xs:key>
  </xs:element>


  <!--ContactList-->

  <xs:complexType name="ContactListType">
    <xs:annotation>
      <xs:documentation>A list of contact persons associated with a school or LA.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Contact" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="PositionTitle" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The contact person's position title within the school or LA.</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 the school or LA.  Any descriptive text is allowed here.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="PublishInDirectory" minOccurs="0" nillable="true">
              <xs:annotation>
                <xs:documentation>Indicates whether or not this contact's information should be published in a directory of school or LA information.</xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="Yes" />
                  <xs:enumeration value="No" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
          </xs:sequence>
          <xs:attribute name="SIF_RefId" use="required" type="sif:IdRefType">
            <xs:annotation>
              <xs:documentation>The ID (GUID) of the person listed as a contact. Note that this is any person listed as a contact through either a ContactPersonal, WorkforcePersonal, or even a LearnerPersonal record.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SIF_RefObject" use="required">
            <xs:annotation>
              <xs:documentation>The object type being referred to. </xs:documentation>
            </xs:annotation>
            <xs:simpleType>
              <xs:restriction base="xs:token">
                <xs:enumeration value="WorkforcePersonal" />
                <xs:enumeration value="ContactPersonal" />
                <xs:enumeration value="LearnerPersonal" />
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ContactList" type="sif:ContactListType" />


  <!--Country-->

  <xs:simpleType name="CountryType">
    <xs:restriction base="sif:teachernetNationStatesAndCountriesType">
      <xs:annotation>
        <xs:documentation>The 3-character alphabetic country code defined by ISO 3166-1.  Given this code all other code and name information can be obtained directly from the standard.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="Country" type="sif:CountryType" />


  <!--Demographics-->

  <xs:complexType name="DemographicsType">
    <xs:annotation>
      <xs:documentation>Demographic information about a learner, contact, workforce member, etc. This element occurs within objects such as LearnerPersonal, LearnerContact, etc.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="EthnicityList" minOccurs="0" nillable="true" type="sif:EthnicityListType">
        <xs:annotation>
          <xs:documentation>A list of the person's ethnicities by proportion.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Gender" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>Person's gender.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="M">
              <xs:annotation>
                <xs:documentation>Male</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="F">
              <xs:annotation>
                <xs:documentation>Female</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="U">
              <xs:annotation>
                <xs:documentation>Unknown</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="W">
              <xs:annotation>
                <xs:documentation>Withheld</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="BirthDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>The person's date of birth.  Required for learners.  Optional for others.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="BirthDateVerification" minOccurs="0" nillable="true" type="sif:UKBirthDateVerificationLevelType">
        <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="CountyOfBirth" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The county in which the person was born.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CountryOfBirth" minOccurs="0" nillable="true" type="sif:CountryType">
        <xs:annotation>
          <xs:documentation>The individual'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" maxOccurs="unbounded" type="sif:CountryType">
              <xs:annotation>
                <xs:documentation>The country of legal nationality (i.e. the country which issued the individual's passport).</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" 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 UK.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EnglishProficiency" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="EALSteps" minOccurs="0" nillable="true">
              <xs:annotation>
                <xs:documentation>Based on QCA Steps. (England)</xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="S1">
                    <xs:annotation>
                      <xs:documentation>Step 1</xs:documentation>
                    </xs:annotation>
                  </xs:enumeration>
                  <xs:enumeration value="S2">
                    <xs:annotation>
                      <xs:documentation>Step 2</xs:documentation>
                    </xs:annotation>
                  </xs:enumeration>
                  <xs:enumeration value="1T">
                    <xs:annotation>
                      <xs:documentation>Level 1 Threshold</xs:documentation>
                    </xs:annotation>
                  </xs:enumeration>
                  <xs:enumeration value="1S">
                    <xs:annotation>
                      <xs:documentation>Level 1 Secure</xs:documentation>
                    </xs:annotation>
                  </xs:enumeration>
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
            <xs:element name="EALAcquisition" minOccurs="0" nillable="true">
              <xs:annotation>
                <xs:documentation>Based on a differing scale from QCA Steps. (Wales)</xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="A">
                    <xs:annotation>
                      <xs:documentation>New to English</xs:documentation>
                    </xs:annotation>
                  </xs:enumeration>
                  <xs:enumeration value="B">
                    <xs:annotation>
                      <xs:documentation>Early Acquisition</xs:documentation>
                    </xs:annotation>
                  </xs:enumeration>
                  <xs:enumeration value="C">
                    <xs:annotation>
                      <xs:documentation>Developing Competence</xs:documentation>
                    </xs:annotation>
                  </xs:enumeration>
                  <xs:enumeration value="D">
                    <xs:annotation>
                      <xs:documentation>Compentent</xs:documentation>
                    </xs:annotation>
                  </xs:enumeration>
                  <xs:enumeration value="E">
                    <xs:annotation>
                      <xs:documentation>Fluent</xs:documentation>
                    </xs:annotation>
                  </xs:enumeration>
                  <xs:enumeration value="0">
                    <xs:annotation>
                      <xs:documentation>Not applicable</xs:documentation>
                    </xs:annotation>
                  </xs:enumeration>
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="LanguageList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Language" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Code" type="sif:teachernetLanguagesType">
                    <xs:annotation>
                      <xs:documentation>This is the code that specifies the person's language.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="Fluent" minOccurs="0" nillable="true">
                    <xs:annotation>
                      <xs:documentation>Indicates that the person is fluent in this language.</xs:documentation>
                    </xs:annotation>
                    <xs:simpleType>
                      <xs:restriction base="xs:token">
                        <xs:enumeration value="Yes" />
                        <xs:enumeration value="No" />
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                  <xs:element name="TypeList">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="Type" maxOccurs="unbounded">
                          <xs:annotation>
                            <xs:documentation>A typification of the language. i.e. how is this language used?</xs:documentation>
                          </xs:annotation>
                          <xs:simpleType>
                            <xs:restriction base="xs:token">
                              <xs:enumeration value="C">
                                <xs:annotation>
                                  <xs:documentation>Correspondence Language</xs:documentation>
                                </xs:annotation>
                              </xs:enumeration>
                              <xs:enumeration value="F">
                                <xs:annotation>
                                  <xs:documentation>First Language</xs:documentation>
                                </xs:annotation>
                              </xs:enumeration>
                              <xs:enumeration value="M">
                                <xs:annotation>
                                  <xs:documentation>Multiple First Language</xs:documentation>
                                </xs:annotation>
                              </xs:enumeration>
                              <xs:enumeration value="H">
                                <xs:annotation>
                                  <xs:documentation>Home</xs:documentation>
                                </xs:annotation>
                              </xs:enumeration>
                              <xs:enumeration value="T">
                                <xs:annotation>
                                  <xs:documentation>Tuition</xs:documentation>
                                </xs:annotation>
                              </xs:enumeration>
                              <xs:enumeration value="S">
                                <xs:annotation>
                                  <xs:documentation>Second Language</xs:documentation>
                                </xs:annotation>
                              </xs:enumeration>
                            </xs:restriction>
                          </xs:simpleType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="Source" minOccurs="0" nillable="true" type="sif:UKSourceCodeType">
                    <xs:annotation>
                      <xs:documentation>Source of data on use of the specified language.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="Study" minOccurs="0" nillable="true" type="sif:UKLanguageStudyType">
                    <xs:annotation>
                      <xs:documentation>The level in which the learner is taught this language at school.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="StudyOther" minOccurs="0" nillable="true">
                    <xs:annotation>
                      <xs:documentation>Indicates whether the learner studies subjects in this language at school separate from studying the language itself.</xs:documentation>
                    </xs:annotation>
                    <xs:simpleType>
                      <xs:restriction base="xs:token">
                        <xs:enumeration value="Yes" />
                        <xs:enumeration value="No" />
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="MaritalStatus" minOccurs="0" nillable="true" type="sif:UKMaritalStatusType">
        <xs:annotation>
          <xs:documentation>The person's marital status.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="NonUKSystemImmigrant" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>Indicates the learner has recently arrived from a non-English or other common UK language system. (Wales)</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Yes" />
            <xs:enumeration value="No" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="Refugee" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>Indicates the person's refugee/asylum seeker status as defined by the United Nations (Article 1 of the 1951 Refugee Convention).</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Yes" />
            <xs:enumeration value="No" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="Religion" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="AffiliationCode" type="sif:UKReligiousAffiliationType">
              <xs:annotation>
                <xs:documentation>Person's religious faith.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="EducationStatus" minOccurs="0" nillable="true">
              <xs:annotation>
                <xs:documentation>Indicates whether the person is actively attending religious education classes.</xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="A">
                    <xs:annotation>
                      <xs:documentation>Attends</xs:documentation>
                    </xs:annotation>
                  </xs:enumeration>
                  <xs:enumeration value="W">
                    <xs:annotation>
                      <xs:documentation>Withdrawn</xs:documentation>
                    </xs:annotation>
                  </xs:enumeration>
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
            <xs:element name="CollectiveWorshipStatus" minOccurs="0" nillable="true">
              <xs:annotation>
                <xs:documentation>Indicates whether the person is participating in religious collective worship.</xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="A">
                    <xs:annotation>
                      <xs:documentation>Attends</xs:documentation>
                    </xs:annotation>
                  </xs:enumeration>
                  <xs:enumeration value="W">
                    <xs:annotation>
                      <xs:documentation>Withdrawn</xs:documentation>
                    </xs:annotation>
                  </xs:enumeration>
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
            <xs:element name="Source" minOccurs="0" nillable="true" type="sif:UKSourceCodeType">
              <xs:annotation>
                <xs:documentation>Source of person's religious affiliation code.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Traveller" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Code" type="sif:UKTravellerGypsyCodeType">
              <xs:annotation>
                <xs:documentation>Code to identify type of traveller/gypsy.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="Source" type="sif:UKSourceCodeType">
              <xs:annotation>
                <xs:documentation>Source of individual's recorded traveller/gypsy code.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="Demographics" type="sif:DemographicsType" />


  <!--Email-->

  <xs:complexType name="EmailType">
    <xs:annotation>
      <xs:documentation>This element represents an e-mail address of one of a number of types.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="xs:normalizedString">
        <xs:attribute name="Type" use="required">
          <xs:annotation>
            <xs:documentation>This attribute specifies the type of e-mail address.</xs:documentation>
          </xs:annotation>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="Business" />
              <xs:enumeration value="Personal" />
              <xs:enumeration value="School" />
              <xs:enumeration value="Alternate1" />
              <xs:enumeration value="Alternate2" />
              <xs:enumeration value="Alternate3" />
              <xs:enumeration value="Alternate4" />
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:element name="Email" type="sif:EmailType" />


  <!--EmailList-->

  <xs:complexType name="EmailListType">
    <xs:annotation>
      <xs:documentation>A list of e-mail addresses associated with an individual.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Email" 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:key name="EmailListKey1">
      <xs:selector xpath="./sif:Email" />
      <xs:field xpath="@Type" />
    </xs:key>
  </xs:element>


  <!--EstablishmentId-->

  <xs:simpleType name="EstablishmentIdType">
    <xs:restriction base="xs:token">
      <xs:annotation>
        <xs:documentation>The DfES assigned identifier for a school or other educational establishment.  The list of all known Establishment ID's is extensive and available online.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="EstablishmentId" type="sif:EstablishmentIdType" />


  <!--EthnicityList-->

  <xs:complexType name="EthnicityListType">
    <xs:sequence>
      <xs:element name="Ethnicity" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Code" type="sif:teachernetEthnicityCodeType">
              <xs:annotation>
                <xs:documentation>The general ethnic category which reflects the individual's recognition of his or her community or with which the individual most identifies.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="Source" type="sif:UKSourceCodeType">
              <xs:annotation>
                <xs:documentation>Source of inidividual's recorded ethnic code.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="EthnicityList" type="sif:EthnicityListType" />


  <!--GridLocation-->

  <xs:complexType name="GridLocationType">
    <xs:annotation>
      <xs:documentation>This element contains a map location. The GridLocation element is utilised within other objects and elements.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="PropertyEasting" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>Easting coordinate format.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PropertyNorthing" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>Northing coordinate for mapping an address. Required when PropertyEasting
is also specified. This is best represented in a 7.1 format.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Latitude" minOccurs="0" nillable="true" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>Geographical coordinate.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Longitude" minOccurs="0" nillable="true" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>Geographical coordinate. Required when Latitude is also specified.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="GridLocation" type="sif:GridLocationType" />


  <!--LAId-->

  <xs:simpleType name="LAIdType">
    <xs:restriction base="sif:teachernetLAIdType">
      <xs:annotation>
        <xs:documentation>The 3-digit number assigned to the LA by the DfES.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="LAId" type="sif:LAIdType" />


  <!--LAName-->

  <xs:simpleType name="LANameType">
    <xs:restriction base="sif:teachernetLANameType">
      <xs:annotation>
        <xs:documentation>The official name of the LA.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="LAName" type="sif:LANameType" />


  <!--LocationContext-->

  <xs:complexType name="LocationContextType">
    <xs:annotation>
      <xs:documentation>The physical location of an address in terms of Census District, LA Electoral Ward, Parliamentary Constituency, and other defining location-centric characteristics.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="CensusDistrict" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>National Population Census Enumeration District.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="WardCode" type="sif:ONSWardCodeType">
        <xs:annotation>
          <xs:documentation>ONS Ward Code</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="WardName" type="sif:ONSWardNameType">
        <xs:annotation>
          <xs:documentation>ONS Ward Name</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ConstituencyCode" minOccurs="0" nillable="true" type="sif:ONSParliamentaryConstituencyCodeType">
        <xs:annotation>
          <xs:documentation>ONS Parliamentary Constituency Code</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ConstituencyName" minOccurs="0" nillable="true" type="sif:ONSParliamentaryConstituencyNameType">
        <xs:annotation>
          <xs:documentation>ONS Parliamentary Constituency Name</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Parish" minOccurs="0" nillable="true" type="sif:ONSParishCouncilNameType">
        <xs:annotation>
          <xs:documentation>ONS Parish Council Name</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ChurchOfEnglandDiocese" minOccurs="0" nillable="true" type="sif:teachernetChurchOfEnglandDioceseType">
        <xs:annotation>
          <xs:documentation>Church of England Diocese Code</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ChurchOfEnglandParish" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Church of England Parish Code</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="RomanCatholicDiocese" minOccurs="0" nillable="true" type="sif:teachernetRomanCatholicDioceseType">
        <xs:annotation>
          <xs:documentation>Roman Catholic Diocese Code</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="RomanCatholicParish" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Roman Catholic Parish</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LSCouncilCode" minOccurs="0" nillable="true" type="sif:teachernetLearningAndSkillsCouncilAreaCodeType">
        <xs:annotation>
          <xs:documentation>Learning and Skills Council area code</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CatchmentArea" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>School catchment area description</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="LocationContext" type="sif:LocationContextType" />


  <!--Name-->

  <xs:complexType name="NameType">
    <xs:annotation>
      <xs:documentation>The Name element defines name information for a person and occurs within the PersonalInformation element.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Title" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>A title or prefix associated with the name.  If any of: Mr, Mrs, Ms, Miss, Rev, Fr, Dr, Prof, Hon, Sir, Lord, Lady - these must be as shown, otherwise free text.  Note that title is not applicable to learners.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="FamilyName" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Full legal family name. That part of the person's name which is used to describe family, clan, tribal group, or marital association.  Note that this element is always required.  However, when associated with a contact it may not be possible to know the family name in which case you should add the available information to the FullName element.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="GivenName" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Full given name (forename) of the person.  Note that this element is always required.  However, when associated with a contact it may not be possible to know the given name in which case you should add the available information to the FullName element.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="MiddleNames" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>All other given or middle names, each separated with a single space character.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="FamilyNameFirst" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>An indicator used to identify the naming conventions used by some predominantly non-European, ethnic or language groups and related to the display nature of a name.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Yes" />
            <xs:enumeration value="No" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="PreferredFamilyName" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The family name preferred most by the person (as written).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PreferredFamilyNameFirst" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>An indicator used to identify the naming conventions used by some predominantly non-European, ethnic or language groups and related to the display nature of a name.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Yes" />
            <xs:enumeration value="No" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="PreferredGivenName" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The given name preferred most by the person (as written).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Suffix" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Textual suffix like PHD, JP, BSc.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="FullName" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>A free text field for the complete name for display purposes. If this is associated with a ContactPersonal record and the FamilyName and GivenName are not both specified, then this becomes mandatory.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="Type" use="required">
      <xs:annotation>
        <xs:documentation>Code that specifies what type of name this is.</xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="B">
            <xs:annotation>
              <xs:documentation>Birth name</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="C">
            <xs:annotation>
              <xs:documentation>Current Legal name</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="A">
            <xs:annotation>
              <xs:documentation>Alias / Alternative</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="R">
            <xs:annotation>
              <xs:documentation>Name of Record</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="F">
            <xs:annotation>
              <xs:documentation>Former Name</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="M">
            <xs:annotation>
              <xs:documentation>Married Name</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="P">
            <xs:annotation>
              <xs:documentation>Professional Name</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="Name" type="sif:NameType" />


  <!--NCYearGroup-->

  <xs:simpleType name="NCYearGroupType">
    <xs:restriction base="sif:UKNCYearGroupType">
      <xs:annotation>
        <xs:documentation>Code representing a National Curriculum Year Group.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="NCYearGroup" type="sif:NCYearGroupType" />


  <!--NCYearGroupList-->

  <xs:complexType name="NCYearGroupListType">
    <xs:annotation>
      <xs:documentation>This is a common element used to specify a collection of supported National Curriculum Year Groups. It is used in SchoolInfo and assessment-related objects.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:NCYearGroup" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="NCYearGroupList" type="sif:NCYearGroupListType" />


  <!--PersonalInformation-->

  <xs:complexType name="PersonalInformationType">
    <xs:annotation>
      <xs:documentation>This element contains basic personal and demographic information related to a person.  This element is part of all "personal" objects, including LearnerPersonal, WorkforcePersonal, and ContactPersonal.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:Name" />
      <xs:element name="OtherNames" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="sif:Name" maxOccurs="unbounded" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Demographics" minOccurs="0" nillable="true" type="sif:DemographicsType">
        <xs:annotation>
          <xs:documentation>This element contains demographic data.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Email" minOccurs="0" nillable="true" type="sif:EmailType">
        <xs:annotation>
          <xs:documentation>The person's preferred e-mail address.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="OtherEmailList" minOccurs="0" nillable="true" type="sif:EmailListType">
        <xs:annotation>
          <xs:documentation>The person's other e-mail address(es).</xs:documentation>
        </xs:annotation>
        <xs:key name="EmailListKey2">
          <xs:selector xpath="./sif:Email" />
          <xs:field xpath="@Type" />
        </xs:key>
      </xs:element>
      <xs:element name="Address" minOccurs="0" nillable="true" type="sif:AddressType">
        <xs:annotation>
          <xs:documentation>The person's current physical address.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="OtherAddressList" minOccurs="0" nillable="true" type="sif:AddressListType">
        <xs:annotation>
          <xs:documentation>The person's other address(es).</xs:documentation>
        </xs:annotation>
        <xs:key name="AddressListKey2">
          <xs:selector xpath="./sif:Address" />
          <xs:field xpath="@Type" />
        </xs:key>
      </xs:element>
      <xs:element name="PhoneNumber" minOccurs="0" nillable="true" type="sif:PhoneNumberType">
        <xs:annotation>
          <xs:documentation>The person's preferred phone number.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="OtherPhoneNumberList" minOccurs="0" nillable="true" type="sif:PhoneNumberListType">
        <xs:annotation>
          <xs:documentation>The person's other phone number(s).</xs:documentation>
        </xs:annotation>
        <xs:key name="PhoneNumberListKey1">
          <xs:selector xpath="./sif:PhoneNumber" />
          <xs:field xpath="@Type" />
        </xs:key>
      </xs:element>
      <xs:element name="ElectronicIdList" minOccurs="0" nillable="true" type="sif:ElectronicIdListType">
        <xs:annotation>
          <xs:documentation>Electronic identifier(s) associated with this person.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="OtherIdList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="OtherId" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation>An "other" identifier associated with this person.</xs:documentation>
              </xs:annotation>
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:normalizedString">
                    <xs:attribute name="Type" use="required" type="xs:normalizedString">
                      <xs:annotation>
                        <xs:documentation>Text that describes the type of this other ID.</xs:documentation>
                      </xs:annotation>
                    </xs:attribute>
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="PersonalInformation" type="sif:PersonalInformationType" />


  <!--PhoneNumber-->

  <xs:complexType name="PhoneNumberType">
    <xs:annotation>
      <xs:documentation>This element represents a phone number and occurs within objects such as LearnerPersonal, WorkforcePersonal, etc.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Number">
        <xs:simpleType>
          <xs:restriction base="xs:normalizedString">
            <xs:annotation>
              <xs:documentation>Phone number. Validation:  0-9 and a leading '+' (for international calls).</xs:documentation>
            </xs:annotation>
            <xs:pattern value="[+]?[0-9]+" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </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">
        <xs:annotation>
          <xs:documentation>Indicates whether or not the phone number is available to the public.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Listed" />
            <xs:enumeration value="Unlisted" />
            <xs:enumeration value="Unknown" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="Type" use="required" type="sif:UKPhoneTypeType">
      <xs:annotation>
        <xs:documentation>Code that specifies the phone number type.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="PhoneNumber" type="sif:PhoneNumberType" />


  <!--PhoneNumberList-->

  <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" 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:key name="PhoneNumberListKey2">
      <xs:selector xpath="./sif:PhoneNumber" />
      <xs:field xpath="@Type" />
    </xs:key>
  </xs:element>


  <!--SchoolURN-->

  <xs:simpleType name="SchoolURNType">
    <xs:restriction base="sif:EstablishmentIdType">
      <xs:annotation>
        <xs:documentation>The alternate DfES assigned identifier for a school or other educational establishment.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="SchoolURN" type="sif:SchoolURNType" />


  <!--SubjectAreaList-->

  <xs:complexType name="SubjectAreaListType">
    <xs:annotation>
      <xs:documentation>A list of subject areas.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SubjectArea" maxOccurs="unbounded" type="sif:UKGeneralSubjectType">
        <xs:annotation>
          <xs:documentation>Subject matter.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SubjectAreaList" type="sif:SubjectAreaListType" />


  <!--DataModelTaskForce-->


  <!--SIF_Metadata-->

  <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="RightsElements" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="sif:RightsElement" minOccurs="0" maxOccurs="unbounded" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Metadata" type="sif:SIF_MetadataType" />


  <!--TimeElement-->

  <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" 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" 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" 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" 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" type="xs:normalizedString" />
                  <xs:element name="Code" type="xs:token" />
                  <xs:element name="Name" type="xs:normalizedString" />
                  <xs:element name="Value" 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" 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" />


  <!--LifeCycle-->

  <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" type="xs:dateTime" />
            <xs:element name="Creators" minOccurs="0" nillable="true">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Creator" maxOccurs="unbounded">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="Name" 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" 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" 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" 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" />


  <!--RightsElement-->

  <xs:complexType name="RightsElementType">
    <xs:annotation>
      <xs:documentation>
								A common metadata element designed to carry any intellectual property or copyright information, based on the IEEE LOM Rights element [LOM].
							</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Cost" minOccurs="0" nillable="true" type="xs:boolean" />
      <xs:element name="FeesForUse" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="FeeForUse" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="UseType" type="xs:string">
                    <xs:annotation>
                      <xs:documentation>
							A description of the fee structure for this resource.
							Some resources may be licensed differently depending upon their context.
							For example, a content provider might charge one fee structure for resources used in the classroom and a separate fee for those
							resources available to parents from home.
						</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="MeteringType" type="xs:token" />
                  <xs:element name="MeteringURL" minOccurs="0" nillable="true" type="xs:anyURI" />
                  <xs:element name="PerUseCharge" minOccurs="0" nillable="true" type="sif:MonetaryAmountType" />
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="CopyrightStatement" minOccurs="0" nillable="true" type="xs:string" />
      <xs:element name="TermsOfUse" minOccurs="0" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="RightsElement" type="sif:RightsElementType" />


  <!--SIFUK-->


  <!--AssessmentResultComponent-->

  <xs:complexType name="AssessmentResultComponentType">
    <xs:annotation>
      <xs:documentation>A psychological construct measured by the assessment. Operationally, an assessment component or subtest is a class of scores within an assessment that might collectively represent a column within a mark book. Some assessments may consist of only one component, aspect or subtest although it is more common for assessments to have several.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Name" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The name used to identify this component or aspect.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LocalId" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The identifier used within the publishing application.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ShortDescription" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Shorter description used for column headers in marksheets, etc.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Description" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Longer text describing features of the component.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="YearList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Year" maxOccurs="unbounded" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>A year with which the component grouping is applicable (by convention this is the end year of an academic year eg: 2007/8  resolves to 2008).</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="AssessmentSubjectList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Subject" maxOccurs="unbounded" type="sif:UKAssessmentSubjectType">
              <xs:annotation>
                <xs:documentation>A subject area associated with this assessment component or aspect.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="StageList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Stage" maxOccurs="unbounded" type="sif:UKAssessmentStageType">
              <xs:annotation>
                <xs:documentation>The assessed stage (this may well be a Keystage List, but there is no reason why it couldn’t be used for other concepts such as NcYear applicability, Level  Exam Level GCSE, A-Level etc.).</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="AssessmentResultGradeSetRefId" minOccurs="0" nillable="true" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>The gradeset associated with the component or aspect.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="MarkSetList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="MarkSet" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="StartDate" minOccurs="0" nillable="true" type="xs:date">
                    <xs:annotation>
                      <xs:documentation>Start date of the range validity - ranges should not overlap. If not supplied then assumed to have always been valid in the past.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="EndDate" minOccurs="0" nillable="true" type="xs:date">
                    <xs:annotation>
                      <xs:documentation>End date of the range validity - ranges should not overlap.  If not supplied then assumed to always will be valid in the future.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="MinValue" type="xs:decimal">
                    <xs:annotation>
                      <xs:documentation>The minimum value in the range of marks.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="MaxValue" type="xs:decimal">
                    <xs:annotation>
                      <xs:documentation>The maximum value in the range of marks.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="ComponentType">
        <xs:annotation>
          <xs:documentation>Defines the associated result format.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Comment" />
            <xs:enumeration value="Grade" />
            <xs:enumeration value="Mark" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="ResultQualifier" type="sif:UKAssessmentResultQualifierType">
        <xs:annotation>
          <xs:documentation>Defines the format or type of result(s) awarded.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AssessmentMethod" type="sif:UKAssessmentMethodType">
        <xs:annotation>
          <xs:documentation>The method or format of the Assessment.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SupplierName" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The supplier/originator/designer/owner of the aspect.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType">
        <xs:key name="SIF_ExtendedElementsKey2">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:key>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) of this aspect or subtest.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="AssessmentResultComponent" type="sif:AssessmentResultComponentType">
    <xs:key name="AssessmentResultComponentKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--AssessmentResultComponentGroup-->

  <xs:complexType name="AssessmentResultComponentGroupType">
    <xs:annotation>
      <xs:documentation>High level container describing an assessment or test or common goal.  Each component group contains one or more components, also known as subtests, aspects, or sub-assessments.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Name" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Name of the assessment/test/goal.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LocalId" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The identifier used for this entity within the publishing application.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SupplierName" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The supplier/originator/designer/owner of the described component grouping.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ComponentList">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="AssessmentResultComponentRefId" maxOccurs="unbounded" type="sif:IdRefType">
              <xs:annotation>
                <xs:documentation>A SIF identifier for an assessment result component.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType">
        <xs:key name="SIF_ExtendedElementsKey3">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:key>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) that uniquely identifies a component group.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="AssessmentResultComponentGroup" type="sif:AssessmentResultComponentGroupType">
    <xs:key name="AssessmentResultComponentGroupKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--AssessmentResultGradeSet-->

  <xs:complexType name="AssessmentResultGradeSetType">
    <xs:annotation>
      <xs:documentation>Represents a range of valid grades (over time) for a result.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="LocalId" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The locally assigned identifier for this grade set.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Name" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The descriptive identifier for the grade set.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Notes" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Explanatory/usage notes for grade set.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SupplierName" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The supplier/originator/designer/owner of the gradeset.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="GradeSets">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="GradeSet" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="StartDate" type="xs:date">
                    <xs:annotation>
                      <xs:documentation>The start date from which this version is valid.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="EndDate" minOccurs="0" nillable="true" type="xs:date">
                    <xs:annotation>
                      <xs:documentation>The end date until which this version is valid.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="Grades">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="Grade" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="Title" type="xs:normalizedString">
                                <xs:annotation>
                                  <xs:documentation>The visual representation of the grade.</xs:documentation>
                                </xs:annotation>
                              </xs:element>
                              <xs:element name="Description" type="xs:normalizedString">
                                <xs:annotation>
                                  <xs:documentation>The meaning of the grade.</xs:documentation>
                                </xs:annotation>
                              </xs:element>
                              <xs:element name="RankOrder" type="xs:unsignedInt">
                                <xs:annotation>
                                  <xs:documentation>The rank position of the grade within the set where the highest value is assumed to be the best. While duplicate ranks are allowed they are discouraged.</xs:documentation>
                                </xs:annotation>
                              </xs:element>
                              <xs:element name="NumericValue" type="xs:decimal">
                                <xs:annotation>
                                  <xs:documentation>The numeric equivalent value of the grade.</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:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType">
        <xs:key name="SIF_ExtendedElementsKey4">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:key>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) of this grade set.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="AssessmentResultGradeSet" type="sif:AssessmentResultGradeSetType">
    <xs:key name="AssessmentResultGradeSetKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--AssessmentLearnerSet-->

  <xs:complexType name="AssessmentLearnerSetType">
    <xs:annotation>
      <xs:documentation>This object describes learners assigned to take an assessment or component grouping (can represent a markbook, exam entry, or an cohort objective).</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="CreationDateTime" type="xs:dateTime">
        <xs:annotation>
          <xs:documentation>Date/time assignment is created.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LocalId" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Value supplied by publishing vendor/supplier.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LearnerList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="LearnerPersonalRefId" maxOccurs="unbounded" type="sif:IdRefType">
              <xs:annotation>
                <xs:documentation>The ID (GUID) of a learner assigned to take an assessment.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SchoolGroupRefId" minOccurs="0" nillable="true" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>Optional reference to the class group(s) to which this will be/are drawn.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="WorkforcePersonalRefId" minOccurs="0" nillable="true" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>The ID (GUID) that uniquely identifies the teacher or staff member who created the learner set.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType">
        <xs:key name="SIF_ExtendedElementsKey5">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:key>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) that uniquely identifies an instance of this object.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="AssessmentResultComponentGroupRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The assessment result component group (test or assessment) associated with the set of listed learners.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="AssessmentLearnerSet" type="sif:AssessmentLearnerSetType">
    <xs:key name="AssessmentLearnerSetKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--AssessmentSession-->

  <xs:complexType name="AssessmentSessionType">
    <xs:annotation>
      <xs:documentation>A session is an event where an activity is performed by or on a learner set which contributes to the attainment of the objective. Occurs at a place and time (e.g., a test is taken, assignments are handed in, a test is marked).</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SessionDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>The date at which the activity takes place.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolInfoRefId" minOccurs="0" nillable="true" />
      <xs:element name="Activity" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>The activity which takes place.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Test" />
            <xs:enumeration value="Homework" />
            <xs:enumeration value="Exam" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="Status" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>The current status of the session.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Planned" />
            <xs:enumeration value="Complete" />
            <xs:enumeration value="Published" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="StaffList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="WorkforcePersonalRefId" maxOccurs="unbounded" type="sif:IdRefType">
              <xs:annotation>
                <xs:documentation>The GUID that uniquely identifies a teacher or other staff member responsible for administering or assisting the learner with this assessment.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType">
        <xs:key name="SIF_ExtendedElementsKey6">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:key>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) of this session.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="AssessmentLearnerSetRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) of the set of people the session refers to.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="AssessmentSession" type="sif:AssessmentSessionType">
    <xs:key name="AssessmentSessionKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--AssessmentResponseComponentGroup-->

  <xs:complexType name="AssessmentResponseComponentGroupType">
    <xs:annotation>
      <xs:documentation>High level container describing components of the actual assessment or test paper/quiz taken by the learner. A response component group contains one or more components.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Name" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Name of the assessment/test/taken.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LocalId" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The identifier used for this entity within the publishing application.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SupplierName" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The supplier/originator/designer/owner of the described component grouping.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ComponentList">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="AssessmentResponseComponentRefId" maxOccurs="unbounded" type="sif:IdRefType">
              <xs:annotation>
                <xs:documentation>The SIF identifier for an assessment response component.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType">
        <xs:key name="SIF_ExtendedElementsKey7">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:key>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) that uniquely identifies an instance of this object.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="AssessmentSessionRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) of the assessment session in which the responses were collected.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="AssessmentResponseComponentGroup" type="sif:AssessmentResponseComponentGroupType">
    <xs:key name="AssessmentResponseComponentGroupKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--LearnerAssessmentResult-->

  <xs:complexType name="LearnerAssessmentResultType">
    <xs:annotation>
      <xs:documentation>A single result for a learner.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SchoolInfoRefId" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>The school at which the assessment was taken.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AchievementDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>The date the results were achieved.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Result" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>A grade title, a comment, or a mark (dependent on ComponentType of associated aspect). Marks and grades should be valid in the grade set or mark set on the date the assessment was achieved.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ResultStatus" type="sif:UKAssessmentResultStatusType">
        <xs:annotation>
          <xs:documentation>Indicates whether the result is estimated, an interim result, provisional, actual result or a target.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AssessmentSessionList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="AssessmentSessionRefId" maxOccurs="unbounded" type="sif:IdRefType">
              <xs:annotation>
                <xs:documentation>The ID (GUID) that uniquely identifies the session associated with the result.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType">
        <xs:annotation>
          <xs:documentation>Use extended elements to define additional information to be preserved with this result data including any learner demographic data known to be valid at the time of assessment and not otherwise specified.</xs:documentation>
        </xs:annotation>
        <xs:key name="SIF_ExtendedElementsKey8">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:key>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) of this result.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="AssessmentComponentRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The assessment component that the result is for.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="LearnerPersonalRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) of the learner achieving the results.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="LearnerAssessmentResult" type="sif:LearnerAssessmentResultType">
    <xs:key name="LearnerAssessmentResultKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--LearnerAssessmentResponseSet-->

  <xs:complexType name="LearnerAssessmentResponseSetType">
    <xs:annotation>
      <xs:documentation>The set of all responses provided by a learner while taking an assessment. This information represents the raw input data that is then evaluated to produce one or more scores, marks, or grades for the learner.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Items">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Item" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Response" type="xs:string">
                    <xs:annotation>
                      <xs:documentation>Learner selection or response in raw format.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="ResponseStatus" minOccurs="0" nillable="true">
                    <xs:annotation>
                      <xs:documentation>Status of the response.</xs:documentation>
                    </xs:annotation>
                    <xs:simpleType>
                      <xs:restriction base="xs:token">
                        <xs:enumeration value="Correct" />
                        <xs:enumeration value="Incorrect" />
                        <xs:enumeration value="Complete" />
                        <xs:enumeration value="PartiallyComplete" />
                        <xs:enumeration value="Viewed" />
                        <xs:enumeration value="NotViewed" />
                        <xs:enumeration value="NotAnswered" />
                        <xs:enumeration value="Attempted (viewed but no response given)" />
                        <xs:enumeration value="Incomplete" />
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                  <xs:element name="ResponseTime" minOccurs="0" nillable="true" type="xs:duration">
                    <xs:annotation>
                      <xs:documentation>The length of time the learner took to respond.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="Mark" minOccurs="0" nillable="true" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>The mark achieved for this item as evaluated by the assessment tool at the time of assessment.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="Group" minOccurs="0" nillable="true" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>The item group within the assessment.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="ItemName" minOccurs="0" nillable="true" type="xs:token">
                    <xs:annotation>
                      <xs:documentation>Identifies the item on the assessment by name.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="ItemNumber" minOccurs="0" nillable="true" type="xs:token">
                    <xs:annotation>
                      <xs:documentation>Identifies the item by number on the assessment.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="OrderAsked" minOccurs="0" nillable="true" type="xs:decimal">
                    <xs:annotation>
                      <xs:documentation>The order in which the item was asked.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="NumberOfAttempts" minOccurs="0" nillable="true" type="xs:unsignedInt">
                    <xs:annotation>
                      <xs:documentation>The number of times a learner changes their answer or attempts a response.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType">
        <xs:key name="SIF_ExtendedElementsKey9">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:key>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) that uniquely identifies this response set.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="AssessmentResponseComponentRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) of the assessment response component that the responses are associated with</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="LearnerPersonalRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) of the Learner for whom these responses are.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="LearnerAssessmentResponseSet" type="sif:LearnerAssessmentResponseSetType">
    <xs:key name="LearnerAssessmentResponseSetKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--AssessmentResponseComponent-->

  <xs:complexType name="AssessmentResponseComponentType">
    <xs:annotation>
      <xs:documentation>This object describes a single component of the assessment or test paper/quiz taken by a learner. A response component has one or more responses.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Name" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The identifier used within the publishing application.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LocalId" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Optional reference to the school associated with the administration.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SupplierName" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The supplier/originator/designer/owner of the described component.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Description" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Longer text describing features of the component.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="YearList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Year" maxOccurs="unbounded" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>A year with which the component grouping is applicable (by convention this is the end year of an academic year eg: 2007/8 resolves to 2008).</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType">
        <xs:key name="SIF_ExtendedElementsKey10">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:key>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The GUID that uniquely identifies an instance of this object.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="AssessmentResponseComponent" type="sif:AssessmentResponseComponentType">
    <xs:key name="AssessmentResponseComponentKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--LearnerAttendance-->

  <xs:complexType name="LearnerAttendanceType">
    <xs:annotation>
      <xs:documentation>This object provides attendance information for a particular learner in a particular school for a particular period of time. The time can be specified as before, during, or after school and may be for any period of time, including lessons.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="AttendanceDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>The date of the attendance period.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TimeIn" minOccurs="0" nillable="true" type="xs:time">
        <xs:annotation>
          <xs:documentation>The time when the learner began the attendance period.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StartTime" minOccurs="0" nillable="true" type="xs:time">
        <xs:annotation>
          <xs:documentation>The time the attendance period started. StartTime is required when this object represents a lesson</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="FinishTime" minOccurs="0" nillable="true" type="xs:time">
        <xs:annotation>
          <xs:documentation>The time the attendance period finished.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Session" minOccurs="0" nillable="true" type="sif:UKAttendanceSessionType">
        <xs:annotation>
          <xs:documentation>The session within which this attendance mark applies (e.g. AM/PM).  Session is required when StartTime is not specified and the object refers to a session attendance mark (i.e. AttendanceDomain is session).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SessionLabel" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>A label associated with the session to further describe the session, when applicable.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AttendanceDomain" type="sif:UKAttendanceDomainType">
        <xs:annotation>
          <xs:documentation>The attendance type.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AttendanceCode" type="sif:UKAttendanceCodeType">
        <xs:annotation>
          <xs:documentation>The attendance mark/code.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AttendanceNote" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Additional comments. Required when record is specified as a correction.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="RecordTimestamp" minOccurs="0" nillable="true" type="xs:dateTime">
        <xs:annotation>
          <xs:documentation>The date/time when recorded. When more than one record exists using the same RefId, the record with the latest timestamp is assumed to be the most current. This is possible when a record is republished due to corrections.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="InputSource" type="sif:UKAttendanceSourceType">
        <xs:annotation>
          <xs:documentation>The source of the attendance record data.  Could be Workforce member, biometric device, or other.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="WorkforcePersonalRefId" minOccurs="0" nillable="true" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>The ID (GUID) of the staff member responsible for recording this attendance information.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolGroupRefId" minOccurs="0" nillable="true" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>The ID (GUID) of the group that this attendance applies to. Useful when the attendance period corresponds to a lesson time.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType">
        <xs:key name="SIF_ExtendedElementsKey11">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:key>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) assigned to uniquely identify this attendance record.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="LearnerPersonalRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) of the learner for which this attendance mark is recorded.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="SchoolInfoRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The school where the attendance mark was taken.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="LearnerAttendance" type="sif:LearnerAttendanceType">
    <xs:key name="LearnerAttendanceKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--Identity-->

  <xs:complexType name="IdentityType">
    <xs:annotation>
      <xs:documentation>This object allows a system that stores network identities and/or passwords to share them with other applications through SIF. The provider of the Identity object may only support providing an identity or a password, or it may support both.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SIF_RefId">
        <xs:complexType>
          <xs:annotation>
            <xs:documentation>The SIF RefId of a LearnerPersonal, WorkforcePersonal, or ContactPersonal object.</xs:documentation>
          </xs:annotation>
          <xs:simpleContent>
            <xs:extension base="sif:IdRefType">
              <xs:attribute name="SIF_RefObject" use="required">
                <xs:annotation>
                  <xs:documentation>The type of SIF object that the SIF_RefId attribute identifies.</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="LearnerPersonal" />
                    <xs:enumeration value="WorkforcePersonal" />
                    <xs:enumeration value="ContactPersonal" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="AuthenticationSource">
        <xs:annotation>
          <xs:documentation>The type of source system that produced this Identityobject.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="UKAccessShibboleth" />
            <xs:enumeration value="MSActiveDirectory" />
            <xs:enumeration value="NovellNDS" />
            <xs:enumeration value="OpenDirectory" />
            <xs:enumeration value="Other" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="IdentityAssertions" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="IdentityAssertion" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation>The identification string for this user.</xs:documentation>
              </xs:annotation>
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:normalizedString">
                    <xs:attribute name="SchemaName" use="required" type="xs:normalizedString">
                      <xs:annotation>
                        <xs:documentation>The name of the field.</xs:documentation>
                      </xs:annotation>
                    </xs:attribute>
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
        <xs:key name="IdentityAssertionsKey1">
          <xs:selector xpath="./sif:IdentityAssertion" />
          <xs:field xpath="@SchemaName" />
        </xs:key>
      </xs:element>
      <xs:element name="PasswordList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Password" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation>A representation of the user's password using the given algorithm.</xs:documentation>
              </xs:annotation>
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:base64Binary">
                    <xs:attribute name="Algorithm" use="required">
                      <xs:annotation>
                        <xs:documentation>The method used to encrypt the user's password. See the implementation details below.</xs:documentation>
                      </xs:annotation>
                      <xs:simpleType>
                        <xs:restriction base="xs:token">
                          <xs:enumeration value="MD5" />
                          <xs:enumeration value="SHA1" />
                          <xs:enumeration value="DES" />
                          <xs:enumeration value="TripleDES" />
                          <xs:enumeration value="RC2" />
                          <xs:enumeration value="AES" />
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:attribute>
                    <xs:attribute name="KeyName" use="required" type="xs:normalizedString">
                      <xs:annotation>
                        <xs:documentation>The name of the key to be used for decryption of the password. Left blank for hash algorithms (MD5 and SHA1).</xs:documentation>
                      </xs:annotation>
                    </xs:attribute>
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType">
        <xs:key name="SIF_ExtendedElementsKey12">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:key>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The SIF RefId that uniquely identifies this object.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="Identity" type="sif:IdentityType">
    <xs:key name="IdentityKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--ContactPersonal-->

  <xs:complexType name="ContactPersonalType">
    <xs:annotation>
      <xs:documentation>This object describes any person created as a contact at a school, LEA, or other institution, or associated with a Learner or other Workforce person.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:PersonalInformation" />
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType">
        <xs:key name="SIF_ExtendedElementsKey13">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:key>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) of a person referenced as a contact. Note that this GUID may be the same GUID assigned to a LearnerPersonal and/or WorkforcePersonal object record.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="ContactPersonal" type="sif:ContactPersonalType">
    <xs:key name="ContactPersonalKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--LAInfo-->

  <xs:complexType name="LAInfoType">
    <xs:annotation>
      <xs:documentation>This object contains information about a Local Authority (LA).  Compare with US/Canada object: </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:LAId" />
      <xs:element ref="sif:LAName" />
      <xs:element name="LAFullName" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The LA's full name.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LAURL" minOccurs="0" nillable="true" type="xs:anyURI">
        <xs:annotation>
          <xs:documentation>URL for the main LA website.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LAAddress" minOccurs="0" nillable="true" type="sif:AddressType">
        <xs:annotation>
          <xs:documentation>The LA's main address information.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AddressList" minOccurs="0" nillable="true" type="sif:AddressListType">
        <xs:annotation>
          <xs:documentation>A list of the LA's other addresses, if any.</xs:documentation>
        </xs:annotation>
        <xs:key name="AddressListKey3">
          <xs:selector xpath="./sif:Address" />
          <xs:field xpath="@Type" />
        </xs:key>
      </xs:element>
      <xs:element name="LAPhoneNumber" minOccurs="0" nillable="true" type="sif:PhoneNumberType">
        <xs:annotation>
          <xs:documentation>The LA's primary phone number.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PhoneNumberList" minOccurs="0" nillable="true" type="sif:PhoneNumberListType">
        <xs:annotation>
          <xs:documentation>A list of the LA's other phone number(s).</xs:documentation>
        </xs:annotation>
        <xs:key name="PhoneNumberListKey3">
          <xs:selector xpath="./sif:PhoneNumber" />
          <xs:field xpath="@Type" />
        </xs:key>
      </xs:element>
      <xs:element name="LAContactList" minOccurs="0" nillable="true" type="sif:ContactListType">
        <xs:annotation>
          <xs:documentation>A list of contacts within the LA.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType">
        <xs:key name="SIF_ExtendedElementsKey14">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:key>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The GUID of the LA whose information this is.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="LAInfo" type="sif:LAInfoType">
    <xs:key name="LAInfoKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--LearnerAttendanceSummary-->

  <xs:complexType name="LearnerAttendanceSummaryType">
    <xs:annotation>
      <xs:documentation>This object provides a summary of a learner's daily attendance and membership information for a given school during the time period between the StartDate and EndDate, inclusive. As such, there may be multiple instances of this object for a learner in a school over the course of an academic school year.  Note that sessions are defined by each school and in most cases is two but can be any number in the range 1-10.  Compare with US/Canada object: </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:SchoolYear" />
      <xs:element name="StartDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>Starting date of this attendance reporting period.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EndDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>Ending date of this attendance reporting period.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ReasonsList">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Reason" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Code" type="sif:UKAttendanceCodeType">
                    <xs:annotation>
                      <xs:documentation>The attendance code.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="Type">
                    <xs:annotation>
                      <xs:documentation>The attendance code type.</xs:documentation>
                    </xs:annotation>
                    <xs:simpleType>
                      <xs:restriction base="xs:token">
                        <xs:enumeration value="Absent" />
                        <xs:enumeration value="EarlyDeparture" />
                        <xs:enumeration value="Late" />
                        <xs:enumeration value="Partial" />
                        <xs:enumeration value="Present" />
                        <xs:enumeration value="Other" />
                        <xs:enumeration value="NA" />
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                  <xs:element name="Status">
                    <xs:annotation>
                      <xs:documentation>The authorised status of the attendance code.</xs:documentation>
                    </xs:annotation>
                    <xs:simpleType>
                      <xs:restriction base="xs:token">
                        <xs:enumeration value="Authorised" />
                        <xs:enumeration value="Unauthorised" />
                        <xs:enumeration value="Unknown" />
                        <xs:enumeration value="NA" />
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                  <xs:element name="Total" type="xs:unsignedInt">
                    <xs:annotation>
                      <xs:documentation>The total number of sessions attributed to this reason between StartDate and EndDate for the specified reason.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SessionsAttendedTotal" type="xs:unsignedInt">
        <xs:annotation>
          <xs:documentation>The number of sessions the learner attended school when school was in session between the StartDate and EndDate, inclusive.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SessionsPossible" type="xs:unsignedInt">
        <xs:annotation>
          <xs:documentation>The number of sessions the learner was present plus the number of sessions the learner was absent (authorised and unauthorised) when school was in session during the period between the StartDate and EndDate, inclusive.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AuthorisedAbsences" minOccurs="0" nillable="true" type="xs:unsignedInt">
        <xs:annotation>
          <xs:documentation>The number of sessions the learner was absent from school with a valid excuse when school was in session between the StartDate and EndDate, inclusive. Note that ts column can be derived from Reason Status.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="UnauthorisedAbsences" minOccurs="0" nillable="true" type="xs:unsignedInt">
        <xs:annotation>
          <xs:documentation>The number of sessions the learner was absent from school without a valid excuse when school was in session between the StartDate and EndDate, inclusive.  Note that this column can be derived from Reason Status.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AlternativeTuitionHours" minOccurs="0" nillable="true" type="sif:UKTuitionHoursType">
        <xs:annotation>
          <xs:documentation>Number of Alternative Tuition (whole) hours attended between the StartDate and EndDate, inclusive.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType">
        <xs:key name="SIF_ExtendedElementsKey15">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:key>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="LearnerPersonalRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) of the learner for whom this attendance information is being reported.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="SchoolInfoRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) of the school for which this attendance information is being reported.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="LearnerAttendanceSummary" type="sif:LearnerAttendanceSummaryType">
    <xs:key name="LearnerAttendanceSummaryKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@LearnerPersonalRefId" />
      <xs:field xpath="@SchoolInfoRefId" />
      <xs:field xpath="./sif:SchoolYear" />
      <xs:field xpath="./sif:StartDate" />
      <xs:field xpath="./sif:EndDate" />
    </xs:key>
  </xs:element>


  <!--LearnerContact-->

  <xs:complexType name="LearnerContactType">
    <xs:annotation>
      <xs:documentation>This object contains information related to a contact person for a learner.  Compare with US/Canada object: </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Relationship" type="sif:UKRelationshipType">
        <xs:annotation>
          <xs:documentation>Defines the relationship of the contact to the learner.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LocalId" minOccurs="0" nillable="true" type="sif:LocalIdType">
        <xs:annotation>
          <xs:documentation>The locally-assigned identifier for this contact.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ContactFlags">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="ParentLegalGuardian" minOccurs="0" nillable="true">
              <xs:annotation>
                <xs:documentation>Does the individual have parental or legal guardianship responsibility for the learner?</xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="Yes" />
                  <xs:enumeration value="No" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
            <xs:element name="PickupRights" minOccurs="0" nillable="true">
              <xs:annotation>
                <xs:documentation>Does the contact have pickup rights?</xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="Yes" />
                  <xs:enumeration value="No" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
            <xs:element name="LivesWith" minOccurs="0" nillable="true">
              <xs:annotation>
                <xs:documentation>Does the learner live with this contact?</xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="Yes" />
                  <xs:enumeration value="No" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
            <xs:element name="AddressDisclosure" minOccurs="0" nillable="true">
              <xs:annotation>
                <xs:documentation>Can address information be disclosed?</xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="Yes" />
                  <xs:enumeration value="No" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
            <xs:element name="EmailCommunication" minOccurs="0" nillable="true">
              <xs:annotation>
                <xs:documentation>Does the contact prefer written communcation via email?  Otherwise, postal mail will be used.</xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="Yes" />
                  <xs:enumeration value="No" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
            <xs:element name="EmergencyContact" minOccurs="0" nillable="true">
              <xs:annotation>
                <xs:documentation>Should this contact be notified in case of emergency?</xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="Yes" />
                  <xs:enumeration value="No" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
            <xs:element name="DisciplinaryContact" minOccurs="0" nillable="true">
              <xs:annotation>
                <xs:documentation>Is this person to be contacted in case of disciplinary action?</xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="Yes" />
                  <xs:enumeration value="No" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
            <xs:element name="HomeDuringDay" minOccurs="0" nillable="true">
              <xs:annotation>
                <xs:documentation>Is the contact at home during normal daytime hours?</xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="Yes" />
                  <xs:enumeration value="No" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
            <xs:element name="MemberOfArmedForces" minOccurs="0" nillable="true">
              <xs:annotation>
                <xs:documentation>Is this person a member of the armed forces?</xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="Yes" />
                  <xs:enumeration value="No" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
            <xs:element name="PrimaryCareProvider" minOccurs="0" nillable="true">
              <xs:annotation>
                <xs:documentation>Does this person provide daily living or personal assistance to the learner?</xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="Yes" />
                  <xs:enumeration value="No" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
            <xs:element name="RequiresInterpreter" minOccurs="0" nillable="true">
              <xs:annotation>
                <xs:documentation>Does the contact need a translator or interpreter?</xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="Yes" />
                  <xs:enumeration value="No" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
            <xs:element name="TransferAddress" minOccurs="0" nillable="true">
              <xs:annotation>
                <xs:documentation>Should this contact be transferred with the Learner if and when the Learner moves?</xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="Yes" />
                  <xs:enumeration value="No" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="ContactSequence" minOccurs="0" nillable="true">
        <xs:simpleType>
          <xs:restriction base="xs:unsignedInt">
            <xs:annotation>
              <xs:documentation>Number (1-10) indicating the order in which the person should be contacted.  Note that 2 or more contacts may have the same value.</xs:documentation>
            </xs:annotation>
            <xs:minInclusive value="1" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:maxInclusive value="10" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="ContactSequenceSource" minOccurs="0" nillable="true" type="sif:UKSourceCodeType">
        <xs:annotation>
          <xs:documentation>Indicates the person who provided the contact sequence order.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType">
        <xs:key name="SIF_ExtendedElementsKey16">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:key>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="LearnerPersonalRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) of the learner whose contact this is.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="ContactPersonalRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) of this contact.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="LearnerContact" type="sif:LearnerContactType">
    <xs:key name="LearnerContactKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@LearnerPersonalRefId" />
      <xs:field xpath="@ContactPersonalRefId" />
    </xs:key>
  </xs:element>


  <!--LearnerExclusion-->

  <xs:complexType name="LearnerExclusionType">
    <xs:annotation>
      <xs:documentation>This object contains information related to a learner being excluded from one or more sessions of school.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Category">
        <xs:annotation>
          <xs:documentation>Exclusion category.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="FIXD">
              <xs:annotation>
                <xs:documentation>Fixed</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="PERM">
              <xs:annotation>
                <xs:documentation>Permanent</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="LNCH">
              <xs:annotation>
                <xs:documentation>Lunchtime</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="Reason" type="sif:UKExclusionReasonType">
        <xs:annotation>
          <xs:documentation>Reason for exclusion.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StartDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date exclusion takes effect irrespective of any review or appeal. Normally this will not be the same as Date of Leaving (exitDate) and it should be noted that the learner will remain on the schools's roll for a period after this start date.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StartSession">
        <xs:simpleType>
          <xs:restriction base="xs:unsignedInt">
            <xs:annotation>
              <xs:documentation>Session to begin exclusion, starting with 1 for the first session of the day. In most cases there are two sessions per day but this is not always the case.  Validation: Number between 1 and 10.</xs:documentation>
            </xs:annotation>
            <xs:minInclusive value="1" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:maxInclusive value="10" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="EndDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date exclusion concludes.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ActualSessions" minOccurs="0" nillable="true" type="xs:unsignedInt">
        <xs:annotation>
          <xs:documentation>Total number of sessions for which the exclusion is in effect. For lunchtime exclusions, each lunchtime for which the exclusion applies is one session. For fixed term and permanent exclusions, this is one session during the school day. For exclusions that are followed by reinstatement the actual, not the planned number of sessions should be recorded. (Exclusion sessions are used only to calculate the total allowable in a term or academic year and are not the same as an attendance session.)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Appeal" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>Is there an appeal against permanent exclusion?</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Yes" />
            <xs:enumeration value="No" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="AppealDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date for appeal against permanent exclusion.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AppealResult" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>The result of the appeal against permanent exclusion.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="R">
              <xs:annotation>
                <xs:documentation>Reinstatement</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="E">
              <xs:annotation>
                <xs:documentation>Exclusion stands</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="O">
              <xs:annotation>
                <xs:documentation>Reinstatement would be appropriate but not in best interest of learner given other circumstances</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="ReinstatementDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date learner was reinstated, if appropriate.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="HeadTeacherNotificationDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date head teacher notified parents, school LA, and home LA (if different) of exclusion.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="GovernorMeetingDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date of Governors' meeting with respect to exclusion.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="HearingNoticeOfAppealDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date of exclusion hearing/expiration of notice of appeal.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType">
        <xs:key name="SIF_ExtendedElementsKey17">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:key>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) of this exclusion.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="LearnerPersonalRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) of the excluded learner.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="LearnerExclusion" type="sif:LearnerExclusionType">
    <xs:key name="LearnerExclusionKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--LearnerGroupEnrolment-->

  <xs:complexType name="LearnerGroupEnrolmentType">
    <xs:annotation>
      <xs:documentation>This object contains information about a learner's enrolment in a course (teaching group) or other (class, homeroom or registration) group.  Compare with US/Canada object: </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:SchoolYear" />
      <xs:element name="EntryDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date from when this enrolment is valid.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ExitDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date on which the learner's enrolment ends or has ended.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType">
        <xs:key name="SIF_ExtendedElementsKey18">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:key>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) that uniquely identifies this LearnerGroupEnrolment entity.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="LearnerPersonalRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) of the learner to whom the enrolment information applies.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="SchoolGroupRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) of the group in which this learner is enroled.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="LearnerGroupEnrolment" type="sif:LearnerGroupEnrolmentType">
    <xs:key name="LearnerGroupEnrolmentKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--LearnerPersonal-->

  <xs:complexType name="LearnerPersonalType">
    <xs:annotation>
      <xs:documentation>This object contains personal information related to a learner. As most
learners are enroled in the school or establishment publishing this object,
basic enrolment information is also provided to aid in overall SIF
performance.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="LocalId" minOccurs="0" nillable="true" type="sif:LocalIdType">
        <xs:annotation>
          <xs:documentation>The locally-assigned identifier for this learner. This can be the internal pupil number or any other number as determined by the publishing agent.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AlertMsgList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="AlertMsg" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation>This is an alert message that is associated with the person.</xs:documentation>
              </xs:annotation>
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:normalizedString">
                    <xs:attribute name="Type" use="required">
                      <xs:annotation>
                        <xs:documentation>This attribute specifies what type of alert message this is.</xs:documentation>
                      </xs:annotation>
                      <xs:simpleType>
                        <xs:restriction base="xs:token">
                          <xs:enumeration value="Legal" />
                          <xs:enumeration value="Discipline" />
                          <xs:enumeration value="Educational" />
                          <xs:enumeration value="Other" />
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:attribute>
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="MedicalAlertMsgList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="MedicalAlertMsg" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation>Medical alert associated with the person.</xs:documentation>
              </xs:annotation>
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:normalizedString">
                    <xs:attribute name="Severity" use="required">
                      <xs:annotation>
                        <xs:documentation>The level of severity of this medical alert.</xs:documentation>
                      </xs:annotation>
                      <xs:simpleType>
                        <xs:restriction base="xs:token">
                          <xs:enumeration value="Low" />
                          <xs:enumeration value="Moderate" />
                          <xs:enumeration value="High" />
                          <xs:enumeration value="Severe" />
                          <xs:enumeration value="Unknown" />
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:attribute>
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element ref="sif:PersonalInformation" />
      <xs:element name="UIPI" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Unique Internal Pupil Number.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="UPN" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Unique Pupil Number (UPN) allocated to each learner in maintained schools in England and Wales. It is an identifier for use in the educational context during a child's school career only and subject to Data Protection restrictions.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="UPNAllocationDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date UPN was allocated by the LA.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="FormerUPNList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="UPN" maxOccurs="unbounded" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>A former UPN assigned to the pupil whilst at a school (eg temporary UPN was allocated when the pupil was first admitted to the school but subsequently replaced by the permanent UPN being retrieved from a previous school).</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="ULN" minOccurs="0" nillable="true">
        <xs:simpleType>
          <xs:restriction base="xs:normalizedString">
            <xs:annotation>
              <xs:documentation>Unique Learner Number (ULN), a 10-digit number where zero is not allowed as the leading digit.</xs:documentation>
            </xs:annotation>
            <xs:pattern value="[1-9][0-9]{9}" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="FamilyStructure" minOccurs="0" nillable="true" type="sif:UKFamilyStructureType">
        <xs:annotation>
          <xs:documentation>Indicates type of family structure learner is living in.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="InCare">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Current">
              <xs:annotation>
                <xs:documentation>Indicates if the learner is "looked after" currently.</xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="Yes" />
                  <xs:enumeration value="No" />
                  <xs:enumeration value="Unknown" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
            <xs:element name="Type" minOccurs="0" nillable="true" type="sif:UKInCareTypeType">
              <xs:annotation>
                <xs:documentation>Type of care the learner is in (eg fostering, children's home).</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element ref="sif:LAId" />
            <xs:element name="AtCurrentSchool" minOccurs="0" nillable="true">
              <xs:annotation>
                <xs:documentation>Indicates if the learner has ever been in care while at this school.</xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="Yes" />
                  <xs:enumeration value="No" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
            <xs:element name="PersonalEducationPlan" minOccurs="0" nillable="true">
              <xs:annotation>
                <xs:documentation>Indicates if the learner in care has a personal education plan.</xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="Yes" />
                  <xs:enumeration value="No" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="ConnexionsAgreement" minOccurs="0" nillable="true" type="sif:UKConnexionsAgreementType">
        <xs:annotation>
          <xs:documentation>Indicates if parents have consented to allow learner data to be shared with Connexions (Middle, Secondary and Special Schools only).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ChildProtectionRegister" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="IsRegistered">
              <xs:annotation>
                <xs:documentation>Indicates if the learner has been registered on the Child Protection Register.</xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="Yes" />
                  <xs:enumeration value="No" />
                  <xs:enumeration value="Unknown" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
            <xs:element name="LAId" minOccurs="0" nillable="true" type="sif:LAIdType">
              <xs:annotation>
                <xs:documentation>The LA in which the learner was registered for protection.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="SiblingRegistered" minOccurs="0" nillable="true">
              <xs:annotation>
                <xs:documentation>Indicates if the learner has a sibling that is also on the Child Protection Register.</xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="Yes" />
                  <xs:enumeration value="No" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="GiftedTalented" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>Learner qualifies for Gifted/Talented status.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Yes" />
            <xs:enumeration value="No" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="HomeLA" minOccurs="0" nillable="true" type="sif:LAIdType">
        <xs:annotation>
          <xs:documentation>The LA in which the learner lives but not necessarily the one in which they attend school.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LearnerIdentity" minOccurs="0" nillable="true" type="sif:UKLearnerIdentityType">
        <xs:annotation>
          <xs:documentation>Classification of national identity. (Wales)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ModeOfTravel" minOccurs="0" nillable="true" type="sif:UKUsualModeOfTravelType">
        <xs:annotation>
          <xs:documentation>The usual mode of travel normally used by the learner for the greater part (in distance) of the journey to and from school.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Pregnant" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>Learner is pregnant.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Yes" />
            <xs:enumeration value="No" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SiblingList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Sibling" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="LearnerPersonalRefId" type="sif:IdRefType">
                    <xs:annotation>
                      <xs:documentation>The ID (GUID) of the LearnerPersonal record for this sibling.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="UIPI" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>The Unique Internal Pupil Number for a sibling of this learner.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="UniformAllowance" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>Learner is paid a uniform allowance.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Yes" />
            <xs:enumeration value="No" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="CurrentSchoolEnrolment" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="sif:LAId" />
            <xs:element ref="sif:EstablishmentId" />
            <xs:element ref="sif:NCYearGroup" />
          </xs:sequence>
          <xs:attribute name="LearnerSchoolEnrolmentRefId" use="required" type="sif:IdRefType">
            <xs:annotation>
              <xs:documentation>The ID (GUID) of the LearnerSchoolEnrolment record associated with this learner that is also designated as the current or current main enrolment.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:complexType>
      </xs:element>
      <xs:element name="PreviousEstablishmentList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="PreviousEstablishment" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="EstablishmentId" minOccurs="0" nillable="true" type="sif:EstablishmentIdType">
                    <xs:annotation>
                      <xs:documentation>Establishment Number for this school</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="EstablishmentName" minOccurs="0" nillable="true" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>School's name as indicated on the Annual Schools Census.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="LAId" minOccurs="0" nillable="true" type="sif:LAIdType">
                    <xs:annotation>
                      <xs:documentation>The 3-digit LA number assigned by DfES.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="EntryDate" minOccurs="0" nillable="true" type="xs:date">
                    <xs:annotation>
                      <xs:documentation>The date the learner entered this school or establishment.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="ExitDate" minOccurs="0" nillable="true" type="xs:date">
                    <xs:annotation>
                      <xs:documentation>The date the learner exited this school or establishment.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="ExitType" minOccurs="0" nillable="true" type="sif:UKLeavingReasonType">
                    <xs:annotation>
                      <xs:documentation>Code indicating the type of exit from this school or establishment.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="LastSchool" minOccurs="0" nillable="true">
                    <xs:annotation>
                      <xs:documentation>An indication of whether the described school or establishment was the last establishment the learner attended. Note that it is possible that more than one establishment can be marked as LastSchool when a learner is enroled in more than one school simultaneously.</xs:documentation>
                    </xs:annotation>
                    <xs:simpleType>
                      <xs:restriction base="xs:token">
                        <xs:enumeration value="Yes" />
                        <xs:enumeration value="No" />
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType">
        <xs:key name="SIF_ExtendedElementsKey19">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:key>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) of the learner. Note that this GUID may be the same one assigned to this person when this person is either a contact (ContactPersonal) or a member of the workforce (WorkforcePersonal).</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="LearnerPersonal" type="sif:LearnerPersonalType">
    <xs:key name="LearnerPersonalKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--LearnerSchoolEnrolment-->

  <xs:complexType name="LearnerSchoolEnrolmentType">
    <xs:annotation>
      <xs:documentation>This object defines information related to a learner's enrolment within a
particular school or establishment.The current status on an enrolment is
based on EntryDate and ExitDate. Future enrolments are supported where
EntryDate is in the future. ExitDate may also be specified as a future
occurance.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="EntryDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>The date from when this enrolment is valid.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="NCYearGroupActual" type="sif:NCYearGroupType">
        <xs:annotation>
          <xs:documentation>The year group in which the learner is taught for the majority of their time, regardless of their chronological age.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ClassType" minOccurs="0" nillable="true" type="sif:UKClassTypeType">
        <xs:annotation>
          <xs:documentation>Indicates if the learner is in a nursery class. Must be set to 'O'  if age on August 31 is &gt;= 6.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ExitDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>The ending date of this enrolment. If the learner has exited before the end of the school year, ExitDate must have a value.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ExitType" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Code" type="sif:UKLeavingReasonType">
              <xs:annotation>
                <xs:documentation>Code indicating the type of exit for this enrolment.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="Destination" minOccurs="0" nillable="true">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Code" type="sif:UKLeavingDestinationType">
                    <xs:annotation>
                      <xs:documentation>Code indicating the destination type.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="LAId" minOccurs="0" nillable="true" type="sif:LAIdType">
                    <xs:annotation>
                      <xs:documentation>The LA number for destination school or college.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="EstablishmentId" minOccurs="0" nillable="true" type="sif:EstablishmentIdType">
                    <xs:annotation>
                      <xs:documentation>The DfES number for destination school or college.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="Name" minOccurs="0" nillable="true" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>Name of institution/employer of learner's destination.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Sessions" minOccurs="0" nillable="true">
        <xs:simpleType>
          <xs:restriction base="xs:unsignedInt">
            <xs:annotation>
              <xs:documentation>Number of learner sessions (half days) per week.  A maximum of 10 is possible per week.</xs:documentation>
            </xs:annotation>
            <xs:maxInclusive value="10" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="FTPTStatus" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>An indication of whether the learner is enroled only part time.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Yes" />
            <xs:enumeration value="No" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="Boarder" minOccurs="0" nillable="true" type="sif:UKBoarderTypeType">
        <xs:annotation>
          <xs:documentation>Indicates whether the learner is a boarder at the school or not.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AlternativeTuition" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Category" type="sif:UKTuitionCategoryType">
              <xs:annotation>
                <xs:documentation>Reason for alternative tuition.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="StartDate" type="xs:date">
              <xs:annotation>
                <xs:documentation>Beginning date for alternative tuition.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="EndDate" minOccurs="0" nillable="true" type="xs:date">
              <xs:annotation>
                <xs:documentation>End date for alternative tuition.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="TotalHours" minOccurs="0" nillable="true" type="xs:unsignedInt">
              <xs:annotation>
                <xs:documentation>The total number of hours provided for with the tuition.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="ProvisionType" type="sif:UKAlternativeTuitionProvisionTypeType">
              <xs:annotation>
                <xs:documentation>Alternative tuition provision type.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType">
        <xs:key name="SIF_ExtendedElementsKey20">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:key>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) that uniquely identifies a particular enrolment.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="LearnerPersonalRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) of the learner to whom this information is linked.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="SchoolInfoRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) of the school to which this enrolment applies.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="MembershipType" use="required" type="sif:UKLearnerEnrolmentStatusType">
      <xs:annotation>
        <xs:documentation>The type of this enrolment as it relates to the school identified by SchoolInfoRefId.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="LearnerSchoolEnrolment" type="sif:LearnerSchoolEnrolmentType">
    <xs:key name="LearnerSchoolEnrolmentKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--LearnerSpecialNeeds-->

  <xs:complexType name="LearnerSpecialNeedsType">
    <xs:annotation>
      <xs:documentation>This object contains information regarding a special education need (SEN)
for a learner when provisioned within a school or establishment. A new
object exists for each provision. The current status of any provision can be
determined by querying StartDate and EndDate. Both dates are allowed to
be in the future. The publisher of this object must support queries on these
dates.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="UnitMember" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>Is this learner with special education needs (SEN) in a mainstream school a member of an SEN Unit (sometimes called special class)?</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Yes" />
            <xs:enumeration value="No" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="ResourcedProvisionMember" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>Is this learner with special education needs (SEN) in a mainstream school a member of a resourced provision?</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Yes" />
            <xs:enumeration value="No" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="NextReviewDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date of learner's next SEN review.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Provision" type="sif:UKSENProvisionType">
        <xs:annotation>
          <xs:documentation>A provision (stage) accommodated for this learner within this school.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StartDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date when learner was placed on the current SEN stage. Date may be in the
future.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EndDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date when learner finished this SEN stage.  Assumed to be current unless a date in the past is specified here.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SENTypeList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SENType" maxOccurs="unbounded">
              <xs:complexType>
                <xs:annotation>
                  <xs:documentation>The code for a Special Educational Need (type) for this learner. </xs:documentation>
                </xs:annotation>
                <xs:simpleContent>
                  <xs:extension base="sif:UKSENTypeType">
                    <xs:attribute name="Ranking" use="required" type="xs:unsignedInt">
                      <xs:annotation>
                        <xs:documentation>A value (starting at 1) indicating the order of significance of special educational need in relation to other SEN types listed here.</xs:documentation>
                      </xs:annotation>
                    </xs:attribute>
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="AdviceAndAssessmentLevel" minOccurs="0" nillable="true" type="sif:UKAdviceAndAssessmentWalesType">
        <xs:annotation>
          <xs:documentation>Level of provision for Advice and Assessment. (Wales)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="GroupingAndSupportLevel" minOccurs="0" nillable="true" type="sif:UKGroupingAndSupportWalesType">
        <xs:annotation>
          <xs:documentation>Level of provision for Grouping and Support. (Wales)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SpecialisedResourcesLevel" minOccurs="0" nillable="true" type="sif:UKSpecialisedResourcesWalesType">
        <xs:annotation>
          <xs:documentation>Level of provision for Specialised Resources. (Wales)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TeachingMethodsLevel" minOccurs="0" nillable="true" type="sif:UKCurriculumAndTeachingMethodsWalesType">
        <xs:annotation>
          <xs:documentation>Level of provision for Curriculum and Teaching Methods. (Wales)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EmbeddedBasicSkillsSupport" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>Provision of Embedded Basic Skills support beyond the attainment of formal qualification.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:union>
            <xs:simpleType>
              <xs:restriction base="sif:UKBasicSkillsSupportWalesType" />
            </xs:simpleType>
          </xs:union>
        </xs:simpleType>
      </xs:element>
      <xs:element name="LiteracyLevelStart" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Level of literacy at start of this SEN stage. (Wales)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LiteracyLevelEnd" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Level of literacy achieved by the end of this SEN stage. (Wales)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="NumeracyLevelStart" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Level of numeracy at start of this SEN stage. (Wales)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="NumeracyLevelEnd" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Level of numeracy achieved by the end of this SEN stage. (Wales)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="NationalCurriculumList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="NationalCurriculum" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Modification">
                    <xs:annotation>
                      <xs:documentation>How is the National Curriculum used for this learner?</xs:documentation>
                    </xs:annotation>
                    <xs:simpleType>
                      <xs:restriction base="xs:token">
                        <xs:enumeration value="M">
                          <xs:annotation>
                            <xs:documentation>Modified</xs:documentation>
                          </xs:annotation>
                        </xs:enumeration>
                        <xs:enumeration value="N">
                          <xs:annotation>
                            <xs:documentation>Disapplied</xs:documentation>
                          </xs:annotation>
                        </xs:enumeration>
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                  <xs:element name="Subject" type="sif:UKGeneralSubjectType">
                    <xs:annotation>
                      <xs:documentation>National Curriculum subject(s) for which modification or disapplication applies.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="MedicalFlag" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>Is there medical information on this Learner?</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Yes" />
            <xs:enumeration value="No" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="ParamedicalSupport" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>Type of therapy needed by Learner.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="P">
              <xs:annotation>
                <xs:documentation>Physiotherapy</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="S">
              <xs:annotation>
                <xs:documentation>Speech Therapy</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="O">
              <xs:annotation>
                <xs:documentation>Occupational Therapy</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="MedicalNotes" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Summary of learner's medical condition.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType">
        <xs:key name="SIF_ExtendedElementsKey21">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:key>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) that uniquely identifies a learner special need (provision).</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="LearnerPersonalRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) of the learner with special educational needs.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="SchoolInfoRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) that uniquely identifies the school provisioned to work with the learner's special needs.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="LearnerSpecialNeeds" type="sif:LearnerSpecialNeedsType" />


  <!--PersonPicture-->

  <xs:complexType name="PersonPictureType">
    <xs:annotation>
      <xs:documentation>This object either contains or references a person's picture.  Compare with US/Canada objects: </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SIF_RefObjectList" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_RefObject">
              <xs:annotation>
                <xs:documentation>The name of a "personal" object that can be requested for this person using the specified PersonRefId.</xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="ContactPersonal" />
                  <xs:enumeration value="LearnerPersonal" />
                  <xs:enumeration value="WorkforcePersonal" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element ref="sif:SchoolYear" />
      <xs:element name="PictureSource">
        <xs:complexType>
          <xs:annotation>
            <xs:documentation>This element defines the picture. If the Type attribute is URL, this is the location of the picture in [JPEG] format; if Type is JPEG, this is the [JPEG] image data encoded using the Base64 Content-Transfer-Encoding defined in Section 6.8 of [RFC 2045].</xs:documentation>
          </xs:annotation>
          <xs:simpleContent>
            <xs:extension base="sif:URIOrBinaryType">
              <xs:attribute name="Type" use="required">
                <xs:annotation>
                  <xs:documentation>The way the picture is specified (URL or JPEG).</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="URL" />
                    <xs:enumeration value="JPEG" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="OKToPublish" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>Can the picture be published?</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Yes" />
            <xs:enumeration value="No" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType">
        <xs:key name="SIF_ExtendedElementsKey22">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:key>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="PersonRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>This is the GUID of the person whose picture this is.  It is important to note that using the same GUID a person may have a LearnerPersonal record, a WorkforcePersonal record, and a ContactPersonal record all at the same time.  This same picture is applicable regardless of the associated object type(s).</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="PersonPicture" type="sif:PersonPictureType">
    <xs:key name="PersonPictureKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@PersonRefId" />
    </xs:key>
  </xs:element>


  <!--SchoolGroupType-->

  <xs:complexType name="SchoolGroupTypeType">
    <xs:annotation>
      <xs:documentation>This object describes a high-level course or class grouping organised and/or taught within a school or establishment.  Note that not all courses are based upon a subject area.  One such course is "Class Group" which is the same as a homeroom or registration group.  Compare with US/Canada object: </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Code" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The school defined local code for the group (or course).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Title" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Title associated with this group.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Description" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Textual description for the group.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SubjectAreaList" minOccurs="0" nillable="true" type="sif:SubjectAreaListType">
        <xs:annotation>
          <xs:documentation>Subject matter areas taught as part of the course, if any.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType">
        <xs:key name="SIF_ExtendedElementsKey23">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:key>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The GUID that uniquely identifies a school course.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="SchoolInfoRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) that references the school or establishment where the course is offered or the registration group exists.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="SchoolYear" use="required" type="sif:SchoolYearType">
      <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. 2007 for the 2006/07 school year). Where a group membership is valid across multiple years, the current year at the time of publication will be used.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="GroupType" use="required">
      <xs:annotation>
        <xs:documentation>The group type.  Teaching groups are used to teach subjects while other groups are organised for various other reasons.</xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="G">
            <xs:annotation>
              <xs:documentation>Generic Group</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="R">
            <xs:annotation>
              <xs:documentation>Registration/Class Group</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="T">
            <xs:annotation>
              <xs:documentation>Teaching (course) Group</xs:documentation>
            </xs:annotation>
          </xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="SchoolGroupType" type="sif:SchoolGroupTypeType">
    <xs:key name="SchoolGroupTypeKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--SchoolGroup-->

  <xs:complexType name="SchoolGroupType">
    <xs:annotation>
      <xs:documentation>This object describes a specific group and includes resource and time tabling information.  All groups are based upon a SchoolGroupType record. However, there are courses which are not based upon any subject area and likewise may not have any teachers or other staff assigned.  Compare with US/Canada object:  </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:LocalId" />
      <xs:element name="GroupName" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The name associated with this group for display purposes.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Description" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>A textual description.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ParentSchoolGroupRefId" minOccurs="0" nillable="true" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>The parent group associated with this group, if any.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ScheduleInfoList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="ScheduleInfo" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="TeacherList" minOccurs="0" nillable="true">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="Teacher" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="Role" minOccurs="0" nillable="true" type="sif:UKGroupRoleType">
                                <xs:annotation>
                                  <xs:documentation>The role associated with this person in the context of this group.</xs:documentation>
                                </xs:annotation>
                              </xs:element>
                            </xs:sequence>
                            <xs:attribute name="WorkforcePersonalRefId" use="required" type="sif:IdRefType">
                              <xs:annotation>
                                <xs:documentation>The ID (GUID) of a teacher, staff member, or other employee participating in a non-learner capacity within this group.</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType">
        <xs:key name="SIF_ExtendedElementsKey24">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:key>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) that uniquely identifies this group entity.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="SchoolGroupTypeRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) that identifies a course upon which this group is centered. Note that this element is mandatory when GroupType is associated with a course (teaching group).</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="SchoolYear" use="required" type="sif:SchoolYearType">
      <xs:annotation>
        <xs:documentation>School year for which the group is applicable, expressed as the four-digit year in which the school year ends (e.g. 2007 for the 2006/07 school year). Where a group membership is valid across multiple years, the current year at the time of publication will be used.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="SchoolGroup" type="sif:SchoolGroupType">
    <xs:key name="SchoolGroupKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--SchoolInfo-->

  <xs:complexType name="SchoolInfoType">
    <xs:annotation>
      <xs:documentation>This object contains basic information about a school or other educational establishment.  Compare with US/Canada object with the same name.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="LocalId" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>An ID assigned by the publishing agent for this school or establishment. This may be set to any value.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element ref="sif:EstablishmentId" />
      <xs:element ref="sif:LAId" />
      <xs:element name="SchoolName" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>School's name as indicated on the Annual Schools Census.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolFullName" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>School's full name as stated in the Instrument of Government.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="URN" minOccurs="0" nillable="true" type="sif:SchoolURNType">
        <xs:annotation>
          <xs:documentation>School Unique Reference Number.  This number is an alternate to the Establishment Number.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolURL" minOccurs="0" nillable="true" type="sif:SchoolURLType">
        <xs:annotation>
          <xs:documentation>URL for the school.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolAddress" minOccurs="0" nillable="true" type="sif:AddressType">
        <xs:annotation>
          <xs:documentation>The school's published address.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AddressList" minOccurs="0" nillable="true" type="sif:AddressListType">
        <xs:annotation>
          <xs:documentation>Other addresses associated with the school.</xs:documentation>
        </xs:annotation>
        <xs:key name="AddressListKey4">
          <xs:selector xpath="./sif:Address" />
          <xs:field xpath="@Type" />
        </xs:key>
      </xs:element>
      <xs:element name="SchoolPhoneNumber" minOccurs="0" nillable="true" type="sif:PhoneNumberType">
        <xs:annotation>
          <xs:documentation>The main phone number for this school/establishment.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="OtherPhoneNumberList" minOccurs="0" nillable="true" type="sif:PhoneNumberListType">
        <xs:annotation>
          <xs:documentation>A list of the school's phone numbers.</xs:documentation>
        </xs:annotation>
        <xs:key name="PhoneNumberListKey4">
          <xs:selector xpath="./sif:PhoneNumber" />
          <xs:field xpath="@Type" />
        </xs:key>
      </xs:element>
      <xs:element name="SchoolEmail" minOccurs="0" nillable="true" type="sif:EmailType">
        <xs:annotation>
          <xs:documentation>School's email address for general correspondence.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolContactList" minOccurs="0" nillable="true" type="sif:ContactListType">
        <xs:annotation>
          <xs:documentation>A list of contacts at the school.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="HeadTeacherInfo" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="ContactName" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The name of the head Teacher.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="ContactTitle" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The official title of the Head Teacher.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Phase" minOccurs="0" nillable="true" type="sif:UKPhaseTypeType">
        <xs:annotation>
          <xs:documentation>The high level code indicating the level of the educational institution.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolType" minOccurs="0" nillable="true" type="sif:UKSchoolTypeType">
        <xs:annotation>
          <xs:documentation>An indication of the level of the educational institution.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Governance" minOccurs="0" nillable="true" type="sif:UKGovernanceTypeType">
        <xs:annotation>
          <xs:documentation>Governance afforded to this school.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Intake" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>Intake type.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="COMP">
              <xs:annotation>
                <xs:documentation>Comprehensive</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="SEL1">
              <xs:annotation>
                <xs:documentation>Selective (Grammar)</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="SEL2">
              <xs:annotation>
                <xs:documentation>Secondary Modern</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="SEL3">
              <xs:annotation>
                <xs:documentation>Selective (Technical)</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="SEL4">
              <xs:annotation>
                <xs:documentation>Religious School</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="NCYearGroupList" minOccurs="0" nillable="true" type="sif:NCYearGroupListType">
        <xs:annotation>
          <xs:documentation>Collection of National Curriculum Year Groups offered in this school or establishment.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="GenderOfEntry" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>Gender of learners allowed for entry to school.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="C">
              <xs:annotation>
                <xs:documentation>Coeducational</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="F">
              <xs:annotation>
                <xs:documentation>Female only</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="M">
              <xs:annotation>
                <xs:documentation>Male only</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="GenderSixthForm" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>Gender of learners allowed for entry to Sixth Form.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="C">
              <xs:annotation>
                <xs:documentation>Coeducational</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="F">
              <xs:annotation>
                <xs:documentation>Female only</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="M">
              <xs:annotation>
                <xs:documentation>Male only</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="blank = HighestNCYear less than 12" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="Boarders" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>Indicates whether the school supports boarders or not.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Yes" />
            <xs:enumeration value="No" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SessionsPerDay" type="xs:unsignedInt">
        <xs:annotation>
          <xs:documentation>The number of sessions in the usual school day (usually two).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Nursery" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>Indicates whether the school maintains a nursery class or not. Must be NO if Phase is set to MP, MS or SY. Must be YES if Phase is set to NY or EY.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Yes" />
            <xs:enumeration value="No" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="Special" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>Indicates whether the school has a special class/unit or not.  Must be Yes if Phase = SP.  Any details will be stored in the associated SchoolInfoDetail object.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Yes" />
            <xs:enumeration value="No" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="OperationalStatus" minOccurs="0" nillable="true" type="sif:UKOperationalStatusType">
        <xs:annotation>
          <xs:documentation>Operational condition of a school.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType">
        <xs:key name="SIF_ExtendedElementsKey25">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:key>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The GUID that identifies this school.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="LAInfoRefId" use="optional" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) assigned to the LA of which this school is a member.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="SchoolInfo" type="sif:SchoolInfoType">
    <xs:key name="SchoolInfoKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--TermInfo-->

  <xs:complexType name="TermInfoType">
    <xs:annotation>
      <xs:documentation>This object provides information about a term; i.e., a reportable period of time.  Compare with US/Canada object: </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:SchoolYear" />
      <xs:element name="StartDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>Starting date of the term.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EndDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>Ending date of the term.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Description" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Text-based description of the term.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TermCode" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Locally-defined code. Use 'AUT', 'SPR', or 'SUM' for a 3 term year. Otherwise specify the term number within the year.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TermsPerYear" minOccurs="0" nillable="true">
        <xs:simpleType>
          <xs:restriction base="xs:unsignedInt">
            <xs:annotation>
              <xs:documentation>The number of terms in a given year (3-6).</xs:documentation>
            </xs:annotation>
            <xs:minInclusive value="3" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:maxInclusive value="6" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="MarkingTerm" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>Does this TermInfo represent a marking period?</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Yes" />
            <xs:enumeration value="No" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SchedulingTerm" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>Does this TermInfo represent a scheduling term?</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Yes" />
            <xs:enumeration value="No" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="AttendanceTerm" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>Does this TermInfo represent an attendance term?</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Yes" />
            <xs:enumeration value="No" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType">
        <xs:key name="SIF_ExtendedElementsKey26">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:key>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) that uniquely identifies this TermInfo entity.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="SchoolInfoRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) that identifies the school where the term is used.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="TermInfo" type="sif:TermInfoType">
    <xs:key name="TermInfoKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--WorkforcePersonal-->

  <xs:complexType name="WorkforcePersonalType">
    <xs:annotation>
      <xs:documentation>This object contains key personal information relating to a workforce member, who might be a teacher or other employee of the school or LA.  Compare with US/Canada objects: </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:LocalId" />
      <xs:element name="AlertMsgList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="AlertMsg" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation>This is an alert message that is associated with the person.</xs:documentation>
              </xs:annotation>
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:normalizedString">
                    <xs:attribute name="Type" use="required">
                      <xs:annotation>
                        <xs:documentation>This attribute specifies what type of alert message this is.</xs:documentation>
                      </xs:annotation>
                      <xs:simpleType>
                        <xs:restriction base="xs:token">
                          <xs:enumeration value="Legal" />
                          <xs:enumeration value="Discipline" />
                          <xs:enumeration value="Educational" />
                          <xs:enumeration value="Other" />
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:attribute>
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="MedicalAlertMsgList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="MedicalAlertMsg" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation>Medical alert associated with the person.</xs:documentation>
              </xs:annotation>
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:normalizedString">
                    <xs:attribute name="Severity" use="required">
                      <xs:annotation>
                        <xs:documentation>The level of severity of this medical alert.</xs:documentation>
                      </xs:annotation>
                      <xs:simpleType>
                        <xs:restriction base="xs:token">
                          <xs:enumeration value="Low" />
                          <xs:enumeration value="Moderate" />
                          <xs:enumeration value="High" />
                          <xs:enumeration value="Severe" />
                          <xs:enumeration value="Unknown" />
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:attribute>
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element ref="sif:PersonalInformation" />
      <xs:element name="TeacherNumber" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The DfES Teacher Reference number. For those who have one this is a unique number.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="NINumber" minOccurs="0" nillable="true">
        <xs:simpleType>
          <xs:restriction base="xs:normalizedString">
            <xs:annotation>
              <xs:documentation>National Insurance Number. Do not specify temporary numbers. Format:  AAnnnnnnA</xs:documentation>
            </xs:annotation>
            <xs:pattern value="[A-Z]{2}[0-9]{6}[A-Z]" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="CurrentAssignmentList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="CurrentAssignment" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="LAId" minOccurs="0" nillable="true" type="sif:LAIdType">
                    <xs:annotation>
                      <xs:documentation>The DfES assigned number for the LA in which the workforce member is working, if associated.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="EstablishmentId" minOccurs="0" nillable="true" type="sif:EstablishmentIdType">
                    <xs:annotation>
                      <xs:documentation>The DfES assigned number for the school or establishment in which the workforce member is working.  Note that the school may not necessarily be in the same LA listed as the LAId.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="Posts" minOccurs="0" nillable="true">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="Post" maxOccurs="unbounded" type="sif:UKAssignmentPostType">
                          <xs:annotation>
                            <xs:documentation>The post assigned to the workforce member in the context of the school or LA.</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="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType">
        <xs:key name="SIF_ExtendedElementsKey27">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:key>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) of the workforce member.  Note that the same GUID may be assigned to this person when they are also a learner (via LearnerPersonal) and/or a contact (via ContactPersonal).</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="WorkforcePersonal" type="sif:WorkforcePersonalType">
    <xs:key name="WorkforcePersonalKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--InfrastructureWorkingGroup-->


  <!--SIF_LogEntry-->

  <xs:complexType name="SIF_LogEntryType">
    <xs:annotation>
      <xs:documentation>
								This object captures an occurrence within a SIF node (ZIS or agent)—error, warning or information—for storage in an optionally provided zone log.
								SIF_LogEntry Adds are reported and are used to post new log entries to the provider of the log.
								Of course, subscribing agents may also filter incoming Adds as part of their own logging mechanism.
								Any Change or Delete SIF_Events should be ignored at the agent level, but should be routed by the
								ZIS (though this should not be necessary). Use of the log is optional and voluntary, except where noted as mandatory in this specification.
								Nodes may post as much or as little log data as required with the expectation that if there is a provider of SIF_LogEntry that the logged entries be available
								for a provider-defined amount of time subject to provider-defined restrictions on the quantity of data
								logged by any given node.
							</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SIF_LogEntryHeader">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="sif:SIF_Header" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_OriginalHeader" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="sif:SIF_Header" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Category" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>A SIF_LogEntry category. May be omitted for informational-type postings, where typically a textual description will suffice.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="1">
              <xs:annotation>
                <xs:documentation>Success</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="2">
              <xs:annotation>
                <xs:documentation>Data Issues with Success Result</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="3">
              <xs:annotation>
                <xs:documentation>Data Issues with Failure Result</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="4">
              <xs:annotation>
                <xs:documentation>Error Conditions</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SIF_Code" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>A SIF_LogEntry code with regard to SIF_Category above. May be omitted for informational-type postings, where typically a textual description will suffice. If a SIF_Code is included, SIF_Category must be included as well.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:union>
            <xs:simpleType>
              <xs:restriction base="sif:SIF_LogEntrySuccessCategoryType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:SIF_LogEntryDataIssuesWithSuccessResultType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:SIF_LogEntryDataIssuesWithFailureResultType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:SIF_LogEntryAgentErrorConditionType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:SIF_LogEntryZISErrorConditionType" />
            </xs:simpleType>
          </xs:union>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SIF_ApplicationCode" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>
								An error code specific to the application posting the entry.
								Can be used by vendors to query log entries for errors specific to their applications.
								If a SIF_ApplicationCode is included, SIF_Category must be included as well;
								i.e., application-specific error codes should fall within one of the defined log entry categories.
							</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Desc" type="xs:string">
        <xs:annotation>
          <xs:documentation>A textual description of the error.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_ExtendedDesc" minOccurs="0" nillable="true" type="xs:string">
        <xs:annotation>
          <xs:documentation>Any extended error description.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_LogObjects" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_LogObject" maxOccurs="unbounded">
              <xs:complexType>
                <xs:annotation>
                  <xs:documentation>Any SIF data objects to which this log entry may apply.</xs:documentation>
                </xs:annotation>
                <xs:complexContent>
                  <xs:extension base="sif:SIF_LogEntryExtendedContentType">
                    <xs:attribute name="ObjectName" use="required" type="sif:SIF_RequestObjectNamesType">
                      <xs:annotation>
                        <xs:documentation>The name of the SIF object referenced (e.g. StudentPersonal).</xs:documentation>
                      </xs:annotation>
                    </xs:attribute>
                  </xs:extension>
                </xs:complexContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType">
        <xs:key name="SIF_ExtendedElementsKey28">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:key>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="Source" use="required">
      <xs:annotation>
        <xs:documentation>The SIF node that logged this entry.</xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="Agent" />
          <xs:enumeration value="ZIS" />
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="LogLevel" use="required">
      <xs:annotation>
        <xs:documentation>The level of the log entry herein described.</xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="Info" />
          <xs:enumeration value="Warning" />
          <xs:enumeration value="Error" />
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="SIF_LogEntry" type="sif:SIF_LogEntryType" />

  <xs:simpleType name="InfrastructureStatusCodeType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="0" />
      <xs:enumeration value="1" />
      <xs:enumeration value="2" />
      <xs:enumeration value="3" />
      <xs:enumeration value="7" />
      <xs:enumeration value="8" />
      <xs:enumeration value="9" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="InfrastructureErrorCategoryType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="0">
        <xs:annotation>
          <xs:documentation>Unknown (This should NEVER be used if possible)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1">
        <xs:annotation>
          <xs:documentation>XML Validation</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2">
        <xs:annotation>
          <xs:documentation>Encryption</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3">
        <xs:annotation>
          <xs:documentation>Authentication</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4">
        <xs:annotation>
          <xs:documentation>Access and Permissions</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5">
        <xs:annotation>
          <xs:documentation>Registration</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="6">
        <xs:annotation>
          <xs:documentation>Provision</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7">
        <xs:annotation>
          <xs:documentation>Subscription</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8">
        <xs:annotation>
          <xs:documentation>Request and Response</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9">
        <xs:annotation>
          <xs:documentation>Event Reporting and Processing</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="10">
        <xs:annotation>
          <xs:documentation>Transport</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="11">
        <xs:annotation>
          <xs:documentation>System (OS, Database, Vendor localized, etc.)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="12">
        <xs:annotation>
          <xs:documentation>Generic Message Handling</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="13">
        <xs:annotation>
          <xs:documentation>SMB Handling</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="InfrastructureXMLValidationErrorType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="1">
        <xs:annotation>
          <xs:documentation>Generic error</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2">
        <xs:annotation>
          <xs:documentation>Message is not well-formed</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3">
        <xs:annotation>
          <xs:documentation>Generic validation error</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4">
        <xs:annotation>
          <xs:documentation>Invalid value for element/attribute</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="6">
        <xs:annotation>
          <xs:documentation>Missing mandatory element/attribute</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="InfrastructureEncryptionErrorType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="1">
        <xs:annotation>
          <xs:documentation>Generic error</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="InfrastructureAuthenticationErrorType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="1">
        <xs:annotation>
          <xs:documentation>Generic error</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2">
        <xs:annotation>
          <xs:documentation>Generic authentication error (with signature)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3">
        <xs:annotation>
          <xs:documentation>Missing sender's certificate</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4">
        <xs:annotation>
          <xs:documentation>Invalid certificate</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5">
        <xs:annotation>
          <xs:documentation>Sender's certificate is not trusted</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="6">
        <xs:annotation>
          <xs:documentation>Expired certificate</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7">
        <xs:annotation>
          <xs:documentation>Invalid signature</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8">
        <xs:annotation>
          <xs:documentation>Invalid encryption algorithm (only accepts MD4)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9">
        <xs:annotation>
          <xs:documentation>Missing public key of the receiver (when decrypting message)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="10">
        <xs:annotation>
          <xs:documentation>Missing receiver's private key (when decrypting message)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="InfrastructureAccessAndPermissionErrorType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="1">
        <xs:annotation>
          <xs:documentation>Generic error</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2">
        <xs:annotation>
          <xs:documentation>No permission to register</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3">
        <xs:annotation>
          <xs:documentation>No permission to provide this object</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4">
        <xs:annotation>
          <xs:documentation>No permission to subscribe to this SIF_Event</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5">
        <xs:annotation>
          <xs:documentation>No permission to request this object</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="6">
        <xs:annotation>
          <xs:documentation>No permission to respond to this object request</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7">
        <xs:annotation>
          <xs:documentation>No permission to publish SIF_Event</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8">
        <xs:annotation>
          <xs:documentation>No permission to administer policies</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9">
        <xs:annotation>
          <xs:documentation>SIF_SourceId is not registered</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="10">
        <xs:annotation>
          <xs:documentation>No permission to publish SIF_Event Add</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="11">
        <xs:annotation>
          <xs:documentation>No permission to publish SIF_Event Change</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="12">
        <xs:annotation>
          <xs:documentation>No permission to publish SIF_Event Delete</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="InfrastructureRegistrationErrorType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="1">
        <xs:annotation>
          <xs:documentation>Generic error</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2">
        <xs:annotation>
          <xs:documentation>The SIF_SourceId is invalid</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3">
        <xs:annotation>
          <xs:documentation>Requested transport protocol is unsupported</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4">
        <xs:annotation>
          <xs:documentation>Requested SIF_Version(s) not supported.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="6">
        <xs:annotation>
          <xs:documentation>Requested SIF_MaxBufferSize is too small</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7">
        <xs:annotation>
          <xs:documentation>ZIS requires a secure transport</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9">
        <xs:annotation>
          <xs:documentation>Agent is registered for push mode (returned when a push-mode agent sends a SIF_GetMessage).</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="10">
        <xs:annotation>
          <xs:documentation>ZIS does not support the requested Accept-Encoding value.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="InfrastructureProvisionErrorType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="1">
        <xs:annotation>
          <xs:documentation>Generic error</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3">
        <xs:annotation>
          <xs:documentation>Invalid object</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4">
        <xs:annotation>
          <xs:documentation>Object already has a provider (SIF_Provide message)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="InfrastructureSubscriptionErrorType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="1">
        <xs:annotation>
          <xs:documentation>Generic error</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3">
        <xs:annotation>
          <xs:documentation>Invalid object</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="InfrastructureRequestAndResponseErrorType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="1">
        <xs:annotation>
          <xs:documentation>Generic error</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3">
        <xs:annotation>
          <xs:documentation>Invalid object</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4">
        <xs:annotation>
          <xs:documentation>No provider</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7">
        <xs:annotation>
          <xs:documentation>Responder does not support requested SIF_Version</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8">
        <xs:annotation>
          <xs:documentation>Responder does not support requested SIF_MaxBufferSize</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9">
        <xs:annotation>
          <xs:documentation>Unsupported query in request</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="10">
        <xs:annotation>
          <xs:documentation>Invalid SIF_RequestMsgId specified in SIF_Response</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="11">
        <xs:annotation>
          <xs:documentation>SIF_Response is larger than requested SIF_MaxBufferSize</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="12">
        <xs:annotation>
          <xs:documentation>SIF_PacketNumber is invalid in SIF_Response</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="13">
        <xs:annotation>
          <xs:documentation>SIF_Response does not match any SIF_Version from SIF_Request</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="14">
        <xs:annotation>
          <xs:documentation>SIF_DestinationId does not match SIF_SourceId from SIF_Request</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="15">
        <xs:annotation>
          <xs:documentation>No support for SIF_ExtendedQuery</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="16">
        <xs:annotation>
          <xs:documentation>SIF_RequestMsgId deleted from cache due to timeout</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="17">
        <xs:annotation>
          <xs:documentation>SIF_RequestMsgId deleted from cache by administrator</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="18">
        <xs:annotation>
          <xs:documentation>SIF_Request cancelled by requesting agent</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="InfrastructureEventReportingAndProcessingErrorType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="1">
        <xs:annotation>
          <xs:documentation>Generic error</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3">
        <xs:annotation>
          <xs:documentation>Invalid event</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="InfrastructureTransportErrorType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="1">
        <xs:annotation>
          <xs:documentation>Generic error</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2">
        <xs:annotation>
          <xs:documentation>Requested protocol is not supported</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3">
        <xs:annotation>
          <xs:documentation>Secure channel requested and no secure path exists</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4">
        <xs:annotation>
          <xs:documentation>Unable to establish connection</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="InfrastructureSystemErrorType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="1">
        <xs:annotation>
          <xs:documentation>Generic error</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="InfrastructureGenericMessageHandlingErrorType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="1">
        <xs:annotation>
          <xs:documentation>Generic error</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2">
        <xs:annotation>
          <xs:documentation>Message not supported</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3">
        <xs:annotation>
          <xs:documentation>Version not supported</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4">
        <xs:annotation>
          <xs:documentation>Context not supported</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5">
        <xs:annotation>
          <xs:documentation>Protocol error</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="6">
        <xs:annotation>
          <xs:documentation>No such message (as identified by SIF_OriginalMsgId)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7">
        <xs:annotation>
          <xs:documentation>Multiple contexts not supported</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="InfrastructureSMBErrorType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="1">
        <xs:annotation>
          <xs:documentation>Generic error</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2">
        <xs:annotation>
          <xs:documentation>SMB can only be invoked during a SIF_Event acknowledgement</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3">
        <xs:annotation>
          <xs:documentation>Final SIF_Ack expected from Push-Mode Agent</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4">
        <xs:annotation>
          <xs:documentation>Incorrect SIF_MsgId in final SIF_Ack</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="SIF_LogEntrySuccessCategoryType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="1">
        <xs:annotation>
          <xs:documentation>Success</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="SIF_LogEntryDataIssuesWithSuccessResultType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="1">
        <xs:annotation>
          <xs:documentation>Data was changed to complete request successfully</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2">
        <xs:annotation>
          <xs:documentation>Data was added to complete request successfully</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="SIF_LogEntryDataIssuesWithFailureResultType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="1">
        <xs:annotation>
          <xs:documentation>Insufficient information in message</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2">
        <xs:annotation>
          <xs:documentation>Cannot process change due to business rule</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3">
        <xs:annotation>
          <xs:documentation>Related information unavailable</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="SIF_LogEntryAgentErrorConditionType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="1">
        <xs:annotation>
          <xs:documentation>An exception has occurred in the agent (generic error)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="SIF_LogEntryZISErrorConditionType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="1">
        <xs:annotation>
          <xs:documentation>An exception has occurred in the ZIS (generic error)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2">
        <xs:annotation>
          <xs:documentation>Message could not be delivered due to buffer size limitations</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3">
        <xs:annotation>
          <xs:documentation>Message could not be delivered due to minimum security requirements</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4">
        <xs:annotation>
          <xs:documentation>Message could not be delivered due to destination agent not supporting SIF_Version</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5">
        <xs:annotation>
          <xs:documentation>Message could not be delivered due to SIF_Response validation</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKUsualModeOfTravelType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="WLK">
        <xs:annotation>
          <xs:documentation>Walk</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CYC">
        <xs:annotation>
          <xs:documentation>Cycle</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CAR">
        <xs:annotation>
          <xs:documentation>Car/Van</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CRS">
        <xs:annotation>
          <xs:documentation>Car Share (with a child/children from a different household)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PSB">
        <xs:annotation>
          <xs:documentation>Public service bus</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DSB">
        <xs:annotation>
          <xs:documentation>Dedicated school bus</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="BNK">
        <xs:annotation>
          <xs:documentation>Bus (type not known)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="TXI">
        <xs:annotation>
          <xs:documentation>Taxi</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="TRN">
        <xs:annotation>
          <xs:documentation>Train</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="LUL">
        <xs:annotation>
          <xs:documentation>London Underground</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="MTL">
        <xs:annotation>
          <xs:documentation>Metro/Tram/Light Rail</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OTH">
        <xs:annotation>
          <xs:documentation>Other</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKAssessmentMethodType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="DD">
        <xs:annotation>
          <xs:documentation>Disapplied</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="NA">
        <xs:annotation>
          <xs:documentation>Not assessed</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="TA">
        <xs:annotation>
          <xs:documentation>Teacher Assessment</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="TT">
        <xs:annotation>
          <xs:documentation>Task / Test</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKAssessmentResultQualifierType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="EG">
        <xs:annotation>
          <xs:documentation>Examination/Post-14 Qualification Grade</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="EL">
        <xs:annotation>
          <xs:documentation>EAL Assessment Level (Pre NC Level 2)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FC">
        <xs:annotation>
          <xs:documentation>Foundation Stage Profile Count</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FD">
        <xs:annotation>
          <xs:documentation>Foundation Stage Profile Detail</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FS">
        <xs:annotation>
          <xs:documentation>Foundation Stage Profile Score</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IA">
        <xs:annotation>
          <xs:documentation>International Baccalaureate Assessment</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IG">
        <xs:annotation>
          <xs:documentation>International Baccalaureate Grade Point</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IR">
        <xs:annotation>
          <xs:documentation>International Baccalaureate Final Result</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IS">
        <xs:annotation>
          <xs:documentation>International Baccalaureate Aggregate Grade Points</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="NA">
        <xs:annotation>
          <xs:documentation>National Curriculum Age Standardised Score</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ND">
        <xs:annotation>
          <xs:documentation>National Curriculum Level (Decimalised)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="NF">
        <xs:annotation>
          <xs:documentation>National Curriculum Level with Fine Grading</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="NL">
        <xs:annotation>
          <xs:documentation>National Curriculum Level</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="NM">
        <xs:annotation>
          <xs:documentation>National Curriculum Task/Test Mark</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="NP">
        <xs:annotation>
          <xs:documentation>SEN Assessment Level (P Scale)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="NR">
        <xs:annotation>
          <xs:documentation>National Curriculum Test Raw Score</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="NS">
        <xs:annotation>
          <xs:documentation>National Curriculum Summary (Aggregate) Mark</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="AG">
        <xs:annotation>
          <xs:documentation>Age score</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SA">
        <xs:annotation>
          <xs:documentation>Standard age score</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="LG">
        <xs:annotation>
          <xs:documentation>Letter grade / mark</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ML">
        <xs:annotation>
          <xs:documentation>Mastery level</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="NC">
        <xs:annotation>
          <xs:documentation>Normal curve equivalent score</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="NM">
        <xs:annotation>
          <xs:documentation>Number score</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="NS">
        <xs:annotation>
          <xs:documentation>Normalised standard score</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PF">
        <xs:annotation>
          <xs:documentation>Pass/fail</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PC">
        <xs:annotation>
          <xs:documentation>Percentile</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PR">
        <xs:annotation>
          <xs:documentation>Percentile rank</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="RA">
        <xs:annotation>
          <xs:documentation>Ranking</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="RS">
        <xs:annotation>
          <xs:documentation>Raw score</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SC">
        <xs:annotation>
          <xs:documentation>Scale score</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OT">
        <xs:annotation>
          <xs:documentation>Other</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CM">
        <xs:annotation>
          <xs:documentation>Comment</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKAssessmentResultStatusType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="E">
        <xs:annotation>
          <xs:documentation>Estimate</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="I">
        <xs:annotation>
          <xs:documentation>Interim</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="P">
        <xs:annotation>
          <xs:documentation>Provisional (subject to regarding/appeal</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="R">
        <xs:annotation>
          <xs:documentation>Result</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="T">
        <xs:annotation>
          <xs:documentation>Target</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKAssessmentStageType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="FSP">
        <xs:annotation>
          <xs:documentation>Foundation Stage Profile (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="KS0">
        <xs:annotation>
          <xs:documentation>Baseline Assessment (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="KS1">
        <xs:annotation>
          <xs:documentation>Key Stage 1 (End of) (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="K1T">
        <xs:annotation>
          <xs:documentation>Key Stage 1 Trial (Historical) (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="K2P">
        <xs:annotation>
          <xs:documentation>Key Stage 2 Progression Tests (Pilot) (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="K3P">
        <xs:annotation>
          <xs:documentation>Key Stage 3 Progression Tests (Pilot) (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="KS2">
        <xs:annotation>
          <xs:documentation>Key Stage 2 (End of) (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="KS3">
        <xs:annotation>
          <xs:documentation>Key Stage 3 (End of) (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="KS4">
        <xs:annotation>
          <xs:documentation>GCSE / GNVQ / Other Approved Awards (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="KS5">
        <xs:annotation>
          <xs:documentation>A Level/AS Level/Advanced GNVQ/Other Advanced Studies (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Y03">
        <xs:annotation>
          <xs:documentation>Year 3 Optional Tests / Teacher Assessments (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Y04">
        <xs:annotation>
          <xs:documentation>Year 4 Optional Tests / Teacher Assessments (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Y4X">
        <xs:annotation>
          <xs:documentation>Year 4 Optional Tests (1997 Based) (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Y05">
        <xs:annotation>
          <xs:documentation>Year 5 Optional Tests / Teacher Assessments (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Y07">
        <xs:annotation>
          <xs:documentation>Year 7 Optional Tests / Teacher Assessments (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Y7P">
        <xs:annotation>
          <xs:documentation>Year 7 Progress Tests (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Y08">
        <xs:annotation>
          <xs:documentation>Year 8 Optional Tests / Teacher Assessments (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="EAL">
        <xs:annotation>
          <xs:documentation>English as an Additional Language Level of Acquisition (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SEN">
        <xs:annotation>
          <xs:documentation>P-Scale Assessment for SEN children (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="W09">
        <xs:annotation>
          <xs:documentation>World Class Tests – Aged 9 (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="W13">
        <xs:annotation>
          <xs:documentation>World Class Tests – Aged 13 (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="P2">
        <xs:annotation>
          <xs:documentation>Primary 2 (locale: S)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="P3">
        <xs:annotation>
          <xs:documentation>Primary 3 (locale: S)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="P4">
        <xs:annotation>
          <xs:documentation>Primary 4 (locale: S)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="P5">
        <xs:annotation>
          <xs:documentation>Primary 5 (locale: S)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="P6">
        <xs:annotation>
          <xs:documentation>Primary 6 (locale: S)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="P7">
        <xs:annotation>
          <xs:documentation>Primary 7 (locale: S)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="S1">
        <xs:annotation>
          <xs:documentation>Secondary 1 (locale: S)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="S2">
        <xs:annotation>
          <xs:documentation>Secondary 2 (locale: S)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKAssessmentSubjectType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="ARA">
        <xs:annotation>
          <xs:documentation>Arabic (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ART">
        <xs:annotation>
          <xs:documentation>Art and Design (locale: E W)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="BEN">
        <xs:annotation>
          <xs:documentation>Bengali (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CHI">
        <xs:annotation>
          <xs:documentation>Chinese (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CLL">
        <xs:annotation>
          <xs:documentation>Communication Language &amp; Literacy (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CRE">
        <xs:annotation>
          <xs:documentation>Creative Development (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CYM">
        <xs:annotation>
          <xs:documentation>Welsh (locale: W)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DAN">
        <xs:annotation>
          <xs:documentation>Danish (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DAT">
        <xs:annotation>
          <xs:documentation>Design and Technology (locale: E W)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DUT">
        <xs:annotation>
          <xs:documentation>Dutch (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ENG">
        <xs:annotation>
          <xs:documentation>English (locale: E S W)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FIN">
        <xs:annotation>
          <xs:documentation>Finnish (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FRE">
        <xs:annotation>
          <xs:documentation>French (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FSP">
        <xs:annotation>
          <xs:documentation>Foundation Stage Profile (Total) (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="GAE">
        <xs:annotation>
          <xs:documentation>Gaelic / Gaidhlg (locale: S)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="GEO">
        <xs:annotation>
          <xs:documentation>Geography (locale: E W)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="GER">
        <xs:annotation>
          <xs:documentation>German (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="GRE">
        <xs:annotation>
          <xs:documentation>Modern Greek (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="GUJ">
        <xs:annotation>
          <xs:documentation>Gujarati (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="HEB">
        <xs:annotation>
          <xs:documentation>Modern Hebrew (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="HIS">
        <xs:annotation>
          <xs:documentation>History (locale: E W)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ICT">
        <xs:annotation>
          <xs:documentation>Information &amp; Communication Technology (locale: E W)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ITA">
        <xs:annotation>
          <xs:documentation>Italian (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="JAP">
        <xs:annotation>
          <xs:documentation>Japanese (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="KUW">
        <xs:annotation>
          <xs:documentation>Knowledge &amp; Understanding of World (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="MAT">
        <xs:annotation>
          <xs:documentation>Mathematics / Mathematical Development (locale: E S W)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="MFL">
        <xs:annotation>
          <xs:documentation>Modern Foreign Language (locale: E W)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="MUS">
        <xs:annotation>
          <xs:documentation>Music (locale: E W)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PAN">
        <xs:annotation>
          <xs:documentation>Panjabi (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PED">
        <xs:annotation>
          <xs:documentation>Physical Education (locale: E W)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PHY">
        <xs:annotation>
          <xs:documentation>Physical Development (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="POR">
        <xs:annotation>
          <xs:documentation>Portuguese (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PSE">
        <xs:annotation>
          <xs:documentation>Personal Social &amp; Emotional Development (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PSH">
        <xs:annotation>
          <xs:documentation>Personal Social &amp; Health Education (PSHE) (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="RUS">
        <xs:annotation>
          <xs:documentation>Russian (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SCI">
        <xs:annotation>
          <xs:documentation>Science (locale: E W)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SPA">
        <xs:annotation>
          <xs:documentation>Spanish (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SWE">
        <xs:annotation>
          <xs:documentation>Swedish (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="TUR">
        <xs:annotation>
          <xs:documentation>Turkish (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="URD">
        <xs:annotation>
          <xs:documentation>Urdu (locale: E)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="WEL">
        <xs:annotation>
          <xs:documentation>Welsh (locale: E W)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKAttendanceSessionType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="AM">
        <xs:annotation>
          <xs:documentation>AM Session</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PM">
        <xs:annotation>
          <xs:documentation>PM Session</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="NA">
        <xs:annotation>
          <xs:documentation>Not Applicable</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKAttendanceSourceType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="BIO">
        <xs:annotation>
          <xs:documentation>Biometric device</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="HU">
        <xs:annotation>
          <xs:documentation>Human other than workforce member</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="WF">
        <xs:annotation>
          <xs:documentation>Workforce Member</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OT">
        <xs:annotation>
          <xs:documentation>Other non-human input source</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKLocaleType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="E">
        <xs:annotation>
          <xs:documentation>England</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="N">
        <xs:annotation>
          <xs:documentation>Northern Ireland</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="S">
        <xs:annotation>
          <xs:documentation>Scotland</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="W">
        <xs:annotation>
          <xs:documentation>Wales/Cymru</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="O">
        <xs:annotation>
          <xs:documentation>Other</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKAbsenceCategoryType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="MAT">
        <xs:annotation>
          <xs:documentation>Maternity /Paternity leave</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OTH">
        <xs:annotation>
          <xs:documentation>Other paid authorised absence, e.g. compassionate leave</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PUB">
        <xs:annotation>
          <xs:documentation>Paid absence for public duties</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SEC">
        <xs:annotation>
          <xs:documentation>Secondment</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SIC">
        <xs:annotation>
          <xs:documentation>Sickness</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="TRN">
        <xs:annotation>
          <xs:documentation>Training</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="UNA">
        <xs:annotation>
          <xs:documentation>Unauthorised absence</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="UNP">
        <xs:annotation>
          <xs:documentation>Unpaid, authorised absence</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKAdditionalPaymentTypeType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="LIN">
        <xs:annotation>
          <xs:documentation>Inner London Weighting (Support Staff)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="LOT">
        <xs:annotation>
          <xs:documentation>Outer London Weighting (Support Staff)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="LFR">
        <xs:annotation>
          <xs:documentation>London Fringe Weighting (Support Staff)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="MAL">
        <xs:annotation>
          <xs:documentation>Management Allowances</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="TLR">
        <xs:annotation>
          <xs:documentation>Teaching and Learning Responsibility Payments</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="RAR">
        <xs:annotation>
          <xs:documentation>Recruitment and Retention </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SEN">
        <xs:annotation>
          <xs:documentation>SEN Allowances</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ACT">
        <xs:annotation>
          <xs:documentation>Acting</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="RES">
        <xs:annotation>
          <xs:documentation>Residential duties</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="INS">
        <xs:annotation>
          <xs:documentation>INSET</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OOS">
        <xs:annotation>
          <xs:documentation>Out of School Activities</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="RCP">
        <xs:annotation>
          <xs:documentation>Recruitment Incentive (Pay)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="RCC">
        <xs:annotation>
          <xs:documentation>Recruitment Incentive (One Off Payment)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="RCA">
        <xs:annotation>
          <xs:documentation>Recruitment Incentive (Other)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="WEL">
        <xs:annotation>
          <xs:documentation>Welcome Back</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="GTC">
        <xs:annotation>
          <xs:documentation>GTC subscription </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="UQT">
        <xs:annotation>
          <xs:documentation>Unqualified Teachers</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OTH">
        <xs:annotation>
          <xs:documentation>Other</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKAdmissionsAptitudeCodeType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="PE">
        <xs:annotation>
          <xs:documentation>Physical Education or Sport</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PA">
        <xs:annotation>
          <xs:documentation>Performing Arts</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="VA">
        <xs:annotation>
          <xs:documentation>Visual Arts</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ML">
        <xs:annotation>
          <xs:documentation>Modern Foreign Languages</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DT">
        <xs:annotation>
          <xs:documentation>Design Technology or IT</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OT">
        <xs:annotation>
          <xs:documentation>Other</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKAdmissionsOfferStatusType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="O">
        <xs:annotation>
          <xs:documentation>Offer</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="N">
        <xs:annotation>
          <xs:documentation>No offer</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="W">
        <xs:annotation>
          <xs:documentation>Withdraw Previous Offer</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="D">
        <xs:annotation>
          <xs:documentation>Discard (higher preference offered)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKAdmissionsNotifyMethodType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="O">
        <xs:annotation>
          <xs:documentation>Online</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="E">
        <xs:annotation>
          <xs:documentation>Email</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="T">
        <xs:annotation>
          <xs:documentation>SMS/Text message</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="L">
        <xs:annotation>
          <xs:documentation>Letter</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKAdmissionsPrebandCategoryType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="1A">
        <xs:annotation>
          <xs:documentation>Band 1A (Highest)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1B">
        <xs:annotation>
          <xs:documentation>Band 1B</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2A">
        <xs:annotation>
          <xs:documentation>Band 2A</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2B">
        <xs:annotation>
          <xs:documentation>Band 2B</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3">
        <xs:annotation>
          <xs:documentation>Band 3 (Lowest)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="U">
        <xs:annotation>
          <xs:documentation>Band Unknown</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKAdmissionsReasonCodeType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="DIST">
        <xs:annotation>
          <xs:documentation>Distance</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SIBL">
        <xs:annotation>
          <xs:documentation>Sibling</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="MEDL">
        <xs:annotation>
          <xs:documentation>Medical</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="RLGN">
        <xs:annotation>
          <xs:documentation>Religion</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CTCH">
        <xs:annotation>
          <xs:documentation>Catchment Area</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FEED">
        <xs:annotation>
          <xs:documentation>Feeder School</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="TRAV">
        <xs:annotation>
          <xs:documentation>Travelling Time</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SSEX">
        <xs:annotation>
          <xs:documentation>Single Sex School</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="COED">
        <xs:annotation>
          <xs:documentation>Coeducational School</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="APTD">
        <xs:annotation>
          <xs:documentation>Aptitude</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SOCL">
        <xs:annotation>
          <xs:documentation>Social Reasons</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OTHR">
        <xs:annotation>
          <xs:documentation>Other</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKADTFileStatusTypeType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="Prime">
        <xs:annotation>
          <xs:documentation>These files contain completely new data and should be considered the complete application for the student.  </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Change">
        <xs:annotation>
          <xs:documentation>A 'Change' value means that all data previously supplied (apart from the Application Reference) are to be deleted and only the data in the change file to be used for pupils in the file.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Withdrawal">
        <xs:annotation>
          <xs:documentation>These files advise the  LA or Own Admission Authority school that an application should be noted as withdrawn for a pupil who moves away from the LA during the admissions process.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Suspended">
        <xs:annotation>
          <xs:documentation>This is a precautionary status, as it is not known when it might be used.  These records should go to suspense, as it is not possible to know what to do with them if the condition cannot be determined.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Late">
        <xs:annotation>
          <xs:documentation>The records in this file type are considered as late by the Home LAs criteria.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKAdviceAndAssessmentWalesType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="AA1">
        <xs:annotation>
          <xs:documentation>School based assessment</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="AA2">
        <xs:annotation>
          <xs:documentation>External advice/assessment</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="AA3">
        <xs:annotation>
          <xs:documentation>Specialised assessments</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="AA4">
        <xs:annotation>
          <xs:documentation>Multu-agency assessments</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKAlternativeTuitionProvisionTypeType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="HSP">
        <xs:annotation>
          <xs:documentation>Hospital</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IND">
        <xs:annotation>
          <xs:documentation>Independent School</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="NMS">
        <xs:annotation>
          <xs:documentation>Non-maintained Special School</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="NOT">
        <xs:annotation>
          <xs:documentation>Not a School</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKAssignmentPostType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="ADMC">
        <xs:annotation>
          <xs:documentation>Administrator / Clerk </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ADVT">
        <xs:annotation>
          <xs:documentation>Advisory teacher (unattached)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ARTD">
        <xs:annotation>
          <xs:documentation>Art &amp;/or Design Technician</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ASHT">
        <xs:annotation>
          <xs:documentation>Assistant head</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ATTN">
        <xs:annotation>
          <xs:documentation>Attendance Officer</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="BILN">
        <xs:annotation>
          <xs:documentation>Bilingual Support Assistant</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="BURS">
        <xs:annotation>
          <xs:documentation>Bursar</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="BUSS">
        <xs:annotation>
          <xs:documentation>Business Manager</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CTKR">
        <xs:annotation>
          <xs:documentation>Caretaker</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="TCHR">
        <xs:annotation>
          <xs:documentation>Classroom Teacher</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CLNR">
        <xs:annotation>
          <xs:documentation>Cleaner</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CXPA">
        <xs:annotation>
          <xs:documentation>Connexions Personal Adviser</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="COOK">
        <xs:annotation>
          <xs:documentation>Cook</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="COVR">
        <xs:annotation>
          <xs:documentation>Cover Supervisor</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CART">
        <xs:annotation>
          <xs:documentation>Creative Arts Specialist</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DATA">
        <xs:annotation>
          <xs:documentation>Data Manager / Analyst</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DPHT">
        <xs:annotation>
          <xs:documentation>Deputy head</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="EDWO">
        <xs:annotation>
          <xs:documentation>Education Welfare Officer</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="EPSY">
        <xs:annotation>
          <xs:documentation>Educational Psychologist</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ESCT">
        <xs:annotation>
          <xs:documentation>Escort</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="INVG">
        <xs:annotation>
          <xs:documentation>Exam Invigilator</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="EXAM">
        <xs:annotation>
          <xs:documentation>Examinations Officer</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FINC">
        <xs:annotation>
          <xs:documentation>Finance Officer</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="HDTR">
        <xs:annotation>
          <xs:documentation>Head teacher</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="HDYR">
        <xs:annotation>
          <xs:documentation>Head of Year</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="HDPT">
        <xs:annotation>
          <xs:documentation>Head of Department</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="HDHO">
        <xs:annotation>
          <xs:documentation>Head of House</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="HLTA">
        <xs:annotation>
          <xs:documentation>Higher Level Teaching Assistant</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="HSLO">
        <xs:annotation>
          <xs:documentation>Home-School Liaison Officer</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ICTM">
        <xs:annotation>
          <xs:documentation>ICT Network Manager</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ICTT">
        <xs:annotation>
          <xs:documentation>ICT Technician</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="INST">
        <xs:annotation>
          <xs:documentation>Instructor</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="LANG">
        <xs:annotation>
          <xs:documentation>Language support</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SPLY">
        <xs:annotation>
          <xs:documentation>LEA Supply Pool</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="LRNM">
        <xs:annotation>
          <xs:documentation>Learning Manager</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="LMEN">
        <xs:annotation>
          <xs:documentation>Learning Mentor</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="LSEN">
        <xs:annotation>
          <xs:documentation>Learning Support Assistant (for SEN pupils)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="LIBR">
        <xs:annotation>
          <xs:documentation>Librarian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="LITR">
        <xs:annotation>
          <xs:documentation>Literacy Worker</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="MIDA">
        <xs:annotation>
          <xs:documentation>Midday Assistant</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="MIDS">
        <xs:annotation>
          <xs:documentation>Midday Supervisor</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="MINS">
        <xs:annotation>
          <xs:documentation>Minority ethnic support</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="MISC">
        <xs:annotation>
          <xs:documentation>Miscellaneous Teaching Service for the LEA</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="MUSS">
        <xs:annotation>
          <xs:documentation>Music Specialist</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="MUSC">
        <xs:annotation>
          <xs:documentation>Music tuition (include peripatetic)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="NURS">
        <xs:annotation>
          <xs:documentation>Nurse</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="NNSE">
        <xs:annotation>
          <xs:documentation>Nursery Nurse </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OMAN">
        <xs:annotation>
          <xs:documentation>Office Manager</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CATR">
        <xs:annotation>
          <xs:documentation>Other Catering Staff</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OICT">
        <xs:annotation>
          <xs:documentation>Other ICT Support Staff</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PERI">
        <xs:annotation>
          <xs:documentation>Peripatetic Teacher (unattached)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PAHT">
        <xs:annotation>
          <xs:documentation>Personal Assistant to Headteacher</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PREM">
        <xs:annotation>
          <xs:documentation>Premises Manager</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="RECP">
        <xs:annotation>
          <xs:documentation>Receptionist</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="RPRG">
        <xs:annotation>
          <xs:documentation>Reprographics Technician</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SSEC">
        <xs:annotation>
          <xs:documentation>School Secretary</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="STCH">
        <xs:annotation>
          <xs:documentation>Science Technician</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SENC">
        <xs:annotation>
          <xs:documentation>SEN co-ordinator</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="TNON">
        <xs:annotation>
          <xs:documentation>Teacher: engaged for non-school education</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="TPRU">
        <xs:annotation>
          <xs:documentation>Teacher: engaged to teach in a Pupil Referral Unit</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="TMIS">
        <xs:annotation>
          <xs:documentation>Teacher: engaged to teach in miscellaneous establishments</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="TASS">
        <xs:annotation>
          <xs:documentation>Teaching Assistant</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="TTCH">
        <xs:annotation>
          <xs:documentation>Technology Technician</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="THER">
        <xs:annotation>
          <xs:documentation>Therapist</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="TRAV">
        <xs:annotation>
          <xs:documentation>Traveller support</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="VOLN">
        <xs:annotation>
          <xs:documentation>Volunteer</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="WELF">
        <xs:annotation>
          <xs:documentation>Welfare Assistant</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKAttendanceCodeType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="/">
        <xs:annotation>
          <xs:documentation>Present (AM)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="\">
        <xs:annotation>
          <xs:documentation>Present (PM)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="B">
        <xs:annotation>
          <xs:documentation>Approved education activity as pupil being educated off site (not dual registration)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="C">
        <xs:annotation>
          <xs:documentation>Authorised absence as pupil is absent due to other authorised circumstances, including Public performances and employment (licensed under regulations), family bereavement, special occasions (in limited circumstances), absences when Traveller children are attending another school.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="D">
        <xs:annotation>
          <xs:documentation>Approved education activity as pupil is dual registered (i.e. attending another establishment)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="E">
        <xs:annotation>
          <xs:documentation>Authorised absence as pupil is excluded, with no alternative provision made</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="F">
        <xs:annotation>
          <xs:documentation>Authorised absence due to agreed extended family holiday</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="G">
        <xs:annotation>
          <xs:documentation>Unauthorised absence as pupil is on a family holiday, not agreed, or is taking days in excess of an agreed family holiday</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="H">
        <xs:annotation>
          <xs:documentation>Authorised absence due to agreed family holiday</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="I">
        <xs:annotation>
          <xs:documentation>Authorised absence due to Illness (NOT medical or dental etc. appointments)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="J">
        <xs:annotation>
          <xs:documentation>Approved education activity as pupil is attending interview</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="K">
        <xs:annotation>
          <xs:documentation>Unknown - used as a placeholder in lieu of valid data. Assumed to be authorised and present until otherwise proven or changed.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="L">
        <xs:annotation>
          <xs:documentation>Late (before registers closed) marked as present</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="M">
        <xs:annotation>
          <xs:documentation>Authorised absence due to medical / dental appointments</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="N">
        <xs:annotation>
          <xs:documentation>Unauthorised absence as pupil missed sessions for a reason that has not yet been provided</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="O">
        <xs:annotation>
          <xs:documentation>Unauthorised absence as pupil missed sessions for an unauthorised absence not covered by any other code/description</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="P">
        <xs:annotation>
          <xs:documentation>Approved education activity as pupil is attending an approved sporting activity</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="R">
        <xs:annotation>
          <xs:documentation>Authorised absence due to religious observance</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="S">
        <xs:annotation>
          <xs:documentation>Authorised absence due to study leave</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="T">
        <xs:annotation>
          <xs:documentation>Authorised absence due to traveller absence</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="U">
        <xs:annotation>
          <xs:documentation>Unauthorised absence as pupil arrived after registers closed</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="V">
        <xs:annotation>
          <xs:documentation>Approved education activity as pupil is away on an educational visit or trip</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="W">
        <xs:annotation>
          <xs:documentation>Approved education activity as pupil is attending work experience</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="X">
        <xs:annotation>
          <xs:documentation>Non-compulsory school age absence - not counted in possible attendances</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Y">
        <xs:annotation>
          <xs:documentation>Enforced closure - not counted in possible attendances</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Z">
        <xs:annotation>
          <xs:documentation>Pupil not yet on roll - not counted in possible attendances</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="#">
        <xs:annotation>
          <xs:documentation>School closed to pupils - not counted in possible attendances</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKAttendanceDomainType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="Lesson">
        <xs:annotation>
          <xs:documentation>Domain is recorded for a lesson only</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Session">
        <xs:annotation>
          <xs:documentation>Domain is recorded for a session only</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Both">
        <xs:annotation>
          <xs:documentation>Domain applies to both lessons and sessions</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKBasicSkillsSupportWalesType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="00">
        <xs:annotation>
          <xs:documentation>Does not require support</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="01">
        <xs:annotation>
          <xs:documentation>Specialist literacy support only</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="02">
        <xs:annotation>
          <xs:documentation>Specialist numeracy support only</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="03">
        <xs:annotation>
          <xs:documentation>specialist literacy and numeracy support</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="04">
        <xs:annotation>
          <xs:documentation>other literacy support</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="05">
        <xs:annotation>
          <xs:documentation>other numeracy support</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="06">
        <xs:annotation>
          <xs:documentation>other literacy and numeracy support</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="07">
        <xs:annotation>
          <xs:documentation>Needs support but has not/will not receive support</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="90">
        <xs:annotation>
          <xs:documentation>Basic Skills needs not assessed</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKBirthDateVerificationLevelType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="0">
        <xs:annotation>
          <xs:documentation>Not Verified</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1">
        <xs:annotation>
          <xs:documentation>One or more of the following Secondary certificates: Certificate of Baptism; Marriage Certificate; National Health Service Medical Card; Child's Certificate of Vaccination; Child's Health Record Card; A certificate of Service in HM Forces or other employment under the Crown or in the Mercantile Marine; A certificate of membership of a Trade Union Friendly Society or any cards or papers relating to membership of an Approved Society or Unemployment Insurance Apprenticeship indentures; Early certificate or testimonial from employer; Aliens registration card, certificate of naturalisation, Home Office travel document or a passport; Life insurance policy; Certificate of confirmation; School certificate or report; A birthday book or old family record; Family Bible containing a record of birth.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2">
        <xs:annotation>
          <xs:documentation>One of the following:  Full certificate; Birth certificate short form; Certificate of registry showing given names and family name; GRO copy; Adoption Order issued by the High Court, County Court or Juvenile Court; Certificate of adoption issued by the GRO; Foreign birth certificate issued by registration authority of the foreign country.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKBoarderTypeType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="B">
        <xs:annotation>
          <xs:documentation>Boarder, nights per week not specified</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="6">
        <xs:annotation>
          <xs:documentation>Boarder, six nights or less a week</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7">
        <xs:annotation>
          <xs:documentation>Boarder, seven nights a week</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="N">
        <xs:annotation>
          <xs:documentation>Not a boarder</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKClassTypeType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="N">
        <xs:annotation>
          <xs:documentation>Nursery Class (England), Nursery Class (not a Special Class/Unit) (Wales)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="O">
        <xs:annotation>
          <xs:documentation>Not a Nursery Class (England), Other Class (not a Special Class/Unit) (Wales)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="S">
        <xs:annotation>
          <xs:documentation>Nursery Special Class/Unit (Wales)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKConnexionsAgreementType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="Yes">
        <xs:annotation>
          <xs:documentation>Permission has been given by the parent or guardian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="No">
        <xs:annotation>
          <xs:documentation>Parent or guardian has refused permission</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="UNS">
        <xs:annotation>
          <xs:documentation>Unsought - School has not yet sent out Fair Processing Notices (Data cannot be shared with Connexions)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SNR">
        <xs:annotation>
          <xs:documentation>Sought, No Reply - School has sent out Fair Processing Notices, but has received no reply from parent or guardian (Data can be shared with Connexions)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKCurriculumAndTeachingMethodsWalesType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="CT1">
        <xs:annotation>
          <xs:documentation>Some targeted differentiation</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CT2">
        <xs:annotation>
          <xs:documentation>Significant and targeted differentiation</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CT3">
        <xs:annotation>
          <xs:documentation>Some curriculum modifications</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CT4">
        <xs:annotation>
          <xs:documentation>Significant curriculum modifications</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKExclusionReasonType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="BU">
        <xs:annotation>
          <xs:documentation>Bullying</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DA">
        <xs:annotation>
          <xs:documentation>Drug and alcohol related</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DB">
        <xs:annotation>
          <xs:documentation>Persistent disruptive behaviour</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DM">
        <xs:annotation>
          <xs:documentation>Damage to property</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DR">
        <xs:annotation>
          <xs:documentation>Defiance of rules/ discipline policy</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PA">
        <xs:annotation>
          <xs:documentation>Physical assault against an adult</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PP">
        <xs:annotation>
          <xs:documentation>Physical assault against a pupil</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PW">
        <xs:annotation>
          <xs:documentation>Possession / use of weapon</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="RA">
        <xs:annotation>
          <xs:documentation>Racial harrassment/abuse</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SM">
        <xs:annotation>
          <xs:documentation>Sexual misconduct/abuse</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="TB">
        <xs:annotation>
          <xs:documentation>Threatening or dangerous behaviour</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="TH">
        <xs:annotation>
          <xs:documentation>Theft</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="VA">
        <xs:annotation>
          <xs:documentation>Verbal abuse/threatening behaviour against an adult</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="VP">
        <xs:annotation>
          <xs:documentation>Verbal abuse/threatening behaviour against a pupil</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OT">
        <xs:annotation>
          <xs:documentation>Other</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKFamilyStructureType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="S">
        <xs:annotation>
          <xs:documentation>Single Parent</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="A">
        <xs:annotation>
          <xs:documentation>2 Adults</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="F">
        <xs:annotation>
          <xs:documentation>Foster Parents</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="C">
        <xs:annotation>
          <xs:documentation>In Residental Care</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="U">
        <xs:annotation>
          <xs:documentation>Unknown</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKGeneralSubjectType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="AAD">
        <xs:annotation>
          <xs:documentation>Applied Art &amp; Design</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ABS">
        <xs:annotation>
          <xs:documentation>Applied Business Studies</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ACC">
        <xs:annotation>
          <xs:documentation>Accountancy</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="AHS">
        <xs:annotation>
          <xs:documentation>Combined Arts / Humanities / Social studies</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="AIT">
        <xs:annotation>
          <xs:documentation>Applied ICT</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ARA">
        <xs:annotation>
          <xs:documentation>Arabic</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ART">
        <xs:annotation>
          <xs:documentation>Art &amp; Design / Art</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ASC">
        <xs:annotation>
          <xs:documentation>Applied Science</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="BEN">
        <xs:annotation>
          <xs:documentation>Bengali</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="BIO">
        <xs:annotation>
          <xs:documentation>Biology / Botany / Zoology / Ecology</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CAB">
        <xs:annotation>
          <xs:documentation>Commercial &amp; Business Studies/Education/Management</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CAR">
        <xs:annotation>
          <xs:documentation>Careers Education</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CBE">
        <xs:annotation>
          <xs:documentation>Construction and Built Environment / Building</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CDT">
        <xs:annotation>
          <xs:documentation>Craft, Design &amp; Technology</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CHD">
        <xs:annotation>
          <xs:documentation>Child Development</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CHI">
        <xs:annotation>
          <xs:documentation>Chinese</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CHM">
        <xs:annotation>
          <xs:documentation>Chemistry</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CIT">
        <xs:annotation>
          <xs:documentation>Citizenship</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CLS">
        <xs:annotation>
          <xs:documentation>Classics</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="COM">
        <xs:annotation>
          <xs:documentation>Communication Studies</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="COS">
        <xs:annotation>
          <xs:documentation>Community Studies</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CSB">
        <xs:annotation>
          <xs:documentation>Combined/General Science - Biology</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CSC">
        <xs:annotation>
          <xs:documentation>Combined/General Science - Chemistry</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CSP">
        <xs:annotation>
          <xs:documentation>Combined/General Science - Physics</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CYM">
        <xs:annotation>
          <xs:documentation>Cymraeg/Welsh (as First Language)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DAN">
        <xs:annotation>
          <xs:documentation>Danish</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DAT">
        <xs:annotation>
          <xs:documentation>Design and Technology</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DNC">
        <xs:annotation>
          <xs:documentation>Dance</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DRA">
        <xs:annotation>
          <xs:documentation>Drama</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DTE">
        <xs:annotation>
          <xs:documentation>Design and Technology - Electronics</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DTF">
        <xs:annotation>
          <xs:documentation>Design and Technology - Food Technology</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DTG">
        <xs:annotation>
          <xs:documentation>Design and Technology - Graphics</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DTR">
        <xs:annotation>
          <xs:documentation>Design and Technology - Resistant Materials</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DTS">
        <xs:annotation>
          <xs:documentation>Design and Technology - Systems &amp; Control</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DTT">
        <xs:annotation>
          <xs:documentation>Design and Technology - Textiles</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DUT">
        <xs:annotation>
          <xs:documentation>Dutch</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ECO">
        <xs:annotation>
          <xs:documentation>Economics</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="EDU">
        <xs:annotation>
          <xs:documentation>Education</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ENG">
        <xs:annotation>
          <xs:documentation>English</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ENR">
        <xs:annotation>
          <xs:documentation>Engineering</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ENV">
        <xs:annotation>
          <xs:documentation>Environmental Science/Studies</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="EUR">
        <xs:annotation>
          <xs:documentation>European Studies</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FIN">
        <xs:annotation>
          <xs:documentation>Finnish</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FRE">
        <xs:annotation>
          <xs:documentation>French</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="GEN">
        <xs:annotation>
          <xs:documentation>General Studies</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="GEO">
        <xs:annotation>
          <xs:documentation>Geography</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="GER">
        <xs:annotation>
          <xs:documentation>German</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="GLG">
        <xs:annotation>
          <xs:documentation>Geology</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="GPL">
        <xs:annotation>
          <xs:documentation>Government &amp; Politics</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="GRC">
        <xs:annotation>
          <xs:documentation>Greek (Classical)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="GRE">
        <xs:annotation>
          <xs:documentation>Greek (Modern)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="GUJ">
        <xs:annotation>
          <xs:documentation>Gujerati</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="HAC">
        <xs:annotation>
          <xs:documentation>Hospitality and Catering</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="HBB">
        <xs:annotation>
          <xs:documentation>Hebrew (Biblical)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="HEB">
        <xs:annotation>
          <xs:documentation>Hebrew (Modern)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="HIN">
        <xs:annotation>
          <xs:documentation>Hindi</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="HIS">
        <xs:annotation>
          <xs:documentation>History</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="HSC">
        <xs:annotation>
          <xs:documentation>Health and Social Care</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="HUM">
        <xs:annotation>
          <xs:documentation>Humanities</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ICT">
        <xs:annotation>
          <xs:documentation>Information &amp; Communication Technology</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IND">
        <xs:annotation>
          <xs:documentation>Industrial Studies</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ITA">
        <xs:annotation>
          <xs:documentation>Italian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="JAP">
        <xs:annotation>
          <xs:documentation>Japanese</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="KSK">
        <xs:annotation>
          <xs:documentation>Key Skills (Only if &lt;KeyStage&gt; = 4)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="LAE">
        <xs:annotation>
          <xs:documentation>Land &amp; Environment / Agriculture</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="LAT">
        <xs:annotation>
          <xs:documentation>Latin</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="LAW">
        <xs:annotation>
          <xs:documentation>Law</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="LIF">
        <xs:annotation>
          <xs:documentation>Life Skills</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="LTT">
        <xs:annotation>
          <xs:documentation>Leisure, Travel and Tourism</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="MAT">
        <xs:annotation>
          <xs:documentation>Mathematics</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="MED">
        <xs:annotation>
          <xs:documentation>Media Studies</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="MFL">
        <xs:annotation>
          <xs:documentation>Modern Foreign Language</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="MNF">
        <xs:annotation>
          <xs:documentation>Manufacturing</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="MUS">
        <xs:annotation>
          <xs:documentation>Music</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OBC">
        <xs:annotation>
          <xs:documentation>Other Business / Commercial Subject</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OCL">
        <xs:annotation>
          <xs:documentation>Other Classical Studies/Language</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OHU">
        <xs:annotation>
          <xs:documentation>Other Humanities</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OLA">
        <xs:annotation>
          <xs:documentation>Other Language Subject</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OMA">
        <xs:annotation>
          <xs:documentation>Other Mathematical Subject</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OPH">
        <xs:annotation>
          <xs:documentation>Other Physical Subject</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OPR">
        <xs:annotation>
          <xs:documentation>Other Aesthetic / Practical Subject</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OSC">
        <xs:annotation>
          <xs:documentation>Other Sciences</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OSS">
        <xs:annotation>
          <xs:documentation>Other Social Studies</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OTE">
        <xs:annotation>
          <xs:documentation>Other Technological Subject</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OTH">
        <xs:annotation>
          <xs:documentation>Other (not otherwise specified)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OVO">
        <xs:annotation>
          <xs:documentation>Other Vocational Subject</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PAN">
        <xs:annotation>
          <xs:documentation>Panjabi</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PED">
        <xs:annotation>
          <xs:documentation>Physical Education / Sports</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PER">
        <xs:annotation>
          <xs:documentation>Performing Arts</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PHL">
        <xs:annotation>
          <xs:documentation>Philosophy</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PHY">
        <xs:annotation>
          <xs:documentation>Physics</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="POR">
        <xs:annotation>
          <xs:documentation>Portuguese</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PRI">
        <xs:annotation>
          <xs:documentation>Primary Curriculum</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PSH">
        <xs:annotation>
          <xs:documentation>Personal Social &amp; Health Education (PSHE)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PSY">
        <xs:annotation>
          <xs:documentation>Psychology</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="REL">
        <xs:annotation>
          <xs:documentation>Religious Education</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="RUS">
        <xs:annotation>
          <xs:documentation>Russian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="RWD">
        <xs:annotation>
          <xs:documentation>Retail, Warehousing &amp; Distribution</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SCI">
        <xs:annotation>
          <xs:documentation>Science</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SEN">
        <xs:annotation>
          <xs:documentation>Special Educational Needs</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SOC">
        <xs:annotation>
          <xs:documentation>Sociology</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SPA">
        <xs:annotation>
          <xs:documentation>Spanish</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SSS">
        <xs:annotation>
          <xs:documentation>Social Studies/Science</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="STA">
        <xs:annotation>
          <xs:documentation>Statistics</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SWE">
        <xs:annotation>
          <xs:documentation>Swedish</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="TDG">
        <xs:annotation>
          <xs:documentation>Technical Drawing/Graphics</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="TUR">
        <xs:annotation>
          <xs:documentation>Turkish</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="UFA">
        <xs:annotation>
          <xs:documentation>Under-5 Activities</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="URD">
        <xs:annotation>
          <xs:documentation>Urdu</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="VNW">
        <xs:annotation>
          <xs:documentation>Any new GCSE in a vocational subject</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="WEL">
        <xs:annotation>
          <xs:documentation>Welsh</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKGovernanceTypeType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="CO">
        <xs:annotation>
          <xs:documentation>Community</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="VA">
        <xs:annotation>
          <xs:documentation>Voluntary Aided</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="VC">
        <xs:annotation>
          <xs:documentation>Voluntary Controlled</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FO">
        <xs:annotation>
          <xs:documentation>Foundation</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IN">
        <xs:annotation>
          <xs:documentation>Independent</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="NM">
        <xs:annotation>
          <xs:documentation>Non-maintained (England only)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CT">
        <xs:annotation>
          <xs:documentation>City Technology College (England only)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CA">
        <xs:annotation>
          <xs:documentation>Academies (England only)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKGroupRoleType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="HDT">
        <xs:annotation>
          <xs:documentation>Head teacher</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DHT">
        <xs:annotation>
          <xs:documentation>Deputy head</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="AHT">
        <xs:annotation>
          <xs:documentation>Assistant head</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="TCH">
        <xs:annotation>
          <xs:documentation>Classroom teacher</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="AST">
        <xs:annotation>
          <xs:documentation>Advanced Skills Teacher</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="EXL">
        <xs:annotation>
          <xs:documentation>Excellent Teacher</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SUP">
        <xs:annotation>
          <xs:documentation>Support staff</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="AVT">
        <xs:annotation>
          <xs:documentation>Advisory Teacher</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="EPS">
        <xs:annotation>
          <xs:documentation>Educational Psychologist</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ADM">
        <xs:annotation>
          <xs:documentation>Administrator (Additional code for use in the Learning Platform)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="GOV">
        <xs:annotation>
          <xs:documentation>Governor (Additional code for use in the Learning Platform)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ACD">
        <xs:annotation>
          <xs:documentation>Academic (Additional code for use in the Learning Platform)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OTH">
        <xs:annotation>
          <xs:documentation>Other (Additional code for use in the Learning Platform)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="VOL">
        <xs:annotation>
          <xs:documentation>Volunteer (Additional code for use in the Learning Platform)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKGroupingAndSupportWalesType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="GS1">
        <xs:annotation>
          <xs:documentation>Occassional additional support in class</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="GS2">
        <xs:annotation>
          <xs:documentation>Targeted and sustained additional support</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="GS3">
        <xs:annotation>
          <xs:documentation>Small group class provision</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="GS4">
        <xs:annotation>
          <xs:documentation>Mostly small group provision</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKInCareTypeType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="FT">
        <xs:annotation>
          <xs:documentation>Fostered</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CH">
        <xs:annotation>
          <xs:documentation>Children's Home</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="WP">
        <xs:annotation>
          <xs:documentation>With parents</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PA">
        <xs:annotation>
          <xs:documentation>Placed for adoption</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OT">
        <xs:annotation>
          <xs:documentation>Other</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKLanguageStudyType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="1">
        <xs:annotation>
          <xs:documentation>Taught as a first language</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2">
        <xs:annotation>
          <xs:documentation>Taught as a second language</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3">
        <xs:annotation>
          <xs:documentation>Taught other language</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4">
        <xs:annotation>
          <xs:documentation>Not taught language at all</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5">
        <xs:annotation>
          <xs:documentation>Disapplied from curriculum by SEN statement</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKLearnerEnrolmentStatusType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="C">
        <xs:annotation>
          <xs:documentation>Current (single registration at this school)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="G">
        <xs:annotation>
          <xs:documentation>Guest (pupil not registered at this school but attending some lessons or sessions)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="M">
        <xs:annotation>
          <xs:documentation>Current Main (dual registration)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="S">
        <xs:annotation>
          <xs:documentation>Current Subsidiary (dual registration)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="P">
        <xs:annotation>
          <xs:documentation>Previous</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKLearnerIdentityType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="WAL">
        <xs:annotation>
          <xs:documentation>Welsh</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ENG">
        <xs:annotation>
          <xs:documentation>English</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SCO">
        <xs:annotation>
          <xs:documentation>Scottish</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IRE">
        <xs:annotation>
          <xs:documentation>Irish</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="BRI">
        <xs:annotation>
          <xs:documentation>British</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OTH">
        <xs:annotation>
          <xs:documentation>Other</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="REF">
        <xs:annotation>
          <xs:documentation>Refused</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="NOS">
        <xs:annotation>
          <xs:documentation>Not Supplied</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKLeavingDestinationType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="MP">
        <xs:annotation>
          <xs:documentation>Maintained primary school</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IP">
        <xs:annotation>
          <xs:documentation>Independent primary school</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="MS">
        <xs:annotation>
          <xs:documentation>Maintained secondary school</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IS">
        <xs:annotation>
          <xs:documentation>Independent secondary school</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SC">
        <xs:annotation>
          <xs:documentation>6th Form College</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FE">
        <xs:annotation>
          <xs:documentation>General FE, tertiary and specialist colleges </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="HE">
        <xs:annotation>
          <xs:documentation>Higher education institutions</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="WL">
        <xs:annotation>
          <xs:documentation>Work based Learning</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="EM">
        <xs:annotation>
          <xs:documentation>Employment</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="NK">
        <xs:annotation>
          <xs:documentation>Other/Not Known</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKLeavingReasonType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="DD">
        <xs:annotation>
          <xs:documentation>Deceased</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="EO">
        <xs:annotation>
          <xs:documentation>Education other than at school/college</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="EM">
        <xs:annotation>
          <xs:documentation>Emigration</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FE">
        <xs:annotation>
          <xs:documentation>Further Education (Leaver)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FM">
        <xs:annotation>
          <xs:documentation>First to Middle Phase Transfer</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="HE">
        <xs:annotation>
          <xs:documentation>Higher Education (Leaver)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="NI">
        <xs:annotation>
          <xs:documentation>Nursery to Infant</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IJ">
        <xs:annotation>
          <xs:documentation>Infant to Junior/Primary Phase Transfer</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="JS">
        <xs:annotation>
          <xs:documentation>Junior/Primary to Secondary Phase Transfer</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="MS">
        <xs:annotation>
          <xs:documentation>Middle to Secondary Phase Transfer</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OS">
        <xs:annotation>
          <xs:documentation>Other School Sixth Form (Leaver)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OT">
        <xs:annotation>
          <xs:documentation>Other/Unknown</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PE">
        <xs:annotation>
          <xs:documentation>Permanent Exclusion</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ST">
        <xs:annotation>
          <xs:documentation>School Transfer (Mid-Year)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="TR">
        <xs:annotation>
          <xs:documentation>Training (Leaver)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="UN">
        <xs:annotation>
          <xs:documentation>Unemployment (Leaver)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="WK">
        <xs:annotation>
          <xs:documentation>Employment (Leaver)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="MD">
        <xs:annotation>
          <xs:documentation>Military deployment of parent(s)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKMaritalStatusType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="S">
        <xs:annotation>
          <xs:documentation>Single</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="M">
        <xs:annotation>
          <xs:documentation>Married</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="D">
        <xs:annotation>
          <xs:documentation>Divorced</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="W">
        <xs:annotation>
          <xs:documentation>Widowed</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="N">
        <xs:annotation>
          <xs:documentation>Not disclosed</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="P">
        <xs:annotation>
          <xs:documentation>Separated</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKNCYearGroupType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="N1">
        <xs:annotation>
          <xs:documentation>Nursery first year</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="N2">
        <xs:annotation>
          <xs:documentation>Nursery second year</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="R">
        <xs:annotation>
          <xs:documentation>Reception</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1">
        <xs:annotation>
          <xs:documentation>Year 1</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2">
        <xs:annotation>
          <xs:documentation>Year 2</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3">
        <xs:annotation>
          <xs:documentation>Year 3</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4">
        <xs:annotation>
          <xs:documentation>Year 4</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5">
        <xs:annotation>
          <xs:documentation>Year 5</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="6">
        <xs:annotation>
          <xs:documentation>Year 6</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7">
        <xs:annotation>
          <xs:documentation>Year 7</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8">
        <xs:annotation>
          <xs:documentation>Year 8</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9">
        <xs:annotation>
          <xs:documentation>Year 9</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="10">
        <xs:annotation>
          <xs:documentation>Year 10</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="11">
        <xs:annotation>
          <xs:documentation>Year 11</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="12">
        <xs:annotation>
          <xs:documentation>Year 12</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="13">
        <xs:annotation>
          <xs:documentation>Year 13</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="14">
        <xs:annotation>
          <xs:documentation>Year 14</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="M">
        <xs:annotation>
          <xs:documentation>Mixed Year Class - available for School Census Class Information</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="X">
        <xs:annotation>
          <xs:documentation>National Curriculum not followed  available only for Special Schools where pupils are not following a particular NC Year</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKOperationalStatusType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="1">
        <xs:annotation>
          <xs:documentation>Open</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2">
        <xs:annotation>
          <xs:documentation>Closed</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3">
        <xs:annotation>
          <xs:documentation>Open, but proposed to close</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4">
        <xs:annotation>
          <xs:documentation>Proposed to open</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5">
        <xs:annotation>
          <xs:documentation>De-registered as EY Setting</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKPhaseTypeType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="NY">
        <xs:annotation>
          <xs:documentation>Nursery</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PY">
        <xs:annotation>
          <xs:documentation>Primary</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="MP">
        <xs:annotation>
          <xs:documentation>Middle (Deemed Primary)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="MS">
        <xs:annotation>
          <xs:documentation>Middle (Deemed Secondary)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SY">
        <xs:annotation>
          <xs:documentation>Secondary</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="SP">
        <xs:annotation>
          <xs:documentation>Special</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="EY">
        <xs:annotation>
          <xs:documentation>Early Years Setting</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PR">
        <xs:annotation>
          <xs:documentation>Pupil Referral Unit (PRU)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="XX">
        <xs:annotation>
          <xs:documentation>Multiple phases (not Middle, Special, or PRU)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="NO">
        <xs:annotation>
          <xs:documentation>No Establishment (for children not on any establishment roll)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKPhoneTypeType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="F">
        <xs:annotation>
          <xs:documentation>Fax</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="H">
        <xs:annotation>
          <xs:documentation>Home</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="A">
        <xs:annotation>
          <xs:documentation>Alternate Home</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="M">
        <xs:annotation>
          <xs:documentation>Mobile</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="W">
        <xs:annotation>
          <xs:documentation>Work</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="D">
        <xs:annotation>
          <xs:documentation>Minicom (hearing impaired/disabled)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UKRelationshipType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="ASWR">
        <xs:annotation>
          <xs:documentation>Agency representative</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CARE">
        <xs:annotation>
          <xs:documentation>Carer</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CHMR">
        <xs:annotation>
          <xs:documentation>Childminder</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DEPD">
        <xs:annotation>
          <xs:documentation>Dependent</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DOCT">
        <xs:annotation>
          <xs:documentation>Doctor</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="EMPY">
        <xs:annotation>
          <xs:documentation>Employer</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FAAP">
        <xs:annotation>
          <xs:documentation>Adoptive parents</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FAAS">
        <xs:annotation>
          <xs:documentation>Adopted son</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FABH">
        <xs:annotation>
          <xs:documentation>Brother, half</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FABI">
        <xs:annotation>
          <xs:documentation>Brother-in-law</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FABN">
        <xs:annotation>
          <xs:documentation>Brother, natural/adoptive</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FABS">
        <xs:annotation>
          <xs:documentation>Brother, step</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FADF">
        <xs:annotation>
          <xs:documentation>Foster daughter</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FADI">
        <xs:annotation>
          <xs:documentation>Daughter-in-law</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FADR">
        <xs:annotation>
          <xs:documentation>Daughter</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FAFF">
        <xs:annotation>
          <xs:documentation>Father, foster</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FAFI">
        <xs:annotation>
          <xs:documentation>Father-in-law</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FAFN">
        <xs:annotation>
          <xs:documentation>Father, natural/adoptive</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FAFO">
        <xs:annotation>
          <xs:documentation>Father's significant other</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FAFS">
        <xs:annotation>
          <xs:documentation>Father, step</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FAGA">
        <xs:annotation>
          <xs:documentation>Great aunt</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FAGD">
        <xs:annotation>
          <xs:documentation>Granddaughter</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FAGF">
        <xs:annotation>
          <xs:documentation>Grandfather</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FAGM">
        <xs:annotation>
          <xs:documentation>Grandmother</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FAGS">
        <xs:annotation>
          <xs:documentation>Grandson</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FAGU">
        <xs:annotation>
          <xs:documentation>Great uncle</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FALP">
        <xs:annotation>
          <xs:documentation>Life partner</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FAMF">
        <xs:annotation>
          <xs:documentation>Mother, foster</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FAMH">
        <xs:annotation>
          <xs:documentation>Husband</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FAMI">
        <xs:annotation>
          <xs:documentation>Mother-in-law</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FAMN">
        <xs:annotation>
          <xs:documentation>Mother, natural/adoptive</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FAMO">
        <xs:annotation>
          <xs:documentation>Mother's significant other</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FAMS">
        <xs:annotation>
          <xs:documentation>Mother, step</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FANC">
        <xs:annotation>
          <xs:documentation>Niece</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FANW">
        <xs:annotation>
          <xs:documentation>Nephew</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FAOT">
        <xs:annotation>
          <xs:documentation>Family member</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FAPF">
        <xs:annotation>
          <xs:documentation>Foster parent</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FAPP">
        <xs:annotation>
          <xs:documentation>Life partner of parent</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FASF">
        <xs:annotation>
          <xs:documentation>Foster son</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FASH">
        <xs:annotation>
          <xs:documentation>Sister, half</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FASI">
        <xs:annotation>
          <xs:documentation>Sister-in-law</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FASN">
        <xs:annotation>
          <xs:documentation>Sister, natural/adoptive</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FASO">
        <xs:annotation>
          <xs:documentation>Son</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FASP">
        <xs:annotation>
          <xs:documentation>Stepson</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FASS">
        <xs:annotation>
          <xs:documentation>Sister, step</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FASW">
        <xs:annotation>
          <xs:documentation>Son-in-law</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FNCF">
        <xs:annotation>
          <xs:documentation>Fiance</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FNCM">
        <xs:annotation>
          <xs:documentation>Fianc</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="FRND">
        <xs:annotation>
          <xs:documentation>Friend</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="GUAR">
        <xs:annotation>
  
