<!--SIF Implementation Specification (Australia) 1.0 (November 20, 2009) Infrastructure Version: 2.3-17-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" targetNamespace="http://www.sifinfo.org/au/infrastructure/2.x" xmlns:sif="http://www.sifinfo.org/au/infrastructure/2.x" elementFormDefault="qualified">
  <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="imports/xml/xml.xsd" />

  <!--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/au/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.3.
            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.
            
              While envisioned as the primary mechanism for SIF-based ReportManifests,
            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_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>


  <!--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">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="sif:SIF_Header" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Category" minOccurs="0">
        <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">
        <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">
        <xs:simpleType>
          <xs:restriction base="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:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SIF_Desc">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:annotation>
              <xs:documentation>A textual description of the error.</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>Any extended error description.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_LogObjects" minOccurs="0">
        <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 ref="sif:SIF_Metadata" minOccurs="0" />
      <xs:element ref="sif:SIF_ExtendedElements" minOccurs="0" />
    </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" />


  <!--SIF_LogEntryInfrastructure-->

  <xs:complexType name="SIF_LogEntryInfrastructureType">
    <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">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="sif:SIF_Header" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Category" minOccurs="0">
        <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">
        <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">
        <xs:simpleType>
          <xs:restriction base="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:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SIF_Desc">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:annotation>
              <xs:documentation>A textual description of the error.</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>Any extended error description.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_LogObjects" minOccurs="0">
        <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 ref="sif:SIF_Metadata" minOccurs="0" />
      <xs:element ref="sif:SIF_ExtendedElements" minOccurs="0" />
    </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>


  <!--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>


  <!--Data Model Common Elements-->


  <!--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. 
      </xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="LocalId" type="sif:LocalIdType" />


  <!--Location-->

  <xs:complexType name="LocationType">
    <xs:sequence>
      <xs:element name="LocationName" minOccurs="0" nillable="true" type="xs:token">
        <xs:annotation>
          <xs:documentation>Name of the location.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LocationRefId" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:annotation>
            <xs:documentation>
      RefId of the location object if the location is a SIF Object such as </xs:documentation>
          </xs:annotation>
          <xs:simpleContent>
            <xs:extension base="sif:IdRefType">
              <xs:attribute name="SIF_RefObject" use="required">
                <xs:annotation>
                  <xs:documentation>
      Type of SIF Object </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="SchoolInfo" />
                    <xs:enumeration value="LEAInfo" />
                    <xs:enumeration value="RoomInfo" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="Type" use="optional">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="Classroom" />
          <xs:enumeration value="School" />
          <xs:enumeration value="District" />
          <xs:enumeration value="Campus" />
          <xs:enumeration value="IntermediateUnit" />
          <xs:enumeration value="StateEducationAgency" />
          <xs:enumeration value="NonInstructionalSpace" />
          <xs:enumeration value="AthleticVenue" />
          <xs:enumeration value="Other" />
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="Location" type="sif:LocationType" />


  <!--StateProvinceId-->

  <xs:simpleType name="StateProvinceIdType">
    <xs:restriction base="xs:normalizedString">
      <xs:annotation>
        <xs:documentation>The identifier for this entity as assigned by the state or province.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="StateProvinceId" type="sif:StateProvinceIdType" />


  <!--AttendanceCode-->

  <xs:complexType name="AttendanceCodeType">
    <xs:annotation>
      <xs:documentation>Code that describes the absence/attendance.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Code" type="sif:AUCodeSetsAttendanceCodeType">
        <xs:annotation>
          <xs:documentation>Code representing the absence/attendance.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="AttendanceCode" type="sif:AttendanceCodeType" />


  <!--YearLevel-->

  <xs:complexType name="YearLevelType">
    <xs:annotation>
      <xs:documentation>Year or academic level.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Code" type="sif:AUCodeSetsYearLevelCodeType">
        <xs:annotation>
          <xs:documentation>Code representing the year level.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="YearLevel" type="sif:YearLevelType" />


  <!--PersonInfo-->

  <xs:complexType name="PersonInfoType">
    <xs:annotation>
      <xs:documentation />
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Name" type="sif:NameOfRecordType">
        <xs:annotation>
          <xs:documentation>The name of the person. Note: Type attribute value of LGL must be used here.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="OtherNames" minOccurs="0" nillable="true" type="sif:OtherNamesType">
        <xs:annotation>
          <xs:documentation>Previous, alternate or other names or aliases associated with the person.</xs:documentation>
        </xs:annotation>
        <xs:key name="OtherNamesKey1">
          <xs:selector xpath="./sif:Name" />
          <xs:field xpath="@Type" />
        </xs:key>
      </xs:element>
      <xs:element name="Demographics" minOccurs="0" nillable="true" type="sif:DemographicsType">
        <xs:annotation>
          <xs:documentation>Demographic information about the person.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AddressList" minOccurs="0" nillable="true" type="sif:AddressListType">
        <xs:annotation>
          <xs:documentation>The person’s address(es).</xs:documentation>
        </xs:annotation>
        <xs:key name="AddressListKey1">
          <xs:selector xpath="./sif:Address" />
          <xs:field xpath="@Type" />
          <xs:field xpath="@Role" />
        </xs:key>
      </xs:element>
      <xs:element name="PhoneNumberList" minOccurs="0" nillable="true" type="sif:PhoneNumberListType">
        <xs:annotation>
          <xs:documentation>The person’s phone number(s).</xs:documentation>
        </xs:annotation>
        <xs:key name="PhoneNumberListKey1">
          <xs:selector xpath="./sif:PhoneNumber" />
          <xs:field xpath="@Type" />
        </xs:key>
      </xs:element>
      <xs:element name="EmailList" minOccurs="0" nillable="true" type="sif:EmailListType">
        <xs:annotation>
          <xs:documentation>The person’s e-mail address(es).</xs:documentation>
        </xs:annotation>
        <xs:key name="EmailListKey1">
          <xs:selector xpath="./sif:Email" />
          <xs:field xpath="@Type" />
        </xs:key>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="PersonInfo" type="sif:PersonInfoType" />


  <!--YearLevels-->

  <xs:complexType name="YearLevelsType">
    <xs:annotation>
      <xs:documentation>
        List of year levels.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:YearLevel" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="YearLevels" type="sif:YearLevelsType" />


  <!--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" />


  <!--PrincipalInfo-->

  <xs:complexType name="PrincipalInfoType">
    <xs:annotation>
      <xs:documentation>Information about the campus or school principal.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="ContactName" type="sif:NameOfRecordType">
        <xs:annotation>
          <xs:documentation>The name of the principal.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ContactTitle" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The principal's title.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PhoneNumberList" minOccurs="0" nillable="true" type="sif:PhoneNumberListType">
        <xs:annotation>
          <xs:documentation>The principal’s phone number(s).</xs:documentation>
        </xs:annotation>
        <xs:key name="PhoneNumberListKey2">
          <xs:selector xpath="./sif:PhoneNumber" />
          <xs:field xpath="@Type" />
        </xs:key>
      </xs:element>
      <xs:element name="EmailList" minOccurs="0" nillable="true" type="sif:EmailListType">
        <xs:annotation>
          <xs:documentation>The principal’s e-mail address(es).</xs:documentation>
        </xs:annotation>
        <xs:key name="EmailListKey2">
          <xs:selector xpath="./sif:Email" />
          <xs:field xpath="@Type" />
        </xs:key>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="PrincipalInfo" type="sif:PrincipalInfoType" />


  <!--SchoolContactList-->

  <xs:complexType name="SchoolContactListType">
    <xs:annotation>
      <xs:documentation>A list of contact persons associated with a school.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SchoolContact" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="PublishInDirectory" minOccurs="0" nillable="true" type="sif:PublishInDirectoryType">
              <xs:annotation>
                <xs:documentation>Indicates whether or not this school contact's information should be published in a directory of school information.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element ref="sif:ContactInfo" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SchoolContactList" type="sif:SchoolContactListType" />


  <!--PublishInDirectory-->

  <xs:simpleType name="PublishInDirectoryType">
    <xs:restriction base="sif:AUCodeSetsYesOrNoCategoryType">
      <xs:annotation>
        <xs:documentation>Indicates whether or not information should be published in a directory.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="PublishInDirectory" type="sif:PublishInDirectoryType" />


  <!--ContactInfo-->

  <xs:complexType name="ContactInfoType">
    <xs:annotation>
      <xs:documentation>Common element used to supply information for a contact person at a school, LEA, or other institution.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:Name" />
      <xs:element name="PositionTitle" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The contact person's position title.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Role" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Role played by this contact in this instance.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Address" minOccurs="0" nillable="true" type="sif:AddressType">
        <xs:annotation>
          <xs:documentation>Address of the contact.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EmailList" minOccurs="0" nillable="true" type="sif:EmailListType">
        <xs:annotation>
          <xs:documentation>List of Email elements.</xs:documentation>
        </xs:annotation>
        <xs:key name="EmailListKey3">
          <xs:selector xpath="./sif:Email" />
          <xs:field xpath="@Type" />
        </xs:key>
      </xs:element>
      <xs:element name="PhoneNumberList" minOccurs="0" nillable="true" type="sif:PhoneNumberListType">
        <xs:annotation>
          <xs:documentation>List of PhoneNumber elements.</xs:documentation>
        </xs:annotation>
        <xs:key name="PhoneNumberListKey3">
          <xs:selector xpath="./sif:PhoneNumber" />
          <xs:field xpath="@Type" />
        </xs:key>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ContactInfo" type="sif:ContactInfoType" />


  <!--Address-->

  <xs:complexType name="AddressType">
    <xs:annotation>
      <xs:documentation>This element contains address data.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Street">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Line1" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Address line 1.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="Line2" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Address line 2.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="Line3" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Address line 3.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="Complex" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Name of the complex.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="StreetNumber" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The address number assigned to the building.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="StreetPrefix" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Street prefix like NE</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="StreetName" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The name of the street.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="StreetType" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The type of street. For example, Lane, Blvd., Ave., etc.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="StreetSuffix" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Street suffix like SW.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="ApartmentType" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Type of apartment, for example, Suite.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="ApartmentNumberPrefix" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Apartment number prefix.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="ApartmentNumber" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The number of the apartment.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="ApartmentNumberSuffix" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Apartment number suffix.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="City" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The city part of the address.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StateProvince" minOccurs="0" nillable="true" type="sif:StateProvinceType">
        <xs:annotation>
          <xs:documentation>The state or province code. StateTerritory Code only applicable if an Australian Address. Conditional- If Australian Address this is mandatory. </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Country" minOccurs="0" nillable="true" type="sif:CountryType">
        <xs:annotation>
          <xs:documentation>The country code.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PostalCode" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The ZIP/postal code.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="GridLocation" minOccurs="0" nillable="true" type="sif:GridLocationType">
        <xs:annotation>
          <xs:documentation>The location of the address.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="MapReference" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="XCoordinate" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>X Co-ordinate of reference</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="YCoordinate" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Y Co-ordinate of reference</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
          <xs:attribute name="Type" use="required" type="xs:normalizedString">
            <xs:annotation>
              <xs:documentation>Type map reference</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:complexType>
      </xs:element>
      <xs:element name="RadioContact" minOccurs="0" nillable="true" type="xs:string">
        <xs:annotation>
          <xs:documentation>UHF Radio frequency or channel used for contact eg: 477MHz or CH60</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="Type" use="required" type="sif:AUCodeSetsAddressTypeType">
      <xs:annotation>
        <xs:documentation>Code that defines the location of the address. Note: A subset of specific valid values for each instance in a data object may be listed in that object.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="Role" use="required" type="sif:AUCodeSetsAddressRoleType">
      <xs:annotation>
        <xs:documentation>A facet of Address</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="Address" type="sif:AddressType" />


  <!--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="AddressListKey2">
      <xs:selector xpath="./sif:Address" />
      <xs:field xpath="@Type" />
      <xs:field xpath="@Role" />
    </xs:key>
  </xs:element>


  <!--EmailList-->

  <xs:complexType name="EmailListType">
    <xs:annotation>
      <xs:documentation>A list of e-mail addresses associated with an individual or organization.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Email" 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="EmailListKey4">
      <xs:selector xpath="./sif:Email" />
      <xs:field xpath="@Type" />
    </xs:key>
  </xs:element>


  <!--Email-->

  <xs:complexType name="EmailType">
    <xs:annotation>
      <xs:documentation>
        This element represents an e-mail address of one of a number of types and occurs in objects such as
        StudentPersonal, StaffPersonal, StudentContactPersonal, etc.
      </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="xs:normalizedString">
        <xs:attribute name="Type" use="required" type="sif:AUCodeSetsEmailTypeType">
          <xs:annotation>
            <xs:documentation>This attribute specifies the type of e-mail address.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:element name="Email" type="sif:EmailType" />


  <!--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="PhoneNumberListKey4">
      <xs:selector xpath="./sif:PhoneNumber" />
      <xs:field xpath="@Type" />
    </xs:key>
  </xs:element>


  <!--PhoneNumber-->

  <xs:complexType name="PhoneNumberType">
    <xs:annotation>
      <xs:documentation>This element represents a phone number and occurs within objects such as StudentPersonal, StaffPersonal, etc.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Number" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Phone number.  Free-form, but typical Australian formats include:</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Extension" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Phone number extension.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ListedStatus" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
        <xs:annotation>
          <xs:documentation>Indicates whether or not the phone number is available to the public.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="Type" use="required" type="sif:AUCodeSetsTelephoneNumberTypeType">
      <xs:annotation>
        <xs:documentation>Code that specifies what type of phone number this is.  Note: A subset of valid values may be specified in data objects.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="PhoneNumber" type="sif:PhoneNumberType" />


  <!--Country-->

  <xs:simpleType name="CountryType">
    <xs:annotation>
      <xs:documentation>A country code.</xs:documentation>
    </xs:annotation>
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="sif:AUCodeSetsStandardAustralianClassificationOfCountriesSACCType" />
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>

  <xs:element name="Country" type="sif:CountryType" />


  <!--GridLocation-->

  <xs:complexType name="GridLocationType">
    <xs:annotation>
      <xs:documentation>
        This element contains a map location. The GridLocation element is utilized within the Address element.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Latitude">
        <xs:simpleType>
          <xs:restriction base="xs:decimal">
            <xs:annotation>
              <xs:documentation>Latitude in decimal degrees.</xs:documentation>
            </xs:annotation>
            <xs:minInclusive value="-90" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:maxInclusive value="90" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="Longitude">
        <xs:simpleType>
          <xs:restriction base="xs:decimal">
            <xs:annotation>
              <xs:documentation>Longitude in decimal degrees.</xs:documentation>
            </xs:annotation>
            <xs:minInclusive value="-180" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:maxInclusive value="180" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="GridLocation" type="sif:GridLocationType" />


  <!--OperationalStatus-->

  <xs:simpleType name="OperationalStatusType">
    <xs:annotation>
      <xs:documentation>Operational condition of an institution.</xs:documentation>
    </xs:annotation>
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="sif:AUCodeSetsOperationalStatusType" />
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>

  <xs:element name="OperationalStatus" type="sif:OperationalStatusType" />


  <!--StateProvince-->

  <xs:simpleType name="StateProvinceType">
    <xs:annotation>
      <xs:documentation>A state or province code. Note: When dealing with countries other than Australia, state/province codes/values other than those referenced here can be used.</xs:documentation>
    </xs:annotation>
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="sif:AUCodeSetsStateTerritoryCodeType" />
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:token" />
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>

  <xs:element name="StateProvince" type="sif:StateProvinceType" />


  <!--SchoolYear-->

  <xs:simpleType name="SchoolYearType">
    <xs:restriction base="xs:gYear">
      <xs:annotation>
        <xs:documentation>School year for which the information is applicable, expressed as the four-digit year in which the school year ends (e.g., "2009").</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="SchoolYear" type="sif:SchoolYearType" />


  <!--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. 
      </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="xs:normalizedString">
        <xs:attribute name="Type" use="required" type="sif:AUCodeSetsElectronicIdTypeType">
          <xs:annotation>
            <xs:documentation>Electronic ID type.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:element name="ElectronicId" type="sif:ElectronicIdType" />


  <!--OtherNames-->

  <xs:complexType name="OtherNamesType">
    <xs:annotation>
      <xs:documentation>Previous, alternate or other names or aliases associated with a person.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Name" maxOccurs="unbounded">
        <xs:complexType>
          <xs:annotation>
            <xs:documentation>
        Name of the person.  Note: Type value of LGL may not occur here.
      </xs:documentation>
          </xs:annotation>
          <xs:complexContent>
            <xs:extension base="sif:OtherNameType">
              <xs:attribute name="SIF_Action" use="optional">
                <xs:annotation>
                  <xs:documentation>
        In a Change event, this flag can be used to indicate an element has been deleted from the parent list container.
        At a minimum the key for the list must also be present.
      </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="Delete" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="OtherNames" type="sif:OtherNamesType">
    <xs:key name="OtherNamesKey2">
      <xs:selector xpath="./sif:Name" />
      <xs:field xpath="@Type" />
    </xs:key>
  </xs:element>


  <!--Demographics-->

  <xs:complexType name="DemographicsType">
    <xs:annotation>
      <xs:documentation>
        Demographics information about the student, contact, staff member, etc. 
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="IndigenousStatus" minOccurs="0" nillable="true" type="sif:AUCodeSetsIndigenousStatusType">
        <xs:annotation>
          <xs:documentation>Whether or not the student identifies themselves as being of Aboriginal and/or Torres Strait Islander descent.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Sex" minOccurs="0" nillable="true" type="sif:AUCodeSetsSexCodeType">
        <xs:annotation>
          <xs:documentation>'Sex' is the distinction 'male' and 'female', as reported by the person</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="BirthDate" minOccurs="0" nillable="true" type="sif:BirthDateType">
        <xs:annotation>
          <xs:documentation>The person's date of birth.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="BirthDateVerification" minOccurs="0" nillable="true" type="sif:AUCodeSetsBirthdateVerificationType">
        <xs:annotation>
          <xs:documentation>Means by which the person's birth date was validated.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PlaceOfBirth" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The person's place of birth—like village, town, city etc.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StateOfBirth" minOccurs="0" nillable="true" type="sif:StateProvinceType">
        <xs:annotation>
          <xs:documentation>The person's state of birth.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CountryOfBirth" minOccurs="0" nillable="true" type="sif:CountryType">
        <xs:annotation>
          <xs:documentation>The person's country of birth.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CountriesOfCitizenship" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="CountryOfCitizenship" maxOccurs="unbounded" type="sif:CountryType">
              <xs:annotation>
                <xs:documentation>A person's country of citizenship.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="CountriesOfResidency" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="CountryOfResidency" maxOccurs="unbounded" type="sif:CountryType">
              <xs:annotation>
                <xs:documentation>A person's country of residence.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="CountryArrivalDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date the person first arrived in the country.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AustralianCitizenshipStatus" minOccurs="0" nillable="true" type="sif:AUCodeSetsAustralianCitizenshipStatusType">
        <xs:annotation>
          <xs:documentation>The person's citizenship status.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EnglishProficiency" minOccurs="0" nillable="true" type="sif:EnglishProficiencyType">
        <xs:annotation>
          <xs:documentation>Person's proficiency in English.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LanguageList" minOccurs="0" nillable="true" type="sif:LanguageListType">
        <xs:annotation>
          <xs:documentation>List of languages an individual uses to communicate.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DwellingArrangement" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Code" type="sif:AUCodeSetsDwellingArrangementType">
              <xs:annotation>
                <xs:documentation>Code representing the setting/environment in which the person resides</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Religion" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Code" type="sif:AUCodeSetsAustralianStandardClassificationOfReligiousGroupsASCRGType">
              <xs:annotation>
                <xs:documentation>Religion Code</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="ReligiousEventList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="ReligiousEvent" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Type" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>Religious Event - Currently Free Text</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="Date" type="xs:date">
                    <xs:annotation>
                      <xs:documentation>Date of Religious Event</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="ReligiousRegion" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Belong to Religious Region - Currently Free Text.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PermanentResident" minOccurs="0" nillable="true" type="sif:AUCodeSetsPermanentResidentStatusType">
        <xs:annotation>
          <xs:documentation>Australian Residency Status (Mandatory for Student)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="VisaSubClass" minOccurs="0" nillable="true" type="sif:AUCodeSetsVisaSubClassType">
        <xs:annotation>
          <xs:documentation>Visa Sub-Class - Can be free text - not necessary to validate</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="VisaStatisticalCode" minOccurs="0" nillable="true" type="sif:AUCodeSetsVisaStatisticalCodeType">
        <xs:annotation>
          <xs:documentation>Visa Statistical Code - Can be free text - not necessary to validate</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="VisaExpiryDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Expiry Date of Visa if one exists</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ImmunisationCertificateStatus" minOccurs="0" nillable="true" type="sif:AUCodeSetsImmunisationCertificateStatusType">
        <xs:annotation>
          <xs:documentation>Status of Immunisation Certificate</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CulturalBackground" minOccurs="0" nillable="true" type="sif:AUCodeSetsAustralianStandardClassificationOfCulturalAndEthnicGroupsASCCEGType">
        <xs:annotation>
          <xs:documentation>Used to indicate cultural background. </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="Demographics" type="sif:DemographicsType" />


  <!--EnglishProficiency-->

  <xs:complexType name="EnglishProficiencyType">
    <xs:sequence>
      <xs:element name="Code" type="sif:AUCodeSetsEnglishProficiencyType">
        <xs:annotation>
          <xs:documentation>Person's proficiency in English.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="EnglishProficiency" type="sif:EnglishProficiencyType" />


  <!--LanguageList-->

  <xs:complexType name="LanguageListType">
    <xs:sequence>
      <xs:element name="Language" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Code" type="sif:AUCodeSetsAustralianStandardClassificationOfLanguagesASCLType">
              <xs:annotation>
                <xs:documentation>The code representing the specific language that an individual uses to communicate. </xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
            <xs:element name="LanguageType" minOccurs="0" nillable="true" type="sif:AUCodeSetsLanguageTypeType">
              <xs:annotation>
                <xs:documentation>An indication of the function and context in which an individual uses a language to communicate.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="LanguageList" type="sif:LanguageListType" />


  <!--BirthDate-->

  <xs:simpleType name="BirthDateType">
    <xs:restriction base="xs:date">
      <xs:annotation>
        <xs:documentation>A person's date of birth.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="BirthDate" type="sif:BirthDateType" />


  <!--ProjectedGraduationYear-->

  <xs:simpleType name="ProjectedGraduationYearType">
    <xs:restriction base="xs:gYear">
      <xs:annotation>
        <xs:documentation>Currently projected graduation year (CCYY).</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="ProjectedGraduationYear" type="sif:ProjectedGraduationYearType" />


  <!--OnTimeGraduationYear-->

  <xs:simpleType name="OnTimeGraduationYearType">
    <xs:restriction base="xs:gYear">
      <xs:annotation>
        <xs:documentation>First projected graduation year, usually determined when student is accepted into 9th grade (CCYY).</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="OnTimeGraduationYear" type="sif:OnTimeGraduationYearType" />


  <!--Relationship-->

  <xs:complexType name="RelationshipType">
    <xs:annotation>
      <xs:documentation>Code that defines the relationship of one person to another.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Code" type="sif:AUCodeSetsRelationshipToStudentType">
        <xs:annotation>
          <xs:documentation>Code representing the relationship.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="Relationship" type="sif:RelationshipType" />


  <!--EducationalLevel-->

  <xs:simpleType name="EducationalLevelType">
    <xs:restriction base="sif:AUCodeSetsSchoolEducationLevelTypeType">
      <xs:annotation>
        <xs:documentation>A code representing the highest level of education completed by a person.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="EducationalLevel" type="sif:EducationalLevelType" />


  <!--GraduationDate-->

  <xs:simpleType name="GraduationDateType">
    <xs:restriction base="sif:PartialDateType">
      <xs:annotation>
        <xs:documentation>Date student officially graduated from secondary education.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="GraduationDate" type="sif:GraduationDateType" />


  <!--Name-->

  <xs:complexType name="NameType">
    <xs:annotation>
      <xs:documentation>
      The Name element, which could belong to a student, staff member, contact, etc. This element or a form with a
      subset of Type values occurs within objects
      such as StudentPersonal, StudentContactPersonal, StaffPersonal, etc.
    </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="sif:BaseNameType">
        <xs:attribute name="Type" use="required" type="sif:AUCodeSetsNameUsageTypeType">
          <xs:annotation>
            <xs:documentation>
        Code that specifies what type of name this is.  If unsure, use LGL.
      </xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:element name="Name" type="sif:NameType" />


  <!--HomeroomNumber-->

  <xs:simpleType name="HomeroomNumberType">
    <xs:restriction base="xs:normalizedString">
      <xs:annotation>
        <xs:documentation>
        Common element used to specify the locally-defined number or identifier for a homeroom. It is used in objects such
        as RoomInfo and StudentSnapshot.
      </xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="HomeroomNumber" type="sif:HomeroomNumberType" />


  <!--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" />


  <!--OtherCodeList-->

  <xs:complexType name="OtherCodeListType">
    <xs:annotation>
      <xs:documentation>
        List of other codes or strings that crosswalk to or serve as translations of the Code element paired with this common element.  If Code changes
        and OtherCodes are supported, both Code and all associated OtherCode elements must be present.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="OtherCode" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
        A state/province code, local code, other code or a text string that crosswalks to or serves as a translation of an associated Code element.
      </xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:token">
              <xs:attribute name="Codeset" use="required">
                <xs:annotation>
                  <xs:documentation>
        Describes the OtherCode element content as either a state/province code, a local code, other code, or text string.
      </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="StateProvince" />
                    <xs:enumeration value="Local" />
                    <xs:enumeration value="Other" />
                    <xs:enumeration value="Text" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="OtherCodeList" type="sif:OtherCodeListType" />


  <!--SubjectAreaList-->

  <xs:complexType name="SubjectAreaListType">
    <xs:annotation>
      <xs:documentation>A list of subject areas.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:SubjectArea" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SubjectAreaList" type="sif:SubjectAreaListType" />


  <!--SubjectArea-->

  <xs:complexType name="SubjectAreaType">
    <xs:annotation>
      <xs:documentation>Subject matter.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Code" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The subject area details</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SubjectArea" type="sif:SubjectAreaType" />


  <!--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:sequence>
  </xs:complexType>

  <xs:element name="SIF_Metadata" type="sif:SIF_MetadataType" />


  <!--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>


  <!--SIFAU-->


  <!--SchoolInfo-->

  <xs:complexType name="SchoolInfoType">
    <xs:annotation>
      <xs:documentation>This object contains information about the school.</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 school.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StateProvinceId" minOccurs="0" nillable="true" type="sif:StateProvinceIdType">
        <xs:annotation>
          <xs:documentation>The state-assigned identifier for this school.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CommonwealthId" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Commonwealth identifier for this school/campus.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolName" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Name of school/campus.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LEAInfoRefId" minOccurs="0" nillable="true" type="sif:RefIdType">
        <xs:annotation>
          <xs:documentation>The ID (GUID) that references the school district of which this school is a member.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="OtherLEA" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:annotation>
            <xs:documentation>The ID (GUID) of another related education agency, such as a regional service agency.</xs:documentation>
          </xs:annotation>
          <xs:simpleContent>
            <xs:extension base="sif:RefIdType">
              <xs:attribute name="SIF_RefObject" use="required">
                <xs:annotation>
                  <xs:documentation>The name of the object reference. </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="LEAInfo" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="SchoolDistrict" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The school district of which this school/campus is a member. Equivalent to DEECD Region.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolDistrictLocalId" minOccurs="0" nillable="true" type="sif:LocalIdType">
        <xs:annotation>
          <xs:documentation>The school district Local ID. This should be the same as the LocalId in the LEAInfo if LEAInfo details are supplied.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolType" minOccurs="0" nillable="true" type="sif:AUCodeSetsSchoolLevelType">
        <xs:annotation>
          <xs:documentation>An indication of the level of the educational institution.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolFocusList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SchoolFocus" maxOccurs="unbounded" type="sif:AUCodeSetsSchoolFocusCodeType">
              <xs:annotation>
                <xs:documentation>The type of educational institution as classified by its focus.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </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="PrincipalInfo" minOccurs="0" nillable="true" type="sif:PrincipalInfoType">
        <xs:annotation>
          <xs:documentation>Information about the campus or school principal.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolContactList" minOccurs="0" nillable="true" type="sif:SchoolContactListType">
        <xs:annotation>
          <xs:documentation>A list of contact persons associated with a school.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AddressList" minOccurs="0" nillable="true" type="sif:AddressListType">
        <xs:annotation>
          <xs:documentation>The school's addresses.</xs:documentation>
        </xs:annotation>
        <xs:key name="AddressListKey3">
          <xs:selector xpath="./sif:Address" />
          <xs:field xpath="@Type" />
          <xs:field xpath="@Role" />
        </xs:key>
      </xs:element>
      <xs:element name="PhoneNumberList" minOccurs="0" nillable="true" type="sif:PhoneNumberListType">
        <xs:annotation>
          <xs:documentation>The school's phone numbers.</xs:documentation>
        </xs:annotation>
        <xs:key name="PhoneNumberListKey5">
          <xs:selector xpath="./sif:PhoneNumber" />
          <xs:field xpath="@Type" />
        </xs:key>
      </xs:element>
      <xs:element name="SessionType" minOccurs="0" nillable="true" type="sif:AUCodeSetsSessionTypeType">
        <xs:annotation>
          <xs:documentation>Code that specifies the session type.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="YearLevels" minOccurs="0" nillable="true" type="sif:YearLevelsType">
        <xs:annotation>
          <xs:documentation>List of year levels offered by the school.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ARIA" minOccurs="0" nillable="true" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>Accessibility/Remoteness Indicator of Australia.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="OperationalStatus" minOccurs="0" nillable="true" type="sif:OperationalStatusType">
        <xs:annotation>
          <xs:documentation>Operational condition of a school.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="FederalElectorate" minOccurs="0" nillable="true" type="sif:AUCodeSetsFederalElectorateType">
        <xs:annotation>
          <xs:documentation>Australian Federal Electorate.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Campus" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SchoolCampusId" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Campus ID  - Needs to be considered as part of school. Different campus' have different addresses.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="CampusType" minOccurs="0" nillable="true" type="sif:AUCodeSetsSchoolLevelType">
              <xs:annotation>
                <xs:documentation>Type of campus.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="AdminStatus" type="sif:AUCodeSetsYesOrNoCategoryType">
              <xs:annotation>
                <xs:documentation>Is this campus the Admin Campus?</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SchoolSector" type="sif:AUCodeSetsSchoolSectorCodeType">
        <xs:annotation>
          <xs:documentation>(Government, or Non-Government).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="IndependentSchool" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
        <xs:annotation>
          <xs:documentation>Indicator as to whether school is an independent school (as opposed to government or catholic school).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="NonGovSystemicStatus" minOccurs="0" nillable="true" type="sif:AUCodeSetsSystemicStatusType">
        <xs:annotation>
          <xs:documentation>Used to clarify a non-government school's systemic status. Either Systemic or Non-Systemic.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="System" minOccurs="0" nillable="true" type="sif:AUCodeSetsSchoolSystemType">
        <xs:annotation>
          <xs:documentation>System if a systemic school.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ReligiousAffiliation" minOccurs="0" nillable="true" type="sif:AUCodeSetsAustralianStandardClassificationOfReligiousGroupsASCRGType">
        <xs:annotation>
          <xs:documentation>Religious affiliation (if any).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolGeographicLocation" minOccurs="0" nillable="true" type="sif:AUCodeSetsSchoolLocationType">
        <xs:annotation>
          <xs:documentation>School Location from MCEETCYA.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LocalGovernmentArea" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>LocalGovernmentArea that that school/campus is located in.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="JurisdictionLowerHouse" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Lower House area  that the school/campus  belongs to.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SLA" minOccurs="0" nillable="true" type="sif:AUCodeSetsAustralianStandardGeographicalClassificationASGCType">
        <xs:annotation>
          <xs:documentation>Statistical Local Area that the school/campus belongs to.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolCoEdStatus" minOccurs="0" nillable="true" type="sif:AUCodeSetsSchoolCoEdStatusType">
        <xs:annotation>
          <xs:documentation>Gender of student population.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="BoardingSchoolStatus" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
        <xs:annotation>
          <xs:documentation>Is this school a Boarding School?</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Entity_Open" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Opening date of entity.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Entity_Close" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Closing date of entity.  This element is allowed to be omitted and/or null.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolGroupList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SchoolGroup" maxOccurs="unbounded" type="sif:LocalIdType">
              <xs:annotation>
                <xs:documentation>Repeatable element containing a local identifier to identify a loosely connected group of schools. eg. YarraValley Cluster</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_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 GUID that identifies this school.</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>


  <!--RoomInfo-->

  <xs:complexType name="RoomInfoType">
    <xs:annotation>
      <xs:documentation>
        This object contains all of the information about a school's room. This object may contain a reference to a room type so that it may represent anything from a gym, cafeteria, to a standard classroom. The StaffList element usually contains the homeroom teacher.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SchoolInfoRefId" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>GUID that identifies the school that this room belongs to.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="RoomNumber" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Room number as presented to the user/application.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StaffList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="StaffPersonalRefId" maxOccurs="unbounded" type="sif:IdRefType">
              <xs:annotation>
                <xs:documentation>GUID that identifies the staff person assigned to this room (e.g. the homeroom teacher).</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Description" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>
        Friendly name that can be assigned to the room (e.g. Staff Cafeteria).
      </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Building" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Extra building information. In the future Building could become its own object in which case this element will need to be changed to a RefId. Currently it is only required as a free text field.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="HomeroomNumber" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>When a room is designated as a homeroom it may have a different number. Usually blank when room is not a homeroom.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Size" minOccurs="0" nillable="true" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>Size in square meters.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Capacity" minOccurs="0" nillable="true" type="xs:unsignedInt">
        <xs:annotation>
          <xs:documentation>Number of persons (usually students) that this room can hold.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PhoneNumber" minOccurs="0" nillable="true" type="sif:PhoneNumberType">
        <xs:annotation>
          <xs:documentation>Phone number for the room</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_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>GUID that identifies this room.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="RoomInfo" type="sif:RoomInfoType">
    <xs:key name="RoomInfoKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--StaffAssignment-->

  <xs:complexType name="StaffAssignmentType">
    <xs:annotation>
      <xs:documentation>
        This object defines information related to a staff member's assignment(s); commonly, this will be a school
        assignment.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SchoolInfoRefId" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>The ID (GUID) that identifies the school where the staff member is assigned.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element ref="sif:SchoolYear" />
      <xs:element name="StaffPersonalRefId" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>ID (GUID) of this staff member, as represented in the StaffPersonal object. </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Description" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Short assignment description</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PrimaryAssignment" type="sif:AUCodeSetsYesOrNoCategoryType">
        <xs:annotation>
          <xs:documentation>
        Is this the staff member's primary assignment?  Note: There must be one and only one instance of the object with a Yes value in this element per school year.
      </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="JobStartDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>This is the date from which the staff assignment is valid (inclusive).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="JobEndDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>This is the date through which the staff assignment is valid (inclusive).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="JobFTE" minOccurs="0" nillable="true">
        <xs:simpleType>
          <xs:restriction base="xs:decimal">
            <xs:annotation>
              <xs:documentation>Full-time job equivalent ratio for this assignment. (Format is x.xx; an employee who is full-time and who is 50% of their time on this assignment would be represented as 0.50)</xs:documentation>
            </xs:annotation>
            <xs:minInclusive value="0" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:maxInclusive value="1" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:fractionDigits value="2" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="JobFunction" minOccurs="0" nillable="true" type="xs:string">
        <xs:annotation>
          <xs:documentation>The purpose of the activities as related to students.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StaffSubjectList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="StaffSubject" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="PreferenceNumber" type="xs:unsignedInt">
                    <xs:annotation>
                      <xs:documentation>Priority of Subject to Teach.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="SubjectLocalId" minOccurs="0" nillable="true" type="sif:LocalIdType">
                    <xs:annotation>
                      <xs:documentation>Local Subject Id</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="TimeTableSubjectRefId" minOccurs="0" nillable="true" type="sif:RefIdType">
                    <xs:annotation>
                      <xs:documentation>RefId of TimeTableSubject</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="YearLevels" minOccurs="0" nillable="true" type="sif:YearLevelsType">
        <xs:annotation>
          <xs:documentation>Year level(s) that the teacher is allowed to teach.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CasualReliefTeacher" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
        <xs:annotation>
          <xs:documentation>Is this teacher a casual relief teacher CRT?</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Homegroup" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The name of the homegroup the staff member is assigned to.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="House" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The name of the house the staff member is assigned to.</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_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 GUID that uniquely identifies a particular staff assignment.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="StaffAssignment" type="sif:StaffAssignmentType">
    <xs:key name="StaffAssignmentKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--StaffPersonal-->

  <xs:complexType name="StaffPersonalType">
    <xs:annotation>
      <xs:documentation>
        This object contains all the personal information relating to a staff member, who might be a teacher or other employee of the school or district.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:LocalId" />
      <xs:element name="StateProvinceId" minOccurs="0" nillable="true" type="sif:StateProvinceIdType">
        <xs:annotation>
          <xs:documentation>The state-assigned identifier for this staff member.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ElectronicIdList" minOccurs="0" nillable="true" type="sif:ElectronicIdListType">
        <xs:annotation>
          <xs:documentation>Electronic identifier(s) associated with this entity.</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>Lists an "other" identifier associated with the staff member.</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>Code that defines 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:element ref="sif:PersonInfo" />
      <xs:element name="Title" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The staff member's title.</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 GUID of the staff member.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="StaffPersonal" type="sif:StaffPersonalType">
    <xs:key name="StaffPersonalKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--StudentPersonal-->

  <xs:complexType name="StudentPersonalType">
    <xs:annotation>
      <xs:documentation>This object contains all the personal information related to the student.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="AlertMessages" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="AlertMessage" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation>This is an alert message that is associated with the student.</xs:documentation>
              </xs:annotation>
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:string">
                    <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="MedicalAlertMessages" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="MedicalAlertMessage" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation>Medical alert associated with the student.</xs:documentation>
              </xs:annotation>
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:string">
                    <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:LocalId" />
      <xs:element name="StateProvinceId" minOccurs="0" nillable="true" type="sif:StateProvinceIdType">
        <xs:annotation>
          <xs:documentation>The state-assigned identifier for this student.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ElectronicIdList" minOccurs="0" nillable="true" type="sif:ElectronicIdListType">
        <xs:annotation>
          <xs:documentation>Electronic identifier(s) associated with this entity.</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>Lists an "other" identifier associated with the student.</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>Code that defines 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:element ref="sif:PersonInfo" />
      <xs:element name="ProjectedGraduationYear" minOccurs="0" nillable="true" type="sif:ProjectedGraduationYearType">
        <xs:annotation>
          <xs:documentation>Currently projected graduation year.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="OnTimeGraduationYear" minOccurs="0" nillable="true" type="sif:OnTimeGraduationYearType">
        <xs:annotation>
          <xs:documentation>First projected graduation year, usually determined when student is accepted into 9th grade.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="MostRecent" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SchoolLocalId" minOccurs="0" nillable="true" type="sif:LocalIdType">
              <xs:annotation>
                <xs:documentation>Local identifier representing the school in which the student is or was most recently enrolled in the district.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="HomeroomLocalId" minOccurs="0" nillable="true" type="sif:LocalIdType">
              <xs:annotation>
                <xs:documentation>
        Local identifier representing the current or most recent homeroom in which the student is or was most recently assigned in the district.  Use the value from RoomInfo/HomeroomNumber if supported.  If not supported, use the value from RoomInfo/RoomNumber.  If neither is supported, use the most appropriate value from the agent’s application.
      </xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="YearLevel" minOccurs="0" nillable="true" type="sif:YearLevelType">
              <xs:annotation>
                <xs:documentation>The current or most recent grade level of the student in the district.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="AcceptableUsePolicy" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
        <xs:annotation>
          <xs:documentation>Does the student have a current signed Acceptable Use Policy document for system access?</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EconomicDisadvantage" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
        <xs:annotation>
          <xs:documentation>Does the student meet the State criteria for classification as having an economic disadvantage?</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ESL" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
        <xs:annotation>
          <xs:documentation>Does the student meet ‘English as a Second Language Criteria’?</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="YoungCarersRole" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
        <xs:annotation>
          <xs:documentation>Is the student a carer of other family members?</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Disability" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
        <xs:annotation>
          <xs:documentation>Does the student have funding for disability?</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="IntegrationAide" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
        <xs:annotation>
          <xs:documentation>Does the Student require an Integration Aide?</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PrePrimaryEducation" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Care prior to kinder enrolment (eg. Family day care/home/extended care etc).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="FirstAUSchoolEnrollment" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date of the first enrolment in an Australian 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_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 GUID of the student.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="StudentPersonal" type="sif:StudentPersonalType">
    <xs:key name="StudentPersonalKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--StudentSchoolEnrollment-->

  <xs:complexType name="StudentSchoolEnrollmentType">
    <xs:annotation>
      <xs:documentation>
        This object defines information related to a student's enrollment.  StudentSchoolEnrollment
        instances must not span multiple school years.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="StudentPersonalRefId" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>The ID (GUID) of the student to whom this information is linked.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolInfoRefId" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>The ID (GUID) of the school to which this enrollment applies.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="MembershipType" type="sif:AUCodeSetsSchoolEnrollmentTypeType">
        <xs:annotation>
          <xs:documentation>The type of this enrollment as it relates to the school identified in SchoolInfoRefId.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TimeFrame" type="sif:AUCodeSetsEnrollmentTimeFrameType">
        <xs:annotation>
          <xs:documentation>
        The timeframe of the enrollment based on the SIF_Date in the SIF_Header of the message. For events, it is determined as of the date the event is generated. For requests and responses, it is calculated based on the date of the request.
      </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element ref="sif:SchoolYear" />
      <xs:element name="EntryDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>The date from when this enrollment is valid.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EntryType" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Code" type="sif:AUCodeSetsEntryTypeType">
              <xs:annotation>
                <xs:documentation>Code indicating the type of entry for this enrollment</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType">
              <xs:annotation>
                <xs:documentation>List of other codes or strings that crosswalk to or serve as translations of the Code element paired with this common element. If Code changes and OtherCodes are supported, both Code and all associated OtherCode elements must be present.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="YearLevel" minOccurs="0" nillable="true" type="sif:YearLevelType">
        <xs:annotation>
          <xs:documentation>Year or academic level of student.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Homeroom" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:annotation>
            <xs:documentation>Homeroom for this enrollment.</xs:documentation>
          </xs:annotation>
          <xs:simpleContent>
            <xs:extension base="sif:IdRefType">
              <xs:attribute name="SIF_RefObject" use="required">
                <xs:annotation>
                  <xs:documentation>The name of the object referenced.</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="RoomInfo" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="Advisor" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:annotation>
            <xs:documentation>Staff member assigned as an advisor.</xs:documentation>
          </xs:annotation>
          <xs:simpleContent>
            <xs:extension base="sif:IdRefType">
              <xs:attribute name="SIF_RefObject" use="required">
                <xs:annotation>
                  <xs:documentation>The name of the object referenced.</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="StaffPersonal" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="Counselor" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:annotation>
            <xs:documentation>Staff member assigned as an advisor.</xs:documentation>
          </xs:annotation>
          <xs:simpleContent>
            <xs:extension base="sif:IdRefType">
              <xs:attribute name="SIF_RefObject" use="required">
                <xs:annotation>
                  <xs:documentation>The name of the object referenced.</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="StaffPersonal" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="Homegroup" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The name of the homegroup the student enrollment belongs to.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="House" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The name of the house the student belongs to.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="IndividualLearningPlan" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
        <xs:annotation>
          <xs:documentation>Does this student have an individual learning plan in place?</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Calendar" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:annotation>
            <xs:documentation>The calendar assigned to this enrollment. </xs:documentation>
          </xs:annotation>
          <xs:simpleContent>
            <xs:extension base="sif:IdRefType">
              <xs:attribute name="SIF_RefObject" use="required">
                <xs:annotation>
                  <xs:documentation>The name of the object referenced.</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="CalendarSummary" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="ExitDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>
        The last school calendar day of this enrollment. If the student has exited the school or the enrollment has a RecordClosureReason, ExitDate must have a value.
      </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ExitStatus" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Code" type="sif:AUCodeSetsExitWithdrawalStatusType">
              <xs:annotation>
                <xs:documentation> Code indicating the closure status for this enrollment.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="ExitType" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Code" type="sif:AUCodeSetsExitWithdrawalTypeType">
              <xs:annotation>
                <xs:documentation>Code indicating the type of exit for this enrollment.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="FTE" minOccurs="0" nillable="true">
        <xs:simpleType>
          <xs:restriction base="xs:decimal">
            <xs:annotation>
              <xs:documentation>Full-time equivalent numeric value of the student's course load during this enrollment, expressed in decimal form, where 1.00 represents a full-time enrollment.</xs:documentation>
            </xs:annotation>
            <xs:minInclusive value="0" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:maxInclusive value="1" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:fractionDigits value="2" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="FTPTStatus" minOccurs="0" nillable="true" type="sif:AUCodeSetsFTPTStatusCodeType">
        <xs:annotation>
          <xs:documentation>An indication of whether the student is enrolled full time or part time.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CatchmentStatus" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Code" type="sif:AUCodeSetsPublicSchoolCatchmentStatusType">
              <xs:annotation>
                <xs:documentation>Code indicating the residency status for this enrollment. Code indicating Enrollment Catchment Status.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType">
              <xs:annotation>
                <xs:documentation>List of other codes or strings that crosswalk to or serve as translations of the Code element paired with this common element. If Code changes and OtherCodes are supported, both Code and all associated OtherCode elements must be present.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="RecordClosureReason" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>The reason why this enrollment was closed.  The EndOfYear option must be used to convey status change due to rollover activity.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="SchoolExit" />
            <xs:enumeration value="TimeDependentDataChange" />
            <xs:enumeration value="EndOfYear" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="PromotionInfo" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="PromotionStatus" minOccurs="0" nillable="true">
              <xs:annotation>
                <xs:documentation>This value should be set if this enrollment instance is closed for an end-of-year closeout or a mid-year promotion or demotion. A value other than NA should be specified when the enrollment instance represents an end-of-year closeout or mid-year promotion/demotion. </xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="Promoted" />
                  <xs:enumeration value="Demoted" />
                  <xs:enumeration value="Retained" />
                  <xs:enumeration value="NA" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="PreviousSchool" minOccurs="0" nillable="true" type="sif:LocalIdType">
        <xs:annotation>
          <xs:documentation>If the student has previously been enrolled at a school, i.e. student is transferring, the previous school number.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DestinationSchool" minOccurs="0" nillable="true" type="sif:LocalIdType">
        <xs:annotation>
          <xs:documentation>If the student has exited the school, the local id of the school to which the student has transferred to.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StudentSubjectChoiceList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="StudentSubjectChoice" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="PreferenceNumber" minOccurs="0" nillable="true" type="xs:unsignedInt">
                    <xs:annotation>
                      <xs:documentation>Subject Priority</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="SubjectLocalId" type="sif:LocalIdType">
                    <xs:annotation>
                      <xs:documentation>Local Subject Id</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="StudyDescription" minOccurs="0" nillable="true" type="sif:SubjectAreaType">
                    <xs:annotation>
                      <xs:documentation>Description about Study Mode.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="OtherSchoolLocalId" minOccurs="0" nillable="true" type="sif:LocalIdType">
                    <xs:annotation>
                      <xs:documentation>Localid of a school where the student studies this subject if not at the home school.</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_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 a particular enrollment.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="StudentSchoolEnrollment" type="sif:StudentSchoolEnrollmentType">
    <xs:key name="StudentSchoolEnrollmentKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--StudentContactPersonal-->

  <xs:complexType name="StudentContactPersonalType">
    <xs:annotation>
      <xs:documentation>
      This object contains information about the people who are referenced as student contacts.
    </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 person. Note: LocalId may be used as a unique person identifier rather than a unique contact identifier. In this case there may be more than one StudentContactPersonal instance with the same LocalId.</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>Lists an "other" identifier associated with the student.</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>Code that defines 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:element ref="sif:PersonInfo" />
      <xs:element name="EmploymentType" minOccurs="0" nillable="true" type="sif:AUCodeSetsEmploymentTypeType">
        <xs:annotation>
          <xs:documentation>Code that defines employment type. This is compulsory for Parents or Guardians of the Student.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolEducationalLevel" minOccurs="0" nillable="true" type="sif:EducationalLevelType">
        <xs:annotation>
          <xs:documentation>The highest level of education completed by the contact person.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="NonSchoolEducation" minOccurs="0" nillable="true" type="sif:AUCodeSetsNonSchoolEducationType">
        <xs:annotation>
          <xs:documentation>This reflects the level of the Contact’s Non-School Education.</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_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) that uniquely identifies the instance of the object.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="StudentContactPersonal" type="sif:StudentContactPersonalType">
    <xs:key name="StudentContactPersonalKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--StudentParticipation-->

  <xs:complexType name="StudentParticipationType">
    <xs:annotation>
      <xs:documentation>This object contains information pertaining to student eligibility for and participation in an individualized special program such as special education, ESL, etc.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="StudentPersonalRefId" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>The GUID of the student that this object is linked to.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StudentParticipationAsOfDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>
        Effective date (NOT the entry date) of this StudentParticipation instance for the identified student and program.
        Each time there is a change to the student's program participation profile, a new instance of this object is to be generated with
        the appropriate StudentParticipationAsOfDate and a new RefId.
      </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ProgramType" minOccurs="0" nillable="true" type="sif:AUCodeSetsStudentFamilyProgramTypeType">
        <xs:annotation>
          <xs:documentation>Identifies the individualised program for which the student's participation is described in this instance</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ProgramFundingSources" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="ProgramFundingSource" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Code" type="sif:AUCodeSetsProgramFundingSourceCodeType">
                    <xs:annotation>
                      <xs:documentation>Funding source for the program, may be more than one.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="ManagingSchool">
        <xs:complexType>
          <xs:annotation>
            <xs:documentation>The GUID of the school responsible for coordinating the student's program participation.</xs:documentation>
          </xs:annotation>
          <xs:simpleContent>
            <xs:extension base="sif:IdRefType">
              <xs:attribute name="SIF_RefObject" use="required">
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="SchoolInfo" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="StudentSpecialEducationFTE" minOccurs="0" nillable="true">
        <xs:simpleType>
          <xs:restriction base="xs:decimal">
            <xs:annotation>
              <xs:documentation>Calculated ratio of time the student is in a special ed setting.  Values range from 0.00 to 1.00.  If the student is in a special ed setting 25% of the time, the value is .25; if 100% of the time, the value is 1.00.</xs:documentation>
            </xs:annotation>
            <xs:minInclusive value="0" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:maxInclusive value="1" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:fractionDigits value="2" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="ParticipationContact" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Primary contact for this record.</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_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>This is the unique identification code</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="StudentParticipation" type="sif:StudentParticipationType">
    <xs:key name="StudentParticipationKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--PersonPicture-->

  <xs:complexType name="PersonPictureType">
    <xs:annotation>
      <xs:documentation>This object contains information about the person's picture.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="ParentObjectRefId">
        <xs:complexType>
          <xs:annotation>
            <xs:documentation>The GUID of the personal object to which this picture is linked</xs:documentation>
          </xs:annotation>
          <xs:simpleContent>
            <xs:extension base="sif:RefIdType">
              <xs:attribute name="SIF_RefObject" use="required">
                <xs:annotation>
                  <xs:documentation>The name of the object reference. </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="StudentPersonal" />
                    <xs:enumeration value="StaffPersonal" />
                    <xs:enumeration value="StudentContactPersonal" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </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" type="sif:AUCodeSetsPictureSourceType">
                <xs:annotation>
                  <xs:documentation>The way the picture is specified.</xs:documentation>
                </xs:annotation>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="OKToPublish" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
        <xs:annotation>
          <xs:documentation>Can the picture be published?</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_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:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) that uniquely identifies the picture.</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="@RefId" />
    </xs:key>
  </xs:element>


  <!--CalendarDate-->

  <xs:complexType name="CalendarDateType">
    <xs:annotation>
      <xs:documentation>This object defines information related to a school calendar day in a given school calendar year. If both CalendarDate and CalendarSummary objects are supported, there must be an instance of this object for each date between CalendarSummary StartDate and EndDate, inclusive.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SchoolInfoRefId" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>The ID (GUID) of the school for which this calendar information is being reported.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element ref="sif:SchoolYear" />
      <xs:element name="CalendarDateType">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Code" type="sif:AUCodeSetsCalendarEventType">
              <xs:annotation>
                <xs:documentation>Code indicating the type of school day.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="StudentAttendance" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="CountsTowardAttendance">
              <xs:annotation>
                <xs:documentation>Designates whether this date should be counted toward student attendance.</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="AttendanceValue">
              <xs:simpleType>
                <xs:restriction base="xs:decimal">
                  <xs:annotation>
                    <xs:documentation>
        Amount of the school day in which the student should be in attendance (Format is x.x; a student who should be in attendance a full day would be represented as 1.0).  If CountsTowardAttendance equals Yes then AttendanceValue must be greater than zero.
      </xs:documentation>
                  </xs:annotation>
                  <xs:minInclusive value="0" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                  <xs:maxInclusive value="1" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                  <xs:fractionDigits value="1" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                </xs:restriction>
              </xs:simpleType>
            </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_ExtendedElementsKey11">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:key>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="Date" use="required" type="xs:date">
      <xs:annotation>
        <xs:documentation>A specific school day that occurs within the school year.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CalendarSummaryRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) of the calendar summary in which this calendar date is.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="CalendarDate" type="sif:CalendarDateType">
    <xs:key name="CalendarDateKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@Date" />
      <xs:field xpath="@CalendarSummaryRefId" />
    </xs:key>
  </xs:element>


  <!--CalendarSummary-->

  <xs:complexType name="CalendarSummaryType">
    <xs:annotation>
      <xs:documentation>This object provides a summary of a school's calendar information for a given school year.  A school may have more than one calendar per school year (e.g., one calendar for Kindergarten students, one for special education students, one for seniors, or one for each calendar track), and each may have different days in session, start and end dates, minutes per day, instructional minutes, etc.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SchoolInfoRefId" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>The ID (GUID) of the school for which this calendar information is being reported.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element ref="sif:SchoolYear" />
      <xs:element ref="sif:LocalId" />
      <xs:element name="Description" minOccurs="0" nillable="true" type="xs:string">
        <xs:annotation>
          <xs:documentation>Textual description of the school calendar.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DaysInSession" type="xs:unsignedInt">
        <xs:annotation>
          <xs:documentation>The total number of days that the school was or is anticipated to be in session during the school year.  Also included are days on which the education institution facility is closed and the student body as a whole is engaged in planned activities off-campus under the guidance and direction of staff members.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StartDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>The first calendar date, whether or not instruction was provided. If both CalendarSummary and CalendarDate objects are supported, StartDate must be the date of the first chronological instance of CalendarDate for the school's calendar.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EndDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>The last calendar date, whether or not instruction was provided. If both CalendarSummary and CalendarDate objects are supported, EndDate must be the last chronological instance of CalendarDate for the school's calendar.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="FirstInstructionDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>The first day of student instruction.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LastInstructionDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>The last day of student instruction (including days or times that students are present for purposes of testing and/or evaluation, but not including whole or part-days whose sole purposes is for distribution of report cards).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="GraduationDate" minOccurs="0" nillable="true" type="sif:GraduationDateType">
        <xs:annotation>
          <xs:documentation>Date of graduation ceremony.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="InstructionalMinutes" minOccurs="0" nillable="true" type="xs:unsignedInt">
        <xs:annotation>
          <xs:documentation>The total number of instructional minutes for this calendar for the school year.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="MinutesPerDay" minOccurs="0" nillable="true" type="xs:unsignedInt">
        <xs:annotation>
          <xs:documentation>The number of minutes in the day in which the school is normally in session.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="YearLevels" minOccurs="0" nillable="true" type="sif:YearLevelsType">
        <xs:annotation>
          <xs:documentation>Collection of year levels applicable to this school calendar.</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_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 ID (GUID) of the calendar to which this information relates.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="CalendarSummary" type="sif:CalendarSummaryType">
    <xs:key name="CalendarSummaryKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--StudentAttendanceSummary-->

  <xs:complexType name="StudentAttendanceSummaryType">
    <xs:annotation>
      <xs:documentation>This object provides a summary of a student'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 student in a school over the course of a school year.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="StartDay" minOccurs="0" nillable="true" type="xs:unsignedInt">
        <xs:annotation>
          <xs:documentation>Number of the school day represented in StartDate.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EndDay" minOccurs="0" nillable="true" type="xs:unsignedInt">
        <xs:annotation>
          <xs:documentation>Number of the school day represented in EndDate.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="FTE" minOccurs="0" nillable="true">
        <xs:simpleType>
          <xs:restriction base="xs:decimal">
            <xs:annotation>
              <xs:documentation>Full time equivalent numeric value of the student's course load during this attendance period, expressed in decimal form, where 1.00 represents a full time enrollment.</xs:documentation>
            </xs:annotation>
            <xs:minInclusive value="0" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:maxInclusive value="1" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:fractionDigits value="2" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="DaysAttended" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>The number of days the student attended school when school was in session between the StartDate and EndDate, inclusive.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ExcusedAbsences" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>The number of days the student was absent from school with a valid excuse when school was in session between the StartDate and EndDate, inclusive.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="UnexcusedAbsences" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>The number of days the student was absent from school without a valid excuse when school was in session between the StartDate and EndDate, inclusive.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DaysTardy" minOccurs="0" nillable="true" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>The number of days the student was tardy when school was in session between the StartDate and EndDate, inclusive.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DaysInMembership" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>The number of days the student was present plus the number of days the student was absent when school was in session during the period 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_ExtendedElementsKey13">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:key>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="StudentPersonalRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) of the student 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:attribute name="SchoolYear" use="required" type="sif:SchoolYearType">
      <xs:annotation>
        <xs:documentation>School year for which the information is applicable.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="StartDate" use="required" type="xs:date">
      <xs:annotation>
        <xs:documentation>Starting date of this attendance reporting period.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="EndDate" use="required" type="xs:date">
      <xs:annotation>
        <xs:documentation>Ending date of this attendance reporting period.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="StudentAttendanceSummary" type="sif:StudentAttendanceSummaryType">
    <xs:key name="StudentAttendanceSummaryKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@StudentPersonalRefId" />
      <xs:field xpath="@SchoolInfoRefId" />
      <xs:field xpath="@SchoolYear" />
      <xs:field xpath="@StartDate" />
      <xs:field xpath="@EndDate" />
    </xs:key>
  </xs:element>


  <!--StudentDailyAttendance-->

  <xs:complexType name="StudentDailyAttendanceType">
    <xs:annotation>
      <xs:documentation>This object provides daily attendance information for a particular student in a particular school on a particular date.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="StudentPersonalRefId" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>The ID (GUID) of the student for whom this attendance information is being reported.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolInfoRefId" 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:element>
      <xs:element name="Date" type="xs:date">
        <xs:annotation>
          <xs:documentation>The calendar date to which this attendance information relates.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element ref="sif:SchoolYear" />
      <xs:element name="DayValue" minOccurs="0" nillable="true" type="sif:AUCodeSetsDayValueCodeType">
        <xs:annotation>
          <xs:documentation>Value of a day this instance, represents.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element ref="sif:AttendanceCode" />
      <xs:element name="AttendanceStatus" type="sif:AUCodeSetsAttendanceStatusType">
        <xs:annotation>
          <xs:documentation>Approved or Unapproved status of this attendance code.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TimeIn" minOccurs="0" nillable="true" type="xs:time">
        <xs:annotation>
          <xs:documentation>The time the student entered or returned to school.  Must be provided if ‘Partial’ chosen for DayValue.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TimeOut" minOccurs="0" nillable="true" type="xs:time">
        <xs:annotation>
          <xs:documentation>The time the student left school.  Must be provided if ‘Partial’ chosen for DayValue..</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AbsenceValue" minOccurs="0" nillable="true">
        <xs:simpleType>
          <xs:restriction base="xs:decimal">
            <xs:annotation>
              <xs:documentation>Must be provided if the DayValue is "Partial" or "Other". The amount of absence represented by AttendanceCode, up to three decimal places.</xs:documentation>
            </xs:annotation>
            <xs:minInclusive value="0" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:maxInclusive value="1" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="AttendanceNote" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Note related to this particular attendance.</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 ID (GUID) assigned to uniquely identify this attendance record.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="StudentDailyAttendance" type="sif:StudentDailyAttendanceType">
    <xs:key name="StudentDailyAttendanceKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--StudentPeriodAttendance-->

  <xs:complexType name="StudentPeriodAttendanceType">
    <xs:annotation>
      <xs:documentation>
        This object allows recording of period level attendance a student.

        The Australian StudentPeriodAttendance object differs to the US StudentPeriodAttendance object in the following ways:
        Student Period Attendance object is usually linked to a SessionInfo object (see below), but it is possible, for simple period attendance packages, to not link period attendance to a session or timetable.There will be one provider of the StudentPeriodAttendance within a SIF Zone in Australia.  The US, in contrast, has specified objects and events to allow for multiple providers of the StudentPeriodAttendance object in a zone.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="StudentPersonalRefId" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>The GUID of the student that this attendance applies to.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolInfoRefId" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>The school where the attendance was recorded.  Somewhat redundant, needed for requests.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Date" type="xs:date">
        <xs:annotation>
          <xs:documentation>The date of the attendance event.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SessionInfoRefId" minOccurs="0" nillable="true" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>The GUID of the session that this attendance applies to.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TimetablePeriod" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The period within which attendance is being reported, e.g. "4D".</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element ref="sif:AttendanceCode" />
      <xs:element name="AttendanceStatus" type="sif:AUCodeSetsAttendanceStatusType">
        <xs:annotation>
          <xs:documentation>Approved or Unapproved status of this attendance code.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolYear" minOccurs="0" nillable="true" type="sif:SchoolYearType">
        <xs:annotation>
          <xs:documentation>
        School year for which this enrollment is applicable, expressed as the four-digit year in which the school year
        ends (e.g. 2007).
      </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="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="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:complexType>

  <xs:element name="StudentPeriodAttendance" type="sif:StudentPeriodAttendanceType">
    <xs:key name="StudentPeriodAttendanceKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--SessionInfo-->

  <xs:complexType name="SessionInfoType">
    <xs:annotation>
      <xs:documentation>
        This object provides the link between Period Attendance and the school�s timetable.  It allows subject and teaching group information to be communicated to/from the attendance system.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SchoolInfoRefId" 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:element>
      <xs:element name="TimeTableCellRefId" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>The (GUID) of the piece of Curriculum (TT Grid) scheduled</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element ref="sif:SchoolYear" />
      <xs:element ref="sif:LocalId" />
      <xs:element name="TimeTableSubjectLocalId" type="sif:LocalIdType">
        <xs:annotation>
          <xs:documentation>TimeTableSubject Local Identifier</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TeachingGroupLocalId" type="sif:LocalIdType">
        <xs:annotation>
          <xs:documentation>Teaching Group Local Identifier</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolLocalId" minOccurs="0" nillable="true" type="sif:LocalIdType">
        <xs:annotation>
          <xs:documentation>School Local Identifier</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StaffPersonalLocalId" minOccurs="0" nillable="true" type="sif:LocalIdType">
        <xs:annotation>
          <xs:documentation>Staff Local Identifier</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="RoomNumber" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Room number as presented to the user or application.  Needs to be provided if changed from  TimeTableCell.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DayId" type="sif:LocalIdType">
        <xs:annotation>
          <xs:documentation>Day Id </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PeriodId" type="sif:LocalIdType">
        <xs:annotation>
          <xs:documentation>Period Id within the Day Id</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SessionDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date of Session</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StartTime" minOccurs="0" nillable="true" type="xs:time">
        <xs:annotation>
          <xs:documentation>Optional Start Time</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="FinishTime" minOccurs="0" nillable="true" type="xs:time">
        <xs:annotation>
          <xs:documentation>Optional End Time</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="RollMarked" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
        <xs:annotation>
          <xs:documentation>Was the Roll Marked for this Period?</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="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The GUID of the Object</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="SessionInfo" type="sif:SessionInfoType">
    <xs:key name="SessionInfoKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--StudentSnapshot-->

  <xs:complexType name="StudentSnapshotType">
    <xs:annotation>
      <xs:documentation>
        This object provides a snapshot of a student's record on a given day. All information reported in the object is
        reported as it appeared in the responding system on the date specified in SnapDate. It can be used for synching data
        across applications, for periodically loading a data warehouse, or for vertical reporting of data to a requesting
        authority, such as a state department of education.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:SchoolYear" />
      <xs:element ref="sif:Name" />
      <xs:element ref="sif:LocalId" />
      <xs:element name="StateProvinceId" minOccurs="0" nillable="true" type="sif:StateProvinceIdType">
        <xs:annotation>
          <xs:documentation>The state-assigned identifier for this student.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Sex" minOccurs="0" nillable="true" type="sif:AUCodeSetsSexCodeType">
        <xs:annotation>
          <xs:documentation>'Sex' is the distinction 'male' and 'female', as reported by the person.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="BirthDate" minOccurs="0" nillable="true" type="sif:BirthDateType">
        <xs:annotation>
          <xs:documentation>The person's date of birth.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Age" minOccurs="0" nillable="true" type="xs:unsignedInt">
        <xs:annotation>
          <xs:documentation>The age (in years) of the student on the date in SnapDate.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ProjectedGraduationYear" minOccurs="0" nillable="true" type="sif:ProjectedGraduationYearType">
        <xs:annotation>
          <xs:documentation>Currently projected graduation year.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="OnTimeGraduationYear" minOccurs="0" nillable="true" type="sif:OnTimeGraduationYearType">
        <xs:annotation>
          <xs:documentation>First projected graduation year, usually determined when student is accepted into ninth grade.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StudentSubjectChoiceList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="StudentSubjectChoice" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="PreferenceNumber" minOccurs="0" nillable="true" type="xs:unsignedInt">
                    <xs:annotation>
                      <xs:documentation>Subject Priority</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="SubjectLocalId" type="sif:LocalIdType">
                    <xs:annotation>
                      <xs:documentation>Local Subject Id</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="StudyDescription" minOccurs="0" nillable="true" type="sif:SubjectAreaType">
                    <xs:annotation>
                      <xs:documentation>Description about Study Mode.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="OtherSchoolLocalId" minOccurs="0" nillable="true" type="sif:LocalIdType">
                    <xs:annotation>
                      <xs:documentation>Localid of a school where the student studies this subject if not at the home school.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="HomeEnrollment">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="StudentSchoolEnrollmentRefId" minOccurs="0" nillable="true" type="sif:IdRefType">
              <xs:annotation>
                <xs:documentation>The ID (GUID) of the StudentSchoolEnrollment object from which the enrollment information is derived.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="SchoolName" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Name of the school.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="SchoolInfoRefId" minOccurs="0" nillable="true" type="sif:IdRefType">
              <xs:annotation>
                <xs:documentation>
        The ID (GUID) of the school.  Provide both the HomeEnrollment/SchoolInfoRefId and HomeEnrollment/LocalId elements if possible.
        If not, one or the other must be provided.
      </xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="LocalId" minOccurs="0" nillable="true" type="sif:LocalIdType">
              <xs:annotation>
                <xs:documentation>
        The locally-defined identifier for this school.
        Provide both the HomeEnrollment/LocalId and HomeEnrollment/SchoolId elements if possible.
        If not, one or the other must be provided.
      </xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="SchoolNo" minOccurs="0" nillable="true" type="sif:LocalIdType">
              <xs:annotation>
                <xs:documentation>
        The state or province defined identifier for this school.
      </xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="YearLevel" minOccurs="0" nillable="true" type="sif:YearLevelType">
              <xs:annotation>
                <xs:documentation>Year or academic level of student.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="Homeroom" minOccurs="0" nillable="true">
              <xs:complexType>
                <xs:annotation>
                  <xs:documentation>HomeGroup this student belongs to</xs:documentation>
                </xs:annotation>
                <xs:simpleContent>
                  <xs:extension base="sif:IdRefType">
                    <xs:attribute name="SIF_RefObject" use="required">
                      <xs:annotation>
                        <xs:documentation>The name of the SIF object referenced.</xs:documentation>
                      </xs:annotation>
                      <xs:simpleType>
                        <xs:restriction base="xs:token">
                          <xs:enumeration value="RoomInfo" />
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:attribute>
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
            <xs:element name="HomeroomNumber" minOccurs="0" nillable="true" type="sif:HomeroomNumberType">
              <xs:annotation>
                <xs:documentation>The locally-defined identifier of that room</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_ExtendedElementsKey17">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:key>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="SnapDate" use="required" type="xs:date">
      <xs:annotation>
        <xs:documentation>
        The date the data snapshot was taken.
        Some elements are provided/calculated as of the SnapDate, and some are provided as of the date the object is requested
        (i.e., some can be historical and some will represent the last information available/last known value).
        In a SIS the following elements are provided/calculated as of the SnapDate: Age, HomeEnrollment and all its child elements.
        Other applications (e.g., data warehouses) may be able to provide values for other elements on various snap dates.
      </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="StudentPersonalRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) of the student to whom this information relates.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="StudentSnapshot" type="sif:StudentSnapshotType">
    <xs:key name="StudentSnapshotKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@SnapDate" />
      <xs:field xpath="@StudentPersonalRefId" />
    </xs:key>
  </xs:element>


  <!--TimeTableSubject-->

  <xs:complexType name="TimeTableSubjectType">
    <xs:annotation>
      <xs:documentation>
        This purpose of this object is to define and communicate the subject or distinct piece of curriculum that needs to be scheduled by the time table generator.  This is a new object proposed to meet SIF-AU needs.  Reviews of the existing specifications identified two relevant objects – SchoolCourseInfo, defined in SIF US 2.2 specification and SchoolGroup, defined within the SIF UK 1.1 specification.  These objects appear to have some similar context but seem overly complex considering that Australian requirements, which are limited to the Student Administration System or Curriculum Delivery System providing base information to the Time Tabling application about what curriculum offerings are being proposed.

        When this data is sent in a Request/Response only those subjects that are relevant to be scheduled (or active), should be sent to the TimeTabling application.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SubjectLocalId" type="sif:LocalIdType">
        <xs:annotation>
          <xs:documentation>SubjectLocalID - Distinct piece of curriculum that is to be scheduled.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AcademicYear" minOccurs="0" nillable="true" type="sif:YearLevelType">
        <xs:annotation>
          <xs:documentation>Subject Year Level.  Either AcademicYear or AcademicYearRange must be provided.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AcademicYearRange" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Start" type="sif:YearLevelType">
              <xs:annotation>
                <xs:documentation>Lowest year in range.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="End" type="sif:YearLevelType">
              <xs:annotation>
                <xs:documentation>Highest year in range</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="CourseLocalId" minOccurs="0" nillable="true" type="sif:LocalIdType">
        <xs:annotation>
          <xs:documentation>Local Course Id, if associated with a Course.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolCourseInfoRefId" minOccurs="0" nillable="true" type="sif:RefIdType">
        <xs:annotation>
          <xs:documentation>The GUID of the SchoolCourseInfo object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Faculty" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Faculty</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SubjectShortName" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>SubjectShortName</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SubjectLongName" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>SubjectLongName</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SubjectType" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Core or Elective or ?</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ProposedMaxClassSize" minOccurs="0" nillable="true" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>Suggested maximum class size for this subject.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ProposedMinClassSize" minOccurs="0" nillable="true" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>Suggested minimum class size for this subject.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolInfoRefId" minOccurs="0" nillable="true" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>Optional the GUID of the SchoolInfo Object  if this object is known in the zone.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolLocalId" minOccurs="0" nillable="true" type="sif:LocalIdType">
        <xs:annotation>
          <xs:documentation>Optional Local School Id</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Semester" minOccurs="0" nillable="true" type="xs:unsignedInt">
        <xs:annotation>
          <xs:documentation>Semester, Term, or Quarter subject offered.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolYear" minOccurs="0" nillable="true" 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").
      </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType">
        <xs:annotation>
          <xs:documentation>Any other codes this subject is known by; eg VASS code for VCE in Vic.</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>GUID that identifies this TimeTableSubject.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="TimeTableSubject" type="sif:TimeTableSubjectType">
    <xs:key name="TimeTableSubjectKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--TimeTable-->

  <xs:complexType name="TimeTableType">
    <xs:annotation>
      <xs:documentation>
        The purpose of this object is to define a schedule or Time Table structure/skeleton for the school.  The Time Table is produced by the Time Tabling software.  Once the Time Table is produced, the time tabling software creates the schedule based on business rules and constraints to fit into the time table structure.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SchoolInfoRefId" minOccurs="0" nillable="true" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>Optional the GUID of the SchoolInfo Object if this object is known in the zone.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element ref="sif:SchoolYear" />
      <xs:element name="LocalId" minOccurs="0" nillable="true" type="sif:LocalIdType">
        <xs:annotation>
          <xs:documentation>Local TimeTable ID</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Title" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Unique Name of the proposed Time Table</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DaysPerCycle" type="xs:unsignedInt">
        <xs:annotation>
          <xs:documentation>Max Number of days per Time Table cycle</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PeriodsPerDay" type="xs:unsignedInt">
        <xs:annotation>
          <xs:documentation>Max Number of periods per Time Table Day</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TeachingPeriodsPerDay" minOccurs="0" nillable="true" type="xs:unsignedInt">
        <xs:annotation>
          <xs:documentation>Teaching periods per day if different to PeriodsPerDay</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolLocalId" minOccurs="0" nillable="true" type="sif:LocalIdType">
        <xs:annotation>
          <xs:documentation>Optional Local School Id</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolName" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The school name in plain text. </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TimeTableCreationDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date Schedule was created or last edited.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StartDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>First day of TimeTable.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EndDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Last day of the TimeTable.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TimeTableDayList">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="TimeTableDay" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="DayId" type="sif:LocalIdType">
                    <xs:annotation>
                      <xs:documentation>Local Time Table Identifier</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="DayTitle" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation />
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="TimeTablePeriodList">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="TimeTablePeriod" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="PeriodId" type="sif:LocalIdType">
                                <xs:annotation>
                                  <xs:documentation>Period in Day Identifier</xs:documentation>
                                </xs:annotation>
                              </xs:element>
                              <xs:element name="PeriodTitle" type="xs:normalizedString">
                                <xs:annotation>
                                  <xs:documentation>Title of Period eg. Session 1 or Period 1</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_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>GUID that identifies this  TimeTable object.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="TimeTable" type="sif:TimeTableType">
    <xs:key name="TimeTableKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--TeachingGroup-->

  <xs:complexType name="TeachingGroupType">
    <xs:annotation>
      <xs:documentation>
        This object identifies a particular Teaching Group or class in a particular a time table.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:SchoolYear" />
      <xs:element ref="sif:LocalId" />
      <xs:element name="ShortName" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Short free format label that describes the group.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LongName" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Longer description of required</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Set" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Set Number (UK)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Block" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Block (UK)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CurriculumLevel" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Assessment Stage eg VELS Level</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolInfoRefId" minOccurs="0" nillable="true" type="sif:RefIdType">
        <xs:annotation>
          <xs:documentation>GUID of SchoolInfo object this teaching group belongs to.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolLocalId" minOccurs="0" nillable="true" type="sif:LocalIdType">
        <xs:annotation>
          <xs:documentation>Local School Id.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolCourseInfoRefId" minOccurs="0" nillable="true" type="sif:RefIdType">
        <xs:annotation>
          <xs:documentation>GUID of SchoolCourseInfo object this teaching group is part of.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolCourseLocalId" minOccurs="0" nillable="true" type="sif:LocalIdType">
        <xs:annotation>
          <xs:documentation>Local Course Id.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TimeTableSubjectRefId" minOccurs="0" nillable="true" type="sif:RefIdType">
        <xs:annotation>
          <xs:documentation>GUID of TimeTableSubject object this teaching group belongs to.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TimeTableSubjectLocalId" minOccurs="0" nillable="true" type="sif:LocalIdType">
        <xs:annotation>
          <xs:documentation>Local subject Id.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StudentList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="TeachingGroupStudent" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="StudentPersonalRefId" minOccurs="0" nillable="true" type="sif:IdRefType">
                    <xs:annotation>
                      <xs:documentation>GUID from the StudentPersonal or StudentSnapshot Object (if known), that identifies the student.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="StudentLocalId" type="sif:LocalIdType">
                    <xs:annotation>
                      <xs:documentation>Local Id of the Student </xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="Name" type="sif:NameOfRecordType">
                    <xs:annotation>
                      <xs:documentation>Name of student</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="TeacherList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="TeachingGroupTeacher" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="StaffPersonalRefId" minOccurs="0" nillable="true" type="sif:IdRefType">
                    <xs:annotation>
                      <xs:documentation>GUID from the StaffPersonal Object that identifies the Staff member</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="StaffLocalId" type="sif:LocalIdType">
                    <xs:annotation>
                      <xs:documentation>LocalId of the Staff member</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="Name" type="sif:NameOfRecordType">
                    <xs:annotation>
                      <xs:documentation />
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="Association" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>Association with the Teaching Group (free format for this release)</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="MinClassSize" minOccurs="0" nillable="true" type="xs:integer">
        <xs:annotation>
          <xs:documentation>Minimum class size.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="MaxClassSize" minOccurs="0" nillable="true" type="xs:integer">
        <xs:annotation>
          <xs:documentation>Maximum class size</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_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 GUID of the TeachingGroup</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="TeachingGroup" type="sif:TeachingGroupType">
    <xs:key name="TeachingGroupKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--TimeTableCell-->

  <xs:complexType name="TimeTableCellType">
    <xs:annotation>
      <xs:documentation>
        The purpose of this object is to identify a specific cell within a particular TimeTable.  A time table is a structure that represents all the available days and times (periods) for which a particular teaching group, or subject can be scheduled.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="TimeTableRefId" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>The GUID of the TimeTable to which this Cell belongs</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TimeTableSubjectRefId" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>The GUID of the Subject that this Cell is scheduling</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TeachingGroupRefId" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>The GUID of the TeachingGroup being scheduled</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="RoomInfoRefId" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>The GUID of the Resource being Scheduled</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StaffPersonalRefId" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>The GUID of the Staff Member being Scheduled</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TimeTableLocalId" minOccurs="0" nillable="true" type="sif:LocalIdType">
        <xs:annotation>
          <xs:documentation>Time Table Local Identifier</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SubjectLocalId" minOccurs="0" nillable="true" type="sif:LocalIdType">
        <xs:annotation>
          <xs:documentation>Subject Local Id</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TeachingGroupLocalId" minOccurs="0" nillable="true" type="sif:LocalIdType">
        <xs:annotation>
          <xs:documentation>Teaching Group </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="RoomNumber" type="sif:HomeroomNumberType">
        <xs:annotation>
          <xs:documentation>Room number as presented to the user/application.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StaffLocalId" minOccurs="0" nillable="true" type="sif:LocalIdType">
        <xs:annotation>
          <xs:documentation>Staff LocalId</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DayId" type="sif:LocalIdType">
        <xs:annotation>
          <xs:documentation>Day Id </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PeriodId" type="sif:LocalIdType">
        <xs:annotation>
          <xs:documentation>Period Id within the Day Id</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CellType" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Type of Lesson/Session  eg Teaching, Lunch etc</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolInfoRefId" minOccurs="0" nillable="true" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>Optional the GUID of the SchoolInfo Object  if this object is known in the zone</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolLocalId" minOccurs="0" nillable="true" type="sif:LocalIdType">
        <xs:annotation>
          <xs:documentation>Optional Local School Id</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 GUID of the TimeTableCell</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="TimeTableCell" type="sif:TimeTableCellType">
    <xs:key name="TimeTableCellKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--SchoolCourseInfo-->

  <xs:complexType name="SchoolCourseInfoType">
    <xs:annotation>
      <xs:documentation>This object is for course information.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SchoolInfoRefId" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>The ID (GUID) that identifies the school where the course is offered.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolLocalId" minOccurs="0" nillable="true" type="sif:LocalIdType">
        <xs:annotation>
          <xs:documentation>The locally-assigned identifier for this school/campus.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolYear" minOccurs="0" nillable="true" 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).
      </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TermInfoRefId" minOccurs="0" nillable="true" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>
        The ID (GUID) that uniquely identifies this TermInfo (reportable time period).
        Either SchoolYear or TermInfoRefId must be provided.
      </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CourseCode" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>School-defined local code for the course.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StateCourseCode" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>State-defined standard course code used to report information about courses.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DistrictCourseCode" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The corresponding district course code.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SubjectAreaList" minOccurs="0" nillable="true" type="sif:SubjectAreaListType">
        <xs:annotation>
          <xs:documentation>Subject matter areas.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CourseTitle" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Title of the course.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Description" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Textual description of the course.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="InstructionalLevel" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>An indication of the general nature and difficulty of instruction provided.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CourseCredits" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The number of credits awarded upon course completion.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CoreAcademicCourse" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
        <xs:annotation>
          <xs:documentation>Does the course meet the state definition of a core academic course?</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="GraduationRequirement" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
        <xs:annotation>
          <xs:documentation>Does the state require that the course be completed for graduation?</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Department" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Department with jurisdiction over this course.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CourseContent" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Description of course content.</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_ExtendedElementsKey22">
          <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 the school course.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="SchoolCourseInfo" type="sif:SchoolCourseInfoType">
    <xs:key name="SchoolCourseInfoKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--SummaryEnrollmentInfo-->

  <xs:complexType name="SummaryEnrollmentInfoType">
    <xs:annotation>
      <xs:documentation>
        A key Australian business requirement is the ability to publish a complete student status update on demand.  This status may include multiple school enrolments.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:SchoolYear" />
      <xs:element name="ParentObjectRefId">
        <xs:complexType>
          <xs:annotation>
            <xs:documentation>The GUID of the related parent object</xs:documentation>
          </xs:annotation>
          <xs:simpleContent>
            <xs:extension base="sif:RefIdType">
              <xs:attribute name="SIF_RefObject" use="required">
                <xs:annotation>
                  <xs:documentation />
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="StudentPersonal" />
                    <xs:enumeration value="StaffPersonal" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element ref="sif:LocalId" />
      <xs:element name="StateProvinceId" minOccurs="0" nillable="true" type="sif:StateProvinceIdType">
        <xs:annotation>
          <xs:documentation>The state-assigned identifier for this student/teacher.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element ref="sif:PersonInfo" />
      <xs:element name="SchoolEnrollmentList">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SchoolEnrollment" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SchoolName" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>Name of school/campus.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="SchoolInfoRefId" minOccurs="0" nillable="true" type="sif:RefIdType">
                    <xs:annotation>
                      <xs:documentation>The ID (GUID) of the school. Provide both the SchoolInfo RefId and LocalId elements if possible. If not, one or the other must be provided.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="SchoolLocalId" minOccurs="0" nillable="true" type="sif:LocalIdType">
                    <xs:annotation>
                      <xs:documentation>The locally-defined identifier for this school. Provide both the LocalId and SchoolId elements if possible. If not, one or the other must be provided.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="SchoolStateProvinceId" minOccurs="0" nillable="true" type="sif:StateProvinceIdType">
                    <xs:annotation>
                      <xs:documentation>The state or province defined identifier for this school.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="Student" minOccurs="0" nillable="true">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="StudentSchoolEnrollmentRefId" type="sif:RefIdType">
                          <xs:annotation>
                            <xs:documentation>The ID (GUID) of the StudentSchoolEnrollment object from which the enrollment information is derived.</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                        <xs:element name="StudentLocalId" minOccurs="0" nillable="true" type="sif:LocalIdType">
                          <xs:annotation>
                            <xs:documentation>The locally-defined identifier for this Student.</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="Staff" minOccurs="0" nillable="true">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="StaffAssignmentRefId" type="sif:RefIdType">
                          <xs:annotation>
                            <xs:documentation>The ID (GUID) of the StaffAssignment object from which the enrollment information is derived.  </xs:documentation>
                          </xs:annotation>
                        </xs:element>
                        <xs:element name="StaffLocalId" minOccurs="0" nillable="true" type="sif:LocalIdType">
                          <xs:annotation>
                            <xs:documentation>The locally-defined identifier for this Staff.</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="EnrollmentList" minOccurs="0" nillable="true">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="Enrollment" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="TeachingGroupRefId" minOccurs="0" nillable="true" type="sif:IdRefType">
                                <xs:annotation>
                                  <xs:documentation>GUID that identifies this Class as a Teaching Group.</xs:documentation>
                                </xs:annotation>
                              </xs:element>
                              <xs:element name="SchoolCourseInfoRefId" minOccurs="0" nillable="true" type="sif:IdRefType">
                                <xs:annotation>
                                  <xs:documentation>GUID that identifies this Course for this class.</xs:documentation>
                                </xs:annotation>
                              </xs:element>
                              <xs:element name="TimeTableSubjectRefId" minOccurs="0" nillable="true" type="sif:IdRefType">
                                <xs:annotation>
                                  <xs:documentation>GUID that identifies this Subject/Offering for this class.</xs:documentation>
                                </xs:annotation>
                              </xs:element>
                              <xs:element ref="sif:LocalId" />
                              <xs:element name="ShortName" minOccurs="0" nillable="true" type="xs:normalizedString">
                                <xs:annotation>
                                  <xs:documentation>Short free format label that describes the class. Should be the same as the ShortName in the TeachingGroup</xs:documentation>
                                </xs:annotation>
                              </xs:element>
                              <xs:element name="SchoolYear" minOccurs="0" nillable="true" 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., "2009").</xs:documentation>
                                </xs:annotation>
                              </xs:element>
                              <xs:element name="SubjectLocalId" minOccurs="0" nillable="true" type="sif:LocalIdType">
                                <xs:annotation>
                                  <xs:documentation>The local subject/offering code for this class.</xs:documentation>
                                </xs:annotation>
                              </xs:element>
                              <xs:element name="CourseLocalId" minOccurs="0" nillable="true" type="sif:LocalIdType">
                                <xs:annotation>
                                  <xs:documentation>The local course code for this class.</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_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 ID (GUID) that uniquely identifies the enrollment.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="SummaryEnrollmentInfo" type="sif:SummaryEnrollmentInfoType">
    <xs:key name="SummaryEnrollmentInfoKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--LEAInfo-->

  <xs:complexType name="LEAInfoType">
    <xs:annotation>
      <xs:documentation>This object contains information about a school district or other Local Educational Agency (LEA).</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:LocalId" />
      <xs:element name="StateProvinceId" minOccurs="0" nillable="true" type="sif:StateProvinceIdType">
        <xs:annotation>
          <xs:documentation>The state-assigned identifier for this LEA.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CommonwealthId" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Commonwealth Identifier for this District (LEA).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LEAName" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Name of LEA.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LEAURL" minOccurs="0" nillable="true" type="xs:anyURI">
        <xs:annotation>
          <xs:documentation>URL for the LEA.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EducationAgencyType" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Code" type="sif:AUCodeSetsEducationAgencyTypeType">
              <xs:annotation>
                <xs:documentation>Code indicating the operational/administrative level.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="LEAContactList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="LEAContact" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="PublishInDirectory" minOccurs="0" nillable="true" type="sif:PublishInDirectoryType">
                    <xs:annotation>
                      <xs:documentation>Indicates whether or not this LEA contact's information should be published in a directory of LEA information.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element ref="sif:ContactInfo" />
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="PhoneNumberList" minOccurs="0" nillable="true" type="sif:PhoneNumberListType">
        <xs:annotation>
          <xs:documentation>The LEA's phone number(s).</xs:documentation>
        </xs:annotation>
        <xs:key name="PhoneNumberListKey6">
          <xs:selector xpath="./sif:PhoneNumber" />
          <xs:field xpath="@Type" />
        </xs:key>
      </xs:element>
      <xs:element name="AddressList" minOccurs="0" nillable="true" type="sif:AddressListType">
        <xs:annotation>
          <xs:documentation>The LEA's address(es).</xs:documentation>
        </xs:annotation>
        <xs:key name="AddressListKey4">
          <xs:selector xpath="./sif:Address" />
          <xs:field xpath="@Type" />
          <xs:field xpath="@Role" />
        </xs:key>
      </xs:element>
      <xs:element name="OperationalStatus" minOccurs="0" nillable="true" type="sif:OperationalStatusType">
        <xs:annotation>
          <xs:documentation>Operational condition of a school.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="JurisdictionLowerHouse" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Lower House area  that the school/campus  belongs to.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SLA" minOccurs="0" nillable="true" type="sif:AUCodeSetsAustralianStandardGeographicalClassificationASGCType">
        <xs:annotation>
          <xs:documentation>Statistical Local Area that the school/campus belongs to.</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_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 GUID of the LEA whose information this is.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="LEAInfo" type="sif:LEAInfoType">
    <xs:key name="LEAInfoKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--StudentSDTN-->

  <xs:complexType name="StudentSDTNType">
    <xs:annotation>
      <xs:documentation>
        This object has been developed to cater for the SDTN – Student Data Transfer Note.  http://www.mceecdya.edu.au/verve/_resources/ISDTN_Form_3_Transfer_Note_Oct_06.pdf
        The elements in this object have been developed to support the LIMF recommendations and allow two or more jurisdictions to exchange this data. http://www.aictec.edu.au/aictec/go/home/about/pid/289
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SnapDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>The date that this object was sent.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StudentPersonalRefId" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>The RefId of the StudentPersonal object at the sending school.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element ref="sif:PersonInfo" />
      <xs:element name="SchoolInfoRefId" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>GUID that identifies the school that provided the SDTN.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolLocalId" minOccurs="0" nillable="true" type="sif:LocalIdType">
        <xs:annotation>
          <xs:documentation>The locally-assigned identifier for the school in the original database (sender)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolName" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Name of school/campus.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AddressList" minOccurs="0" nillable="true" type="sif:AddressListType">
        <xs:annotation>
          <xs:documentation>The school's addresses.</xs:documentation>
        </xs:annotation>
        <xs:key name="AddressListKey5">
          <xs:selector xpath="./sif:Address" />
          <xs:field xpath="@Type" />
          <xs:field xpath="@Role" />
        </xs:key>
      </xs:element>
      <xs:element name="PrincipalInfo" minOccurs="0" nillable="true" type="sif:PrincipalInfoType">
        <xs:annotation>
          <xs:documentation>Information about the campus or school principal.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="FurtherInformation" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="ContactName" minOccurs="0" nillable="true" type="sif:NameOfRecordType">
              <xs:annotation>
                <xs:documentation>The name of the person to contact for further information on this student.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="PhoneNumberList" minOccurs="0" nillable="true" type="sif:PhoneNumberListType">
              <xs:annotation>
                <xs:documentation>The further contact person’s phone number(s).</xs:documentation>
              </xs:annotation>
              <xs:key name="PhoneNumberListKey7">
                <xs:selector xpath="./sif:PhoneNumber" />
                <xs:field xpath="@Type" />
              </xs:key>
            </xs:element>
            <xs:element name="EmailList" minOccurs="0" nillable="true" type="sif:EmailListType">
              <xs:annotation>
                <xs:documentation>The further contact person’s e-mail address(es).</xs:documentation>
              </xs:annotation>
              <xs:key name="EmailListKey5">
                <xs:selector xpath="./sif:Email" />
                <xs:field xpath="@Type" />
              </xs:key>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="EnrollmentDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>The date when the student first attended the school.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DepartureDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>The last school calendar day the student attended or sign-out date if departure is before end of school year.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="YearLevel" minOccurs="0" nillable="true" type="sif:YearLevelType">
        <xs:annotation>
          <xs:documentation>School Year or academic level of student at departure date.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ReasonForLeaving" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation />
        </xs:annotation>
      </xs:element>
      <xs:element name="PreviousSchoolsList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="PreviousSchool" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SchoolName" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>Previous School Name</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="ReasonLeft" minOccurs="0" nillable="true" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>Reason for leaving previous school if known.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="AttendanceConcerns" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
        <xs:annotation>
          <xs:documentation>Indicator of whether the Student had attendance concerns worth noting.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="HealthNeeds" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
        <xs:annotation>
          <xs:documentation>Indicator of whether the Student has any Health Care Needs.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AreasOfInterestList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="ActivityInfo" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="StudentActivityInfoRefId" minOccurs="0" nillable="true" type="sif:IdRefType">
                    <xs:annotation>
                      <xs:documentation>GUID that identifies the activity in which the student participates. </xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="StudentActivityDescription" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>Description of Activity Info in the Previous Schools’ zone.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="NegotiatedCurriculumPlan" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
        <xs:annotation>
          <xs:documentation>Does the student have a negotiated curriculum plan?</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AdjustedEducationProgram" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
        <xs:annotation>
          <xs:documentation>Does the student have an adjusted education program?</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CareerGuidanceFileHeld" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
        <xs:annotation>
          <xs:documentation>Does the student have a career guidance file?</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolCounsellorFileHeld" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
        <xs:annotation>
          <xs:documentation>Is there a School counsellor/psychologist file held?</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="OtherLearningSupport" minOccurs="0" nillable="true" type="xs:string">
        <xs:annotation>
          <xs:documentation>Comments describing any other required learning support, eg ESL needs.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AcceleratedProgram" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
        <xs:annotation>
          <xs:documentation>Did the student participate in an accelerated learning program?</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="YoungCarersRole" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
        <xs:annotation>
          <xs:documentation>Is the student a carer of other family members?</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Literacy" minOccurs="0" nillable="true" type="sif:AUCodeSetsProgressLevelType">
        <xs:annotation>
          <xs:documentation>Progress in Literacy or English according to the National Standard.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Numeracy" minOccurs="0" nillable="true" type="sif:AUCodeSetsProgressLevelType">
        <xs:annotation>
          <xs:documentation>Progress in Numeracy or Maths according to the National Standard.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="OtherLearningAreasList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="OtherLearningArea" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Description" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>Description of Other Learning Area.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="Result" minOccurs="0" nillable="true" type="sif:AUCodeSetsProgressLevelType">
                    <xs:annotation>
                      <xs:documentation>Progress in other learning area according to the National Standard.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="LatestStudentReportAvailable" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
        <xs:annotation>
          <xs:documentation>Is the latest student report available?</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PastoralCare" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="DisciplinaryAbsences" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
              <xs:annotation>
                <xs:documentation>Have there been any school disciplinary absences (in or out of school) in the last 12 months</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="IndividualBehaviourPlan" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
              <xs:annotation>
                <xs:documentation>Is there an individual behaviour management plan</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_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 uniquely identifies this SDTN Object.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="StudentSDTN" type="sif:StudentSDTNType">
    <xs:key name="StudentSDTNKey1">
      <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.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SchoolInfoRefId" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>The ID (GUID) that identifies the school where the term is used.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <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="RelativeDuration" minOccurs="0" nillable="true">
        <xs:simpleType>
          <xs:restriction base="xs:decimal">
            <xs:annotation>
              <xs:documentation>Portion of the school year represented by this term, expressed in decimal form precise to 4 decimal places (e.g., 0.1333).</xs:documentation>
            </xs:annotation>
            <xs:minInclusive value="0" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:maxInclusive value="1" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:fractionDigits value="4" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="TermCode" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Locally-defined code.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Track" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The name, description, or code of the track that contains this term. This is used when there are multiple tracks within a school. For instance, kindergarten commonly has a different set of terms than other grades within the school.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TermSpan" minOccurs="0" nillable="true" type="sif:AUCodeSetsSessionTypeType">
        <xs:annotation>
          <xs:documentation>What sort of Session this TermSpan equates to.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="MarkingTerm" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
        <xs:annotation>
          <xs:documentation>Does this TermInfo represent a marking period?</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchedulingTerm" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
        <xs:annotation>
          <xs:documentation>Does this TermInfo represent a scheduling term?</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AttendanceTerm" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
        <xs:annotation>
          <xs:documentation>Does this TermInfo represent an attendance term?</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_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:complexType>

  <xs:element name="TermInfo" type="sif:TermInfoType">
    <xs:key name="TermInfoKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--StudentContactRelationship-->

  <xs:complexType name="StudentContactRelationshipType">
    <xs:annotation>
      <xs:documentation>
      This object defines a relationship between a contact person and a student.
    </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:Relationship" />
      <xs:element name="HouseholdList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Household" maxOccurs="unbounded" type="sif:LocalIdType">
              <xs:annotation>
                <xs:documentation>Repeatable element containing the ID of a household.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="ContactFlags" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="ParentLegalGuardian" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
              <xs:annotation>
                <xs:documentation>Does the individual have parental or legal guardianship responsibility for the student?</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="PickupRights" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
              <xs:annotation>
                <xs:documentation>This element tells whether or not the contact has pickup rights.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="LivesWith" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
              <xs:annotation>
                <xs:documentation>Does the student live with this contact?</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="AccessToRecords" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
              <xs:annotation>
                <xs:documentation>Does this contact have access to the student's records?</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="EmergencyContact" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
              <xs:annotation>
                <xs:documentation>Should this contact be notified in case of emergency?</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="HasCustody" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
              <xs:annotation>
                <xs:documentation>Does this contact have or share custody of the student?</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="DisciplinaryContact" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
              <xs:annotation>
                <xs:documentation>Is this person to be contacted in case of disciplinary action?</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="PrimaryCareProvider" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
              <xs:annotation>
                <xs:documentation>Does this person provide daily living or personal assistance to the student?</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="FeesBilling" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
              <xs:annotation>
                <xs:documentation>Is this the contact responsible for Payment of Fees?</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="FamilyMail" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
              <xs:annotation>
                <xs:documentation>Does this person receive family mail?</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="InterventionOrder" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
              <xs:annotation>
                <xs:documentation>Is there an Intervention Order against this Contact?</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="MainlySpeaksEnglishAtHome" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
        <xs:annotation>
          <xs:documentation>Is English the main language spoken at home?</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ContactSequence" minOccurs="0" nillable="true" type="xs:unsignedInt">
        <xs:annotation>
          <xs:documentation>Number indicating the order in which the person should be contacted.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ContactSequenceSource" minOccurs="0" nillable="true" type="sif:AUCodeSetsSourceCodeTypeType">
        <xs:annotation>
          <xs:documentation>Indicates the source 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_ExtendedElementsKey27">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:key>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="StudentPersonalRefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>GUID that identifies the student for the relationship.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="StudentContactPersonalRefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>GUID that identifies the contact person for the relationship.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="StudentContactRelationship" type="sif:StudentContactRelationshipType">
    <xs:key name="StudentContactRelationshipKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@StudentPersonalRefId" />
      <xs:field xpath="@StudentContactPersonalRefId" />
    </xs:key>
  </xs:element>


  <!--StudentActivityInfo-->

  <xs:complexType name="StudentActivityInfoType">
    <xs:annotation>
      <xs:documentation>Co-curricular or extra-curricular activities (e.g., student organizations, inter-school sports, athletics, publications, band, orchestra, and service activities) in which students may participate.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Title" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Name of the co-curricular or extra-curricular activity. </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Description" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The description of the co-curricular or extra-curricular activity. </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StudentActivityType">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Code" type="sif:AUCodeSetsActivityInvolvementCodeType">
              <xs:annotation>
                <xs:documentation>Code identifying the co-curricular or extra-curricular activity. </xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="StudentActivityLevel" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>A description of the separation of level in the activity (e.g.,House, Inter-school, Club, State, National).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="YearLevels" minOccurs="0" nillable="true" type="sif:YearLevelsType">
        <xs:annotation>
          <xs:documentation>Collection of grade levels applicable to this co-curricular or extra-curricular activity. </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CurricularStatus" minOccurs="0" nillable="true" type="sif:AUCodeSetsActivityTypeType">
        <xs:annotation>
          <xs:documentation>An indication of the degree to which an activity is related to a student's curriculum. </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Location" minOccurs="0" nillable="true" type="sif:LocationType">
        <xs:annotation>
          <xs:documentation>Location where the activity takes place.</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_ExtendedElementsKey28">
          <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 the instance of the object.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="StudentActivityInfo" type="sif:StudentActivityInfoType">
    <xs:key name="StudentActivityInfoKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--StudentActivityParticipation-->

  <xs:complexType name="StudentActivityParticipationType">
    <xs:annotation>
      <xs:documentation>
      This object provides information on a co-curricular or extra-curricular activity in which a student participates during a given school year.
    </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="StudentPersonalRefId" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>GUID that identifies the student participating in the activity. </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StudentActivityInfoRefId" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>GUID that identifies the activity in which the student participates.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolYear" minOccurs="0" nillable="true" 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., "2009").
      </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ParticipationComment" minOccurs="0" nillable="true" type="xs:string">
        <xs:annotation>
          <xs:documentation>Comment related to the student's participation in the activity. </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StartDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>This is the date which the activity participation is valid (inclusive). </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EndDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>This is the date through which the activity participation is valid (inclusive). If element is supported by the publisher/responder, should contain a date if the student withdraws from the activity before the end of the school year. </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Role" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Specific role the student plays in the activity (e.g., band leader, student body president). </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="RecognitionList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Recognition" maxOccurs="unbounded" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The nature of recognition given to the student for the successful completion of work in a co-curricular or extra-curricular activity.</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_ExtendedElementsKey29">
          <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 the instance of the object.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="StudentActivityParticipation" type="sif:StudentActivityParticipationType">
    <xs:key name="StudentActivityParticipationKey1">
      <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 StudentPersonal, StaffPersonal, or StudentContactPersonal 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="StudentPersonal" />
                    <xs:enumeration value="StaffPersonal" />
                    <xs:enumeration value="StudentContactPersonal" />
                  </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="AUAccessShibboleth" />
            <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:enumeration value="RSA" />
                        </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="AuthenticationSourceGlobalUID" minOccurs="0" nillable="true" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>The globally unique person identifier that links together separate Identity objects which reference the same Person.</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_ExtendedElementsKey30">
          <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>


  <!--SchoolPrograms-->

  <xs:complexType name="SchoolProgramsType">
    <xs:annotation>
      <xs:documentation>
      This object contains information about Programs offered by a school.
    </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SchoolInfoRefId" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>GUID that identifies the school offering this program.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolYear" minOccurs="0" nillable="true" 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., "2009").
    </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolProgramList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Program" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Category" minOccurs="0" nillable="true" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>Program Category</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="Type" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>Program Type</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
                </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_ExtendedElementsKey31">
          <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>GUID that uniquely identifies this instance of the object.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="SchoolPrograms" type="sif:SchoolProgramsType">
    <xs:key name="SchoolProgramsKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--ReportManifest-->

  <xs:complexType name="ReportManifestType">
    <xs:annotation>
      <xs:documentation>
        This object provides a way to define a report within a SIF zone. It contains metadata about the report. This object
        represents a mutual agreement between senders and receivers of the report.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SIF_Version" type="sif:VersionWithWildcardsType">
        <xs:annotation>
          <xs:documentation>
        Specifies which SIF Implementation Specification version should be used when returning the report data; wildcards are allowed.  When a wildcard is specified,
        the responding agent SHOULD attempt to return the report data in the version specified by SIF_Message/@Version,
        if that version matches the wildcard version.  If not, the responding agent can return the data in any version it chooses that matches the wildcard version.
      </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 to the report authority.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ReceivingAuthority" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:annotation>
            <xs:documentation>The GUID of the authority for whom the report is intended, usually the same authority that defines this manifest.</xs:documentation>
          </xs:annotation>
          <xs:simpleContent>
            <xs:extension base="sif:IdRefType">
              <xs:attribute name="SIF_RefObject" use="required">
                <xs:annotation>
                  <xs:documentation>The name of the object referenced.</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="ReportAuthorityInfo" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="ReportName" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The authority's accepted name for the report.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Description" minOccurs="0" nillable="true" type="xs:string">
        <xs:annotation>
          <xs:documentation>The description for the report.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ReportingPeriod" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="BeginReportDate" minOccurs="0" nillable="true" type="xs:date">
              <xs:annotation>
                <xs:documentation>The first date for which the report contains information.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="EndReportDate" minOccurs="0" nillable="true" type="xs:date">
              <xs:annotation>
                <xs:documentation>The last date for which the report contains information. May be the same as BeginReportDate for snapshot-type reports.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="BeginSubmitDate" minOccurs="0" nillable="true" type="xs:date">
              <xs:annotation>
                <xs:documentation>The first date on which the report may be submitted to the authority.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="EndSubmitDate" minOccurs="0" nillable="true" type="xs:date">
              <xs:annotation>
                <xs:documentation>The last date on which the report may be submitted to the authority.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="DueDate" minOccurs="0" nillable="true" type="xs:date">
              <xs:annotation>
                <xs:documentation>The official due date of the report.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="ReportDefinitionSource">
        <xs:annotation>
          <xs:documentation>
        Indicates where the report definition can be found.
        If Type is Embedded or Base64Binary, this element's value contains the report definition.  If Type is
        URL, this element's value is the location of the external definition.  A Type value of SIF_Query
        indicates that the SIF_QueryGroup element contains the definition.
      </xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:string">
              <xs:attribute name="Type" use="required">
                <xs:annotation>
                  <xs:documentation>This attribute indicates the source of the report definition.</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="URL" />
                    <xs:enumeration value="Embedded" />
                    <xs:enumeration value="Base64Binary" />
                    <xs:enumeration value="SIF_Query" />
                    <xs:enumeration value="SIF_ExtendedQuery" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
              <xs:attribute name="QueryLanguage" use="required" type="xs:token">
                <xs:annotation>
                  <xs:documentation>
        The vendor-defined query language used in the report definition (e.g. SQL, ExampleObject,
        Description, com.vendor.format, etc.).  If the Type attribute is SIF_Query, then QueryLanguage should also be SIF_Query.
        If the Type attribute is SIF_ExtendedQuery, then QueryLanguage should also be SIF_ExtendedQuery.
      </xs:documentation>
                </xs:annotation>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="ReportFormatList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="ReportFormat" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation>A third-party format that describes the visual representation of the report data.</xs:documentation>
              </xs:annotation>
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:string">
                    <xs:attribute name="Type" use="required">
                      <xs:annotation>
                        <xs:documentation>This attribute indicates the encoding of the format reference.</xs:documentation>
                      </xs:annotation>
                      <xs:simpleType>
                        <xs:restriction base="xs:token">
                          <xs:enumeration value="URL" />
                          <xs:enumeration value="Embedded" />
                          <xs:enumeration value="Base64Binary" />
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:attribute>
                    <xs:attribute name="ContentType" use="required" type="xs:normalizedString">
                      <xs:annotation>
                        <xs:documentation>
        The vendor-defined content type (e.g. com.vendor.format, PDF, etc.
      </xs:documentation>
                      </xs:annotation>
                    </xs:attribute>
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_QueryGroup" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="sif:SIF_Query" maxOccurs="unbounded" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_ExtendedQuery" minOccurs="0" nillable="true" type="sif:SIF_ExtendedQueryType">
        <xs:annotation>
          <xs:documentation>
          Query criteria for extracting the report information if ReportDefinitionSource/@Type
          is SIF_ExtendedQuery.
        </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_ExtendedElementsKey32">
          <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 unique identifier for this report manifest.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="ReportAuthorityInfoRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>ID (GUID) of the authority providing this manifest.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="ReportManifest" type="sif:ReportManifestType">
    <xs:key name="ReportManifestKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--ReportAuthorityInfo-->

  <xs:complexType name="ReportAuthorityInfoType">
    <xs:annotation>
      <xs:documentation>
        This object contains information on authorities that provide ReportManifest objects and/or collect SIF_ReportObject
        objects, such as state departments of education, regional service agencies, or other report collecting agencies.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="AuthorityName" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Name of the agency/report authority.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AuthorityId" type="xs:token">
        <xs:annotation>
          <xs:documentation>The zone unique case-sensitive identifier for the authority. This will be the contents of the SIF_SourceId element in the header of requests for reports.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AuthorityDepartment" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Department, office, or subdivision of the agency/report authority.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AuthorityLevel">
        <xs:annotation>
          <xs:documentation>Level of the authority.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Federal" />
            <xs:enumeration value="State" />
            <xs:enumeration value="LEA" />
            <xs:enumeration value="School" />
            <xs:enumeration value="Other" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="ContactInfo" minOccurs="0" nillable="true" type="sif:ContactInfoType">
        <xs:annotation>
          <xs:documentation>Information on the contact person in this agency.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Address" minOccurs="0" nillable="true" type="sif:AddressType" />
      <xs:element name="PhoneNumber" minOccurs="0" nillable="true" type="sif:PhoneNumberType" />
      <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_ExtendedElementsKey33">
          <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 unique identifier for this agency/report authority.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="ReportAuthorityInfo" type="sif:ReportAuthorityInfoType">
    <xs:key name="ReportAuthorityInfoKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>


  <!--SIF_ReportObject-->

  <xs:complexType name="SIF_ReportObjectType">
    <xs:annotation>
      <xs:documentation>
        This object is an envelope used to send other data objects, typically reports, to authorities such as state departments
        of education, district offices, other schools, etc. It is also used to signal a data collector agent that a report is
        compiled and ready to be requested. SIF_ReportObject contains a data object, which is either complete or partial (a
        partial data object is one that contains a subset of the elements for the data object). One or a series of
        SIF_ReportObjects contained within one or a series of related SIF_Response messages makes up a complete report.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="ReportInfo" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="CalculationDate" type="xs:date">
              <xs:annotation>
                <xs:documentation>The date on which the report was calculated.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="SubmissionNumber" type="xs:positiveInteger">
              <xs:annotation>
                <xs:documentation>A number that identifies the submission; beginning at 1 and incremented each time a submission is done for a particular report; used to indicate resubmission(s).</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="SubmissionReason">
              <xs:annotation>
                <xs:documentation>Reason for the report submission.</xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="Initial" />
                  <xs:enumeration value="Correction" />
                  <xs:enumeration value="Revision" />
                  <xs:enumeration value="Addition" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
            <xs:element name="ReportSubmitterInfo" minOccurs="0" nillable="true">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_RefId" minOccurs="0" nillable="true">
                    <xs:complexType>
                      <xs:annotation>
                        <xs:documentation>If the submitter is described by another SIF data object such as a SchoolInfo or LEAInfo instance, this element references that object by RefId.</xs:documentation>
                      </xs:annotation>
                      <xs:simpleContent>
                        <xs:extension base="sif:IdRefType">
                          <xs:attribute name="SIF_RefObject" use="required">
                            <xs:annotation>
                              <xs:documentation>The name of a SIF data object. When used in the context of ReportSubmitterInfo, this attribute must have one of the following values.</xs:documentation>
                            </xs:annotation>
                            <xs:simpleType>
                              <xs:restriction base="xs:token">
                                <xs:enumeration value="LEAInfo">
                                  <xs:annotation>
                                    <xs:documentation>The submitter of the SIF_ReportObject is the district or other agency referenced by a LEAInfo object</xs:documentation>
                                  </xs:annotation>
                                </xs:enumeration>
                                <xs:enumeration value="SchoolInfo">
                                  <xs:annotation>
                                    <xs:documentation>The submitter of the SIF_ReportObject is the school referenced by a SchoolInfo object</xs:documentation>
                                  </xs:annotation>
                                </xs:enumeration>
                              </xs:restriction>
                            </xs:simpleType>
                          </xs:attribute>
                        </xs:extension>
                      </xs:simpleContent>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="SubmitterName" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>Name of the report submitter.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="SubmitterDepartment" minOccurs="0" nillable="true" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>Department, office, or subdivision of the agency submitting the report.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="ContactInfo" minOccurs="0" nillable="true" type="sif:ContactInfoType">
                    <xs:annotation>
                      <xs:documentation>Information on the contact person in this agency submitting the report.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="Address" minOccurs="0" nillable="true" type="sif:AddressType" />
                  <xs:element name="PhoneNumber" minOccurs="0" nillable="true" type="sif:PhoneNumberType" />
                  <xs:element name="SubmitterNotes" minOccurs="0" nillable="true" type="xs:string">
                    <xs:annotation>
                      <xs:documentation>Optional notes for the report authority, such as information about a district's reporting policies and procedures, instructions for contacting the district for technical support, etc.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
            <xs:element name="Description" minOccurs="0" nillable="true" type="xs:string" />
          </xs:sequence>
          <xs:attribute name="ReportManifestRefId" use="required" type="sif:IdRefType">
            <xs:annotation>
              <xs:documentation>The report manifest corresponding to this report.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:complexType>
      </xs:element>
      <xs:element name="ReportData" minOccurs="0" nillable="true" type="sif:ReportDataObjectType">
        <xs:annotation>
          <xs:documentation>
          Container element for the report content; one valid SIF object can occur as a child here. This element is conditional.
          This element or ReportInfo or SIF_ExtendedQueryResults is included but never at the same time.
          See examples of the usage of the object below.
        </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_ExtendedQueryResults" minOccurs="0" nillable="true" type="sif:SIF_ExtendedQueryResultsType">
        <xs:annotation>
          <xs:documentation>
          The report content resulting from a SIF_ExtendedQuery-based report.  This element is conditional.
          This element or ReportInfo or ReportData is included but never at the same 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_ExtendedElementsKey34">
          <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 instance of a report.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="SIF_ReportObject" type="sif:SIF_ReportObjectType">
    <xs:key name="SIF_ReportObjectKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:key>
  </xs:element>

  <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="AUCodeSetsAttendanceCodeType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="0">
        <xs:annotation>
          <xs:documentation>Not Marked</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="100">
        <xs:annotation>
          <xs:documentation>Present</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="101">
        <xs:annotation>
          <xs:documentation>Absent - General</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="111">
        <xs:annotation>
          <xs:documentation>Late arrival at School</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="112">
        <xs:annotation>
          <xs:documentation>Early departure from School</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="113">
        <xs:annotation>
          <xs:documentation>Late arrival unexplained</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="114">
        <xs:annotation>
          <xs:documentation>Early departure unexplained</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="116">
        <xs:annotation>
          <xs:documentation>Late arrival to Class</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="117">
        <xs:annotation>
          <xs:documentation>Early leaver from Class</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="118">
        <xs:annotation>
          <xs:documentation>Late Class Unexplained </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="119">
        <xs:annotation>
          <xs:documentation>Early Class Unexplained</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="200">
        <xs:annotation>
          <xs:documentation>Medical</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="201">
        <xs:annotation>
          <xs:documentation>Illness</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="202">
        <xs:annotation>
          <xs:documentation>Accident</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="203">
        <xs:annotation>
          <xs:documentation>Counselling</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="204">
        <xs:annotation>
          <xs:documentation>Sick Bay</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="205">
        <xs:annotation>
          <xs:documentation>Medical Appointment</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="206">
        <xs:annotation>
          <xs:documentation>Hospitalised</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="207">
        <xs:annotation>
          <xs:documentation>Quarantine</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="208">
        <xs:annotation>
          <xs:documentation>Refusal</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="209">
        <xs:annotation>
          <xs:documentation>Dentist </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="210">
        <xs:annotation>
          <xs:documentation>Medical/Welfare</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="211">
        <xs:annotation>
          <xs:documentation>Bereavement</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="300">
        <xs:annotation>
          <xs:documentation>Truancy</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="400">
        <xs:annotation>
          <xs:documentation>Suspension</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="401">
        <xs:annotation>
          <xs:documentation>Suspension - External</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="500">
        <xs:annotation>
          <xs:documentation>Unexplained</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="600">
        <xs:annotation>
          <xs:documentation>Educational</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="601">
        <xs:annotation>
          <xs:documentation>Group Activity</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="602">
        <xs:annotation>
          <xs:documentation>Community Service</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="603">
        <xs:annotation>
          <xs:documentation>Duty Student</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="604">
        <xs:annotation>
          <xs:documentation>Excursion</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="605">
        <xs:annotation>
          <xs:documentation>Special Event</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="606">
        <xs:annotation>
          <xs:documentation>Camp</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="607">
        <xs:annotation>
          <xs:documentation>Other Educational Activity</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="608">
        <xs:annotation>
          <xs:documentation>Off-Site Learning Program (eg. TAFE)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="609">
        <xs:annotation>
          <xs:documentation>Work Experience</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="610">
        <xs:annotation>
          <xs:documentation>School Production</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="611">
        <xs:annotation>
          <xs:documentation>Sports</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="612">
        <xs:annotation>
          <xs:documentation>Study Leave</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="700">
        <xs:annotation>
          <xs:documentation>Flags</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="701">
        <xs:annotation>
          <xs:documentation>Exit</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="702">
        <xs:annotation>
          <xs:documentation>Transferred</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="800">
        <xs:annotation>
          <xs:documentation>Parent Choice</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="801">
        <xs:annotation>
          <xs:documentation>Parental Arrangement</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="802">
        <xs:annotation>
          <xs:documentation>Exempt</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="803">
        <xs:annotation>
          <xs:documentation>Parental Acknowledgement</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="804">
        <xs:annotation>
          <xs:documentation>Extended Family Holidays</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="805">
        <xs:annotation>
          <xs:documentation>Religious/Cultural Observance</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="900">
        <xs:annotation>
          <xs:documentation>School Choice</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="901">
        <xs:annotation>
          <xs:documentation>Industrial Action</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="902">
        <xs:annotation>
          <xs:documentation>Facility Damage</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="903">
        <xs:annotation>
          <xs:documentation>Weather</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="904">
        <xs:annotation>
          <xs:documentation>Staff Meeting</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="999">
        <xs:annotation>
          <xs:documentation>Other</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="AUCodeSetsAustralianStandardClassificationOfCulturalAndEthnicGroupsASCCEGType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="0000">
        <xs:annotation>
          <xs:documentation>Inadequately described</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="0001">
        <xs:annotation>
          <xs:documentation>Not stated</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="0901">
        <xs:annotation>
          <xs:documentation>Eurasian, so described</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="0902">
        <xs:annotation>
          <xs:documentation>Asian, so described</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="0903">
        <xs:annotation>
          <xs:documentation>African, so described</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="0904">
        <xs:annotation>
          <xs:documentation>European, so described</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="0905">
        <xs:annotation>
          <xs:documentation>Caucasian, so described</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="0906">
        <xs:annotation>
          <xs:documentation>Creole, so described</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1000">
        <xs:annotation>
          <xs:documentation>Oceanian, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1100">
        <xs:annotation>
          <xs:documentation>Australian Peoples, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1101">
        <xs:annotation>
          <xs:documentation>Australian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1102">
        <xs:annotation>
          <xs:documentation>Australian Aboriginal</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1103">
        <xs:annotation>
          <xs:documentation>Australian South Sea Islander</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1104">
        <xs:annotation>
          <xs:documentation>Torres Strait Islander</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1200">
        <xs:annotation>
          <xs:documentation>New Zealand Peoples, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1201">
        <xs:annotation>
          <xs:documentation>Maori</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1202">
        <xs:annotation>
          <xs:documentation>New Zealander</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1300">
        <xs:annotation>
          <xs:documentation>Melanesian and Papuan, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1301">
        <xs:annotation>
          <xs:documentation>New Caledonian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1302">
        <xs:annotation>
          <xs:documentation>Ni-Vanuatu</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1303">
        <xs:annotation>
          <xs:documentation>Papua New Guinean </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1304">
        <xs:annotation>
          <xs:documentation>Solomon Islander</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1399">
        <xs:annotation>
          <xs:documentation>Melanesian and Papuan, n.e.c. (includes Bisorio, Bougainvillian, Huli)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1400">
        <xs:annotation>
          <xs:documentation>Micronesian, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1401">
        <xs:annotation>
          <xs:documentation>I-Kiribati </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1402">
        <xs:annotation>
          <xs:documentation>Nauruan </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1499">
        <xs:annotation>
          <xs:documentation>Micronesian, n.e.c. (includes Marianas Islander, Marshallese, Palauan)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1500">
        <xs:annotation>
          <xs:documentation>Polynesian, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1501">
        <xs:annotation>
          <xs:documentation>Cook Islander</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1502">
        <xs:annotation>
          <xs:documentation>Fijian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1503">
        <xs:annotation>
          <xs:documentation>Niuean</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1504">
        <xs:annotation>
          <xs:documentation>Samoan</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1505">
        <xs:annotation>
          <xs:documentation>Tongan</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1506">
        <xs:annotation>
          <xs:documentation>Hawaiian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1507">
        <xs:annotation>
          <xs:documentation>Tahitian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1508">
        <xs:annotation>
          <xs:documentation>Tokelauan</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1511">
        <xs:annotation>
          <xs:documentation>Tuvaluan</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1599">
        <xs:annotation>
          <xs:documentation>Polynesian, n.e.c. (includes French Polynesian, Pitcairn Islander, Wallisian)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2000">
        <xs:annotation>
          <xs:documentation>North-West European, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2100">
        <xs:annotation>
          <xs:documentation>British, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2101">
        <xs:annotation>
          <xs:documentation>English</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2102">
        <xs:annotation>
          <xs:documentation>Scottish</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2103">
        <xs:annotation>
          <xs:documentation>Welsh</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2104">
        <xs:annotation>
          <xs:documentation>Channel Islander</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2105">
        <xs:annotation>
          <xs:documentation>Manx </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2199">
        <xs:annotation>
          <xs:documentation>British, n.e.c. (includes Falkland Islander)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2201">
        <xs:annotation>
          <xs:documentation>Irish</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2300">
        <xs:annotation>
          <xs:documentation>Western European, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2301">
        <xs:annotation>
          <xs:documentation>Austrian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2303">
        <xs:annotation>
          <xs:documentation>Dutch</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2304">
        <xs:annotation>
          <xs:documentation>Flemish</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2305">
        <xs:annotation>
          <xs:documentation>French</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2306">
        <xs:annotation>
          <xs:documentation>German</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2307">
        <xs:annotation>
          <xs:documentation>Swiss</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2311">
        <xs:annotation>
          <xs:documentation>Belgian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2312">
        <xs:annotation>
          <xs:documentation>Frisian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2313">
        <xs:annotation>
          <xs:documentation>Luxembourg</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2399">
        <xs:annotation>
          <xs:documentation>Western European, n.e.c. (includes Alsatian, Breton, Walloon)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2400">
        <xs:annotation>
          <xs:documentation>Northern European, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2401">
        <xs:annotation>
          <xs:documentation>Danish</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2402">
        <xs:annotation>
          <xs:documentation>Finnish</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2403">
        <xs:annotation>
          <xs:documentation>Icelandic</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2404">
        <xs:annotation>
          <xs:documentation>Norwegian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2405">
        <xs:annotation>
          <xs:documentation>Swedish</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2499">
        <xs:annotation>
          <xs:documentation>Northern European, n.e.c. (includes Faeroese, Greenlandic, Saami)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3000">
        <xs:annotation>
          <xs:documentation>Southern and Eastern European, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3100">
        <xs:annotation>
          <xs:documentation>Southern European, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3101">
        <xs:annotation>
          <xs:documentation>Basque</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3102">
        <xs:annotation>
          <xs:documentation>Catalan</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3103">
        <xs:annotation>
          <xs:documentation>Italian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3104">
        <xs:annotation>
          <xs:documentation>Maltese</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3105">
        <xs:annotation>
          <xs:documentation>Portuguese</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3106">
        <xs:annotation>
          <xs:documentation>Spanish</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3107">
        <xs:annotation>
          <xs:documentation>Gibraltarian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3199">
        <xs:annotation>
          <xs:documentation>Southern European, n.e.c. (includes Andorran, Galician, Ladin)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3200">
        <xs:annotation>
          <xs:documentation>South Eastern European, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3201">
        <xs:annotation>
          <xs:documentation>Albanian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3202">
        <xs:annotation>
          <xs:documentation>Bosnian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3203">
        <xs:annotation>
          <xs:documentation>Bulgarian </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3204">
        <xs:annotation>
          <xs:documentation>Croatian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3205">
        <xs:annotation>
          <xs:documentation>Greek</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3206">
        <xs:annotation>
          <xs:documentation>Macedonian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3207">
        <xs:annotation>
          <xs:documentation>Moldovan</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3208">
        <xs:annotation>
          <xs:documentation>Montenegrin</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3211">
        <xs:annotation>
          <xs:documentation>Romanian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3212">
        <xs:annotation>
          <xs:documentation>Roma/Gypsy</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3213">
        <xs:annotation>
          <xs:documentation>Serbian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3214">
        <xs:annotation>
          <xs:documentation>Slovene</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3215">
        <xs:annotation>
          <xs:documentation>Cypriot</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3216">
        <xs:annotation>
          <xs:documentation>Vlach</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3299">
        <xs:annotation>
          <xs:documentation>South Eastern European, n.e.c. (includes Aromani, Karakachani)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3300">
        <xs:annotation>
          <xs:documentation>Eastern European, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3301">
        <xs:annotation>
          <xs:documentation>Belarusan</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3302">
        <xs:annotation>
          <xs:documentation>Czech</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3303">
        <xs:annotation>
          <xs:documentation>Estonian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3304">
        <xs:annotation>
          <xs:documentation>Hungarian </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3305">
        <xs:annotation>
          <xs:documentation>Latvian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3306">
        <xs:annotation>
          <xs:documentation>Lithuanian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3307">
        <xs:annotation>
          <xs:documentation>Polish</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3308">
        <xs:annotation>
          <xs:documentation>Russian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3311">
        <xs:annotation>
          <xs:documentation>Slovak</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3312">
        <xs:annotation>
          <xs:documentation>Ukrainian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3313">
        <xs:annotation>
          <xs:documentation>Sorb/Wend</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3399">
        <xs:annotation>
          <xs:documentation>Eastern European, n.e.c. (includes Adygei, Khanty, Nenets) </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4000">
        <xs:annotation>
          <xs:documentation>North African and Middle Eastern, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4100">
        <xs:annotation>
          <xs:documentation>Arab, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4101">
        <xs:annotation>
          <xs:documentation>Algerian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4102">
        <xs:annotation>
          <xs:documentation>Egyptian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4103">
        <xs:annotation>
          <xs:documentation>Iraqi</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4104">
        <xs:annotation>
          <xs:documentation>Jordanian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4105">
        <xs:annotation>
          <xs:documentation>Kuwaiti</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4106">
        <xs:annotation>
          <xs:documentation>Lebanese</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4107">
        <xs:annotation>
          <xs:documentation>Libyan</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4108">
        <xs:annotation>
          <xs:documentation>Moroccan</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4111">
        <xs:annotation>
          <xs:documentation>Palestinian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4112">
        <xs:annotation>
          <xs:documentation>Saudi Arabian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4113">
        <xs:annotation>
          <xs:documentation>Syrian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4114">
        <xs:annotation>
          <xs:documentation>Tunisian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4115">
        <xs:annotation>
          <xs:documentation>Yemeni</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4199">
        <xs:annotation>
          <xs:documentation>Arab, n.e.c. (includes Baggara, Bedouin, Omani)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4201">
        <xs:annotation>
          <xs:documentation>Jewish</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4900">
        <xs:annotation>
          <xs:documentation>Other North African and Middle Eastern, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4901">
        <xs:annotation>
          <xs:documentation>Assyrian/Chaldean</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4902">
        <xs:annotation>
          <xs:documentation>Berber</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4903">
        <xs:annotation>
          <xs:documentation>Coptic</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4904">
        <xs:annotation>
          <xs:documentation>Iranian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4905">
        <xs:annotation>
          <xs:documentation>Kurdish</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4906">
        <xs:annotation>
          <xs:documentation>Sudanese</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4907">
        <xs:annotation>
          <xs:documentation>Turkish</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="4999">
        <xs:annotation>
          <xs:documentation>Other North African and Middle Eastern, n.e.c. (includes Azande, Madi, Nubian)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5000">
        <xs:annotation>
          <xs:documentation>South-East Asian, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5100">
        <xs:annotation>
          <xs:documentation>Mainland South-East Asian, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5101">
        <xs:annotation>
          <xs:documentation>Anglo-Burmese</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5102">
        <xs:annotation>
          <xs:documentation>Burmese</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5103">
        <xs:annotation>
          <xs:documentation>Hmong</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5104">
        <xs:annotation>
          <xs:documentation>Khmer</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5105">
        <xs:annotation>
          <xs:documentation>Lao</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5106">
        <xs:annotation>
          <xs:documentation>Thai</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5107">
        <xs:annotation>
          <xs:documentation>Vietnamese</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5108">
        <xs:annotation>
          <xs:documentation>Karen</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5111">
        <xs:annotation>
          <xs:documentation>Mon</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5199">
        <xs:annotation>
          <xs:documentation>Mainland South-East Asian, n.e.c. (includes Arakanese, Chin, Shan)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5200">
        <xs:annotation>
          <xs:documentation>Maritime South-East Asian, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5201">
        <xs:annotation>
          <xs:documentation>Filipino</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5202">
        <xs:annotation>
          <xs:documentation>Indonesian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5203">
        <xs:annotation>
          <xs:documentation>Javanese</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5204">
        <xs:annotation>
          <xs:documentation>Madurese</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5205">
        <xs:annotation>
          <xs:documentation>Malay</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5206">
        <xs:annotation>
          <xs:documentation>Sundanese</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5207">
        <xs:annotation>
          <xs:documentation>Timorese</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5208">
        <xs:annotation>
          <xs:documentation>Acehnese</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5211">
        <xs:annotation>
          <xs:documentation>Balinese</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5212">
        <xs:annotation>
          <xs:documentation>Bruneian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5213">
        <xs:annotation>
          <xs:documentation>Kadazan</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5214">
        <xs:annotation>
          <xs:documentation>Singaporean</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5215">
        <xs:annotation>
          <xs:documentation>Temoq</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="5299">
        <xs:annotation>
          <xs:documentation>Maritime South-East Asian, n.e.c. (includes Iban, Irian Jayan, Sumatran)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="6000">
        <xs:annotation>
          <xs:documentation>North-East Asian, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="6100">
        <xs:annotation>
          <xs:documentation>Chinese Asian, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="6101">
        <xs:annotation>
          <xs:documentation>Chinese</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="6102">
        <xs:annotation>
          <xs:documentation>Taiwanese</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="6199">
        <xs:annotation>
          <xs:documentation>Chinese Asian, n.e.c. (includes Hui, Manchu, Yi)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="6900">
        <xs:annotation>
          <xs:documentation>Other North-East Asian, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="6901">
        <xs:annotation>
          <xs:documentation>Japanese</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="6902">
        <xs:annotation>
          <xs:documentation>Korean</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="6903">
        <xs:annotation>
          <xs:documentation>Mongolian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="6904">
        <xs:annotation>
          <xs:documentation>Tibetan </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="6999">
        <xs:annotation>
          <xs:documentation>Other North-East Asian, n.e.c. (includes Ainu, Menba, Xiareba)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7000">
        <xs:annotation>
          <xs:documentation>Southern and Central Asian, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7100">
        <xs:annotation>
          <xs:documentation>Southern Asian, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7101">
        <xs:annotation>
          <xs:documentation>Anglo-Indian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7102">
        <xs:annotation>
          <xs:documentation>Bengali</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7103">
        <xs:annotation>
          <xs:documentation>Burgher</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7104">
        <xs:annotation>
          <xs:documentation>Gujarati</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7106">
        <xs:annotation>
          <xs:documentation>Indian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7107">
        <xs:annotation>
          <xs:documentation>Malayali</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7111">
        <xs:annotation>
          <xs:documentation>Nepalese</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7112">
        <xs:annotation>
          <xs:documentation>Pakistani </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7113">
        <xs:annotation>
          <xs:documentation>Punjabi</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7114">
        <xs:annotation>
          <xs:documentation>Sikh</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7115">
        <xs:annotation>
          <xs:documentation>Sinhalese</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7116">
        <xs:annotation>
          <xs:documentation>Tamil</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7117">
        <xs:annotation>
          <xs:documentation>Maldivian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7199">
        <xs:annotation>
          <xs:documentation>Southern Asian, n.e.c. (includes Gurkha, Kashmiri, Marathi)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7200">
        <xs:annotation>
          <xs:documentation>Central Asian, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7201">
        <xs:annotation>
          <xs:documentation>Afghan</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7202">
        <xs:annotation>
          <xs:documentation>Armenian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7203">
        <xs:annotation>
          <xs:documentation>Georgian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7204">
        <xs:annotation>
          <xs:documentation>Kazakh</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7205">
        <xs:annotation>
          <xs:documentation>Pathan</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7206">
        <xs:annotation>
          <xs:documentation>Uzbek</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7207">
        <xs:annotation>
          <xs:documentation>Azeri</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7208">
        <xs:annotation>
          <xs:documentation>Hazara</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7211">
        <xs:annotation>
          <xs:documentation>Tajik</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7212">
        <xs:annotation>
          <xs:documentation>Tatar</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7213">
        <xs:annotation>
          <xs:documentation>Turkmen</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7214">
        <xs:annotation>
          <xs:documentation>Uighur </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="7299">
        <xs:annotation>
          <xs:documentation>Central Asian, n.e.c. (includes Chechen, Circassian, Ingush)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8000">
        <xs:annotation>
          <xs:documentation>People of the Americas, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8100">
        <xs:annotation>
          <xs:documentation>North American, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8101">
        <xs:annotation>
          <xs:documentation>African American</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8102">
        <xs:annotation>
          <xs:documentation>American</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8103">
        <xs:annotation>
          <xs:documentation>Canadian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8104">
        <xs:annotation>
          <xs:documentation>French Canadian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8105">
        <xs:annotation>
          <xs:documentation>Hispanic (North American)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8106">
        <xs:annotation>
          <xs:documentation>Native North American Indian </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8107">
        <xs:annotation>
          <xs:documentation>Bermudan</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8199">
        <xs:annotation>
          <xs:documentation>North American, n.e.c. (includes Aleut, Inuit, Metis)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8200">
        <xs:annotation>
          <xs:documentation>South American, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8201">
        <xs:annotation>
          <xs:documentation>Argentinian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8202">
        <xs:annotation>
          <xs:documentation>Bolivian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8203">
        <xs:annotation>
          <xs:documentation>Brazilian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8204">
        <xs:annotation>
          <xs:documentation>Chilean</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8205">
        <xs:annotation>
          <xs:documentation>Colombian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8206">
        <xs:annotation>
          <xs:documentation>Ecuadorian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8207">
        <xs:annotation>
          <xs:documentation>Guyanese</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8208">
        <xs:annotation>
          <xs:documentation>Peruvian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8211">
        <xs:annotation>
          <xs:documentation>Uruguayan</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8212">
        <xs:annotation>
          <xs:documentation>Venezuelan</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8213">
        <xs:annotation>
          <xs:documentation>Paraguayan</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8299">
        <xs:annotation>
          <xs:documentation>South American, n.e.c. (includes Arawak, Carib, Surinamese)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8300">
        <xs:annotation>
          <xs:documentation>Central American, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8301">
        <xs:annotation>
          <xs:documentation>Mexican</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8302">
        <xs:annotation>
          <xs:documentation>Nicaraguan</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8303">
        <xs:annotation>
          <xs:documentation>Salvadoran</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8304">
        <xs:annotation>
          <xs:documentation>Costa Rican</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8305">
        <xs:annotation>
          <xs:documentation>Guatemalan</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8306">
        <xs:annotation>
          <xs:documentation>Mayan</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8399">
        <xs:annotation>
          <xs:documentation>Central American, n.e.c. (includes Belizean, Honduran, Panamanian)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8400">
        <xs:annotation>
          <xs:documentation>Caribbean Islander, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8401">
        <xs:annotation>
          <xs:documentation>Cuban</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8402">
        <xs:annotation>
          <xs:documentation>Jamaican</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8403">
        <xs:annotation>
          <xs:documentation>Trinidadian (Tobagonian)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8404">
        <xs:annotation>
          <xs:documentation>Barbadian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8405">
        <xs:annotation>
          <xs:documentation>Puerto Rican</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="8499">
        <xs:annotation>
          <xs:documentation>Caribbean Islander, n.e.c. (includes Bahamian, Grenadian, Haitian)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9000">
        <xs:annotation>
          <xs:documentation>Sub-Saharan African, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9100">
        <xs:annotation>
          <xs:documentation>Central and West African, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9101">
        <xs:annotation>
          <xs:documentation>Akan</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9103">
        <xs:annotation>
          <xs:documentation>Ghanaian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9104">
        <xs:annotation>
          <xs:documentation>Nigerian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9105">
        <xs:annotation>
          <xs:documentation>Yoruba</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9106">
        <xs:annotation>
          <xs:documentation>Ivorean</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9107">
        <xs:annotation>
          <xs:documentation>Liberian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9108">
        <xs:annotation>
          <xs:documentation>Sierra Leonean</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9199">
        <xs:annotation>
          <xs:documentation>Central and West African, n.e.c. (includes Fang, Fulani, Kongo)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9200">
        <xs:annotation>
          <xs:documentation>Southern and East African, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9201">
        <xs:annotation>
          <xs:documentation>Afrikaner </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9202">
        <xs:annotation>
          <xs:documentation>Angolan</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9203">
        <xs:annotation>
          <xs:documentation>Eritrean</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9204">
        <xs:annotation>
          <xs:documentation>Ethiopian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9205">
        <xs:annotation>
          <xs:documentation>Kenyan</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9206">
        <xs:annotation>
          <xs:documentation>Malawian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9207">
        <xs:annotation>
          <xs:documentation>Mauritian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9208">
        <xs:annotation>
          <xs:documentation>Mozambican</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9212">
        <xs:annotation>
          <xs:documentation>Oromo</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9213">
        <xs:annotation>
          <xs:documentation>Seychellois</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9214">
        <xs:annotation>
          <xs:documentation>Somali</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9215">
        <xs:annotation>
          <xs:documentation>South African</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9216">
        <xs:annotation>
          <xs:documentation>Tanzanian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9217">
        <xs:annotation>
          <xs:documentation>Ugandan</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9218">
        <xs:annotation>
          <xs:documentation>Zambian</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9221">
        <xs:annotation>
          <xs:documentation>Zimbabwean</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9222">
        <xs:annotation>
          <xs:documentation>Amhara</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9223">
        <xs:annotation>
          <xs:documentation>Batswana</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9224">
        <xs:annotation>
          <xs:documentation>Dinka</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9225">
        <xs:annotation>
          <xs:documentation>Hutu</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9226">
        <xs:annotation>
          <xs:documentation>Masai</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9227">
        <xs:annotation>
          <xs:documentation>Nuer</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9228">
        <xs:annotation>
          <xs:documentation>Tigrayan</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9231">
        <xs:annotation>
          <xs:documentation>Tigre</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9232">
        <xs:annotation>
          <xs:documentation>Zulu</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="9299">
        <xs:annotation>
          <xs:documentation>Southern and East African, n.e.c. (includes Afar, Namibian, Tutsi)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="AUCodeSetsActivityInvolvementCodeType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="1010">
        <xs:annotation>
          <xs:documentation>Exercise, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1011">
        <xs:annotation>
          <xs:documentation>Exercise biking</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1012">
        <xs:annotation>
          <xs:documentation>Fitness centre activities</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1013">
        <xs:annotation>
          <xs:documentation>Gymnasium workouts</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1014">
        <xs:annotation>
          <xs:documentation>Aerobics/exercising (other)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1015">
        <xs:annotation>
          <xs:documentation>Circuits</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1020">
        <xs:annotation>
          <xs:documentation>Air sports, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1021">
        <xs:annotation>
          <xs:documentation>Aerobatics</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1022">
        <xs:annotation>
          <xs:documentation>Ballooning</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1023">
        <xs:annotation>
          <xs:documentation>Gliding</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1024">
        <xs:annotation>
          <xs:documentation>Gyroplane flying</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1025">
        <xs:annotation>
          <xs:documentation>Hang gliding</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1026">
        <xs:annotation>
          <xs:documentation>Ultralight flying</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1027">
        <xs:annotation>
          <xs:documentation>Air sport ( other )</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1031">
        <xs:annotation>
          <xs:documentation>Aquarobics</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1041">
        <xs:annotation>
          <xs:documentation>Archery</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1051">
        <xs:annotation>
          <xs:documentation>Athletics, track &amp; field</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1061">
        <xs:annotation>
          <xs:documentation>Australian rules football</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1071">
        <xs:annotation>
          <xs:documentation>Badminton</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1081">
        <xs:annotation>
          <xs:documentation>Baseball</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1091">
        <xs:annotation>
          <xs:documentation>Basketball (indoor &amp; outdoor)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1101">
        <xs:annotation>
          <xs:documentation>Beach volleyball</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1110">
        <xs:annotation>
          <xs:documentation>Cue Sports, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1111">
        <xs:annotation>
          <xs:documentation>Billiards</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1112">
        <xs:annotation>
          <xs:documentation>Pool</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1113">
        <xs:annotation>
          <xs:documentation>Snooker</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1121">
        <xs:annotation>
          <xs:documentation>Bocce</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1122">
        <xs:annotation>
          <xs:documentation>Boules</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1123">
        <xs:annotation>
          <xs:documentation>Petanque</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1131">
        <xs:annotation>
          <xs:documentation>Boxing</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1141">
        <xs:annotation>
          <xs:documentation>Bush walking</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1151">
        <xs:annotation>
          <xs:documentation>Canoeing</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1152">
        <xs:annotation>
          <xs:documentation>Kayaking</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1161">
        <xs:annotation>
          <xs:documentation>Carpet bowls</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1171">
        <xs:annotation>
          <xs:documentation>Cricket (Indoor)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1181">
        <xs:annotation>
          <xs:documentation>Cricket (Outdoor)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1191">
        <xs:annotation>
          <xs:documentation>Croquet</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1201">
        <xs:annotation>
          <xs:documentation>Cross country running</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1210">
        <xs:annotation>
          <xs:documentation>Bike sports, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1211">
        <xs:annotation>
          <xs:documentation>Bike riding</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1212">
        <xs:annotation>
          <xs:documentation>Cycling</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1213">
        <xs:annotation>
          <xs:documentation>BMXing</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1214">
        <xs:annotation>
          <xs:documentation>Mountain biking</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1220">
        <xs:annotation>
          <xs:documentation>Dance Sports, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1221">
        <xs:annotation>
          <xs:documentation>Boot scooting</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1222">
        <xs:annotation>
          <xs:documentation>Classical Ballet</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1223">
        <xs:annotation>
          <xs:documentation>Jazz Ballet</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1224">
        <xs:annotation>
          <xs:documentation>Ballroom Dancing</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1225">
        <xs:annotation>
          <xs:documentation>Dance team</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1229">
        <xs:annotation>
          <xs:documentation>Dancing (other)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1231">
        <xs:annotation>
          <xs:documentation>Darts</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1241">
        <xs:annotation>
          <xs:documentation>Dog racing</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1250">
        <xs:annotation>
          <xs:documentation>Dog competitions, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1251">
        <xs:annotation>
          <xs:documentation>Dog shows</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1252">
        <xs:annotation>
          <xs:documentation>Sheepdog trials</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1261">
        <xs:annotation>
          <xs:documentation>Fencing</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1271">
        <xs:annotation>
          <xs:documentation>Angling</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1272">
        <xs:annotation>
          <xs:documentation>Fishing</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1280">
        <xs:annotation>
          <xs:documentation>Throwing, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1281">
        <xs:annotation>
          <xs:documentation>Ultimate frisbee</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1282">
        <xs:annotation>
          <xs:documentation>Boomerang throwing</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1291">
        <xs:annotation>
          <xs:documentation>Gaelic football</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1301">
        <xs:annotation>
          <xs:documentation>Golf</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1311">
        <xs:annotation>
          <xs:documentation>Gridiron (USA football )</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1321">
        <xs:annotation>
          <xs:documentation>Gymnastics</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1322">
        <xs:annotation>
          <xs:documentation>Circus acrobatics</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1323">
        <xs:annotation>
          <xs:documentation>Callisthenics</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1324">
        <xs:annotation>
          <xs:documentation>Trampolining</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1331">
        <xs:annotation>
          <xs:documentation>Handball</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1341">
        <xs:annotation>
          <xs:documentation>Harness racing/Trotting</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1351">
        <xs:annotation>
          <xs:documentation>Hockey (Indoor)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1352">
        <xs:annotation>
          <xs:documentation>Hockey (Outdoor)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1362">
        <xs:annotation>
          <xs:documentation>Horse racing</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1371">
        <xs:annotation>
          <xs:documentation>Horse riding/Equestrian activities</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1372">
        <xs:annotation>
          <xs:documentation>Polo</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1373">
        <xs:annotation>
          <xs:documentation>Polo cross</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1374">
        <xs:annotation>
          <xs:documentation>Show jumping</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1380">
        <xs:annotation>
          <xs:documentation>Ice/Snow Sports, n.f.d.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1381">
        <xs:annotation>
          <xs:documentation>Ice hockey</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1383">
        <xs:annotation>
          <xs:documentation>Ice/Snow sport (other)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1384">
        <xs:annotation>
          <xs:documentation>Snow skiing</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1385">
        <xs:annotation>
          <xs:documentation>Snow boarding</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1391">
        <xs:annotation>
          <xs:documentation>Korfball</xs:documentation>
        </xs:annotat