<!--
		SIF Implementation Specification 2.4 (Sept. 9, 2010) Infrastructure Version: 2.4-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/infrastructure/2.x" xmlns:sif="http://www.sifinfo.org/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:element ref="sif:SIF_ServiceInput" />
      <xs:element ref="sif:SIF_ServiceOutput" />
      <xs:element ref="sif:SIF_ServiceNotify" />
    </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/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.4.
            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:element name="SIF_ProvideService" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Service" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
                </xs:sequence>
                <xs:attribute name="ServiceName" use="required" type="xs:token">
                  <xs:annotation>
                    <xs:documentation>The name of the SIF Zone Service as defined by a SIF Zone Service specification</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_RespondService" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Service" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
                </xs:sequence>
                <xs:attribute name="ServiceName" use="required" type="xs:token">
                  <xs:annotation>
                    <xs:documentation>The name of the SIF Zone Service as defined by a SIF Zone Service specification</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_RequestService" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Service" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
                  <xs:element name="SIF_Operations" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Operation" maxOccurs="unbounded" type="xs:token">
                          <xs:annotation>
                            <xs:documentation>A specific method that the agent invokes the specified SIF Zone Service</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="ServiceName" use="required" type="xs:token">
                  <xs:annotation>
                    <xs:documentation>The name of the SIF Zone Service as defined by a SIF Zone Service specification</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_SubscribeService" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Service" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
                  <xs:element name="SIF_Operations" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Operation" maxOccurs="unbounded" type="xs:token">
                          <xs:annotation>
                            <xs:documentation>A specific event that the agent desires to subscribe to</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="ServiceName" use="required" type="xs:token">
                  <xs:annotation>
                    <xs:documentation>The name of the SIF Zone Service as defined by a SIF Zone Service specification</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:element ref="sif:SIF_CancelServiceInputs" />
          </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_CancelServiceInputs-->

  <xs:complexType name="SIF_CancelServiceInputsType">
    <xs:annotation>
      <xs:documentation>
			  The SIF_SystemControl message is already part of the SIF Infrastructure. This messages allows for synchronous communication between an agent and a ZIS. The SIF_SystemControl - SIF_CancelServiceInputs allows an agent or ZIS to notify the other party that the specified SIF_ServiceInput should be cancelled.
		  </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_ServiceOutput for each cancelled SIF_ServiceInput.
            </xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="None">
              <xs:annotation>
                <xs:documentation>
              No further SIF_ServiceOutputs 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_ServiceMsgIds">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_ServiceMsgId" 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_CancelServiceInputs" type="sif:SIF_CancelServiceInputsType" />


  <!--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" />


  <!--SIF_ServiceInput-->

  <xs:complexType name="SIF_ServiceInputType">
    <xs:annotation>
      <xs:documentation>SIF_ServiceInput is used to invoke a method that is exposed by a SIF Zone Service.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:SIF_Header" />
      <xs:element name="SIF_Service">
        <xs:annotation>
          <xs:documentation>The name of the SIF Zone Service that is being invoked.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:NCName">
            <xs:enumeration value="serviceAgencyStudentIdRequest">
              <xs:annotation>
                <xs:documentation />
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="serviceAgencyStudentIdManagement">
              <xs:annotation>
                <xs:documentation />
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="serviceAgencyStaffIdRequest">
              <xs:annotation>
                <xs:documentation />
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="serviceAgencyStaffIdManagement">
              <xs:annotation>
                <xs:documentation />
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="serviceAssessmentProcessing">
              <xs:annotation>
                <xs:documentation />
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="serviceAssessmentAdministration">
              <xs:annotation>
                <xs:documentation />
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="serviceSREBroker">
              <xs:annotation>
                <xs:documentation />
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="serviceSREPublisher">
              <xs:annotation>
                <xs:documentation />
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="serviceSREAcademicRecordConsumer">
              <xs:annotation>
                <xs:documentation />
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="serviceSREDemographicRecordConsumer">
              <xs:annotation>
                <xs:documentation />
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="serviceSRESpecialEducationRecordConsumer">
              <xs:annotation>
                <xs:documentation />
              </xs:annotation>
            </xs:enumeration>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SIF_Operation">
        <xs:annotation>
          <xs:documentation>This is the name of the service operation that is being invoked.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:NCName">
            <xs:enumeration value="RequestIdentifier">
              <xs:annotation>
                <xs:documentation />
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="AssignIdentifier">
              <xs:annotation>
                <xs:documentation />
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="ResolveIdentifier">
              <xs:annotation>
                <xs:documentation />
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="ReleaseIdentifier">
              <xs:annotation>
                <xs:documentation />
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="CancelTransaction">
              <xs:annotation>
                <xs:documentation />
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="ScoreItems">
              <xs:annotation>
                <xs:documentation />
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="ItemsScored">
              <xs:annotation>
                <xs:documentation />
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="GetRecordExchange">
              <xs:annotation>
                <xs:documentation />
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="SetRecordExchange">
              <xs:annotation>
                <xs:documentation />
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="SetAcademicRecord">
              <xs:annotation>
                <xs:documentation />
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="SetDemographicRecord">
              <xs:annotation>
                <xs:documentation />
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="SetSpecialEducationRecord">
              <xs:annotation>
                <xs:documentation />
              </xs:annotation>
            </xs:enumeration>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SIF_ServiceMsgId" type="sif:GUIDType">
        <xs:annotation>
          <xs:documentation>The unique Id of this service request invocation. Multiple SIF_ServiceInput packets may be sent with this same SIF_ServiceMsgId</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Version" minOccurs="0" maxOccurs="unbounded" type="sif:VersionWithWildcardsType">
        <xs:annotation>
          <xs:documentation>Specifies which SIF Specification version should be used when returning the response data. If a responder cannot return response data in this format, it should reject the SIF_ServiceInput. It is recommended that clients use a wildcard version for the “minor” portion of the version, such as "2.*".</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_MaxBufferSize" minOccurs="0" 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. If the maximum size is too small to contain a single whole response object, the responder should send an error back to the requester that the SIF_MaxBufferSize isn't supported. 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:element name="SIF_PacketNumber" type="xs:positiveInteger">
        <xs:annotation>
          <xs:documentation>This element represents the index of the SIF_ServiceInput 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 service request. The value of this element can only be "Yes" or "No".</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_Body">
          <xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema">
            <xs:sequence>
              <xs:any processContents="lax" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_ServiceInput" type="sif:SIF_ServiceInputType" />


  <!--SIF_ServiceOutput-->

  <xs:complexType name="SIF_ServiceOutputType">
    <xs:annotation>
      <xs:documentation>SIF_ServiceOutput is used to respond to a SIF_ServiceInput message. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:SIF_Header" />
      <xs:element name="SIF_ServiceMsgId" type="sif:GUIDType">
        <xs:annotation>
          <xs:documentation>This element represents the value of the SIF_ServiceMsgId that was sent as part of the original SIF_ServiceInput message stream, and should contain the same value to allow the client and the ZIS to associate each SIF_ServiceOutput packet with the SIF_ServiceInput message stream. This value uniquely identifies the entire set of SIF_ServiceInput and SIF_ServiceOutput messages involved in a single invocation of a SIF Zone Service method.</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_ServiceOutput 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. The value of this element can only be "Yes" or "No".</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_Body">
          <xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema">
            <xs:sequence>
              <xs:any processContents="lax" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_ServiceOutput" type="sif:SIF_ServiceOutputType" />


  <!--SIF_ServiceNotify-->

  <xs:complexType name="SIF_ServiceNotifyType">
    <xs:annotation>
      <xs:documentation>SIF_ServiceNotify is used to deliver notifications to service clients that some state associated with the service has changed. </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:SIF_Header" />
      <xs:element name="SIF_Service">
        <xs:annotation>
          <xs:documentation>The name of the SIF Zone Service that initiated the event</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:NCName">
            <xs:enumeration value="serviceAssessmentAdministration">
              <xs:annotation>
                <xs:documentation />
              </xs:annotation>
            </xs:enumeration>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SIF_Operation">
        <xs:annotation>
          <xs:documentation>The name of the notification message being sent</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:NCName">
            <xs:enumeration value="AdministrationScored">
              <xs:annotation>
                <xs:documentation />
              </xs:annotation>
            </xs:enumeration>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SIF_ServiceMsgId" type="sif:GUIDType">
        <xs:annotation>
          <xs:documentation>A GUID that has been assigned to this series of messages. All SIF_ServiceNotify messages that contain this Id correspond to the same event instance.</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_ServiceNotify message in the sequence of packets that make up a complete notification message stream. Its value must be in the range of 1 through n, with n equal to the total number of packets that make up the message stream.</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 notification message stream. The value of this element can only be "Yes" or "No".</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_Body">
          <xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema">
            <xs:sequence>
              <xs:any processContents="lax" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_ServiceNotify" type="sif:SIF_ServiceNotifyType" />


  <!--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" minOccurs="0">
        <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: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" minOccurs="0">
        <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: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" minOccurs="0">
        <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: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" minOccurs="0">
        <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: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" minOccurs="0">
        <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: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" minOccurs="0">
        <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: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" minOccurs="0">
        <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: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_ProvideService" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Service" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
                </xs:sequence>
                <xs:attribute name="ServiceName" use="required" type="xs:token">
                  <xs:annotation>
                    <xs:documentation>The name of the SIF Zone Service as defined by a SIF Zone Service specification</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_RespondService" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Service" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
                </xs:sequence>
                <xs:attribute name="ServiceName" use="required" type="xs:token">
                  <xs:annotation>
                    <xs:documentation>The name of the SIF Zone Service as defined by a SIF Zone Service specification</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_RequestService" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Service" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
                  <xs:element name="SIF_Operations" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Operation" minOccurs="0" maxOccurs="unbounded" type="xs:token">
                          <xs:annotation>
                            <xs:documentation>A specific operation that the agent has permission to invoke or subscribe to</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="ServiceName" use="required" type="xs:token">
                  <xs:annotation>
                    <xs:documentation>The name of the SIF Zone Service as defined by a SIF Zone Service specification</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_SubscribeService" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Service" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
                  <xs:element name="SIF_Operations" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Operation" minOccurs="0" maxOccurs="unbounded" type="xs:token">
                          <xs:annotation>
                            <xs:documentation>A specific operation that the agent has permission to invoke or subscribe to</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="ServiceName" use="required" type="xs:token">
                  <xs:annotation>
                    <xs:documentation>The name of the SIF Zone Service as defined by a SIF Zone Service specification</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 name="SIF_ProvideService">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Service" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_Contexts" />
                </xs:sequence>
                <xs:attribute name="ServiceName" use="required" type="xs:token">
                  <xs:annotation>
                    <xs:documentation>The name of the SIF Zone Service as defined by a SIF Zone Service specification</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_RespondService">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Service" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_Contexts" />
                </xs:sequence>
                <xs:attribute name="ServiceName" use="required" type="xs:token">
                  <xs:annotation>
                    <xs:documentation>The name of the SIF Zone Service as defined by a SIF Zone Service specification</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_RequestService">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Service" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_Contexts" />
                  <xs:element name="SIF_Operations" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Operation" maxOccurs="unbounded" type="xs:token">
                          <xs:annotation>
                            <xs:documentation>A specific operation that the agent has permission to invoke or subscribe to</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="ServiceName" use="required" type="xs:token">
                  <xs:annotation>
                    <xs:documentation>The name of the SIF Zone Service as defined by a SIF Zone Service specification</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_SubscribeService">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Service" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_Contexts" />
                  <xs:element name="SIF_Operations" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Operation" maxOccurs="unbounded" type="xs:token">
                          <xs:annotation>
                            <xs:documentation>A specific operation that the agent has permission to invoke or subscribe to</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="ServiceName" use="required" type="xs:token">
                  <xs:annotation>
                    <xs:documentation>The name of the SIF Zone Service as defined by a SIF Zone Service specification</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" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="sif:SIF_Header" minOccurs="0" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_OriginalHeader" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="sif:SIF_Header" minOccurs="0" />
          </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" minOccurs="0">
        <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" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema">
                <xs:sequence>
                  <xs:any processContents="skip" />
                </xs:sequence>
                <xs:attribute name="ObjectName" use="required" type="sif:SIF_RequestObjectNamesType" />
              </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 xmlns:xs="http://www.w3.org/2001/XMLSchema">
                <xs:sequence>
                  <xs:any processContents="skip" />
                </xs:sequence>
                <xs:attribute name="ObjectName" use="required" type="sif:SIF_RequestObjectNamesType" />
              </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" minOccurs="0" 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" minOccurs="0" 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" minOccurs="0" 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" minOccurs="0" 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" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList" minOccurs="0">
                    <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:element ref="sif:SIF_Contexts" minOccurs="0" />
                            </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" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList" minOccurs="0">
                    <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: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" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList" minOccurs="0">
                    <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: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" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList" minOccurs="0">
                    <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: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" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList" minOccurs="0">
                    <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: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" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList" minOccurs="0">
                    <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:element ref="sif:SIF_Contexts" minOccurs="0" />
                            </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" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList" minOccurs="0">
                    <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:element ref="sif:SIF_Contexts" minOccurs="0" />
                            </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" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_Name" minOccurs="0" 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" minOccurs="0">
                          <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" minOccurs="0">
                          <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" minOccurs="0">
                          <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" minOccurs="0">
                    <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" minOccurs="0">
                    <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" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Version" minOccurs="0" 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" minOccurs="0" 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" minOccurs="0">
                    <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" minOccurs="0" 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" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="sif:SIF_Protocol" minOccurs="0" maxOccurs="unbounded" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_SupportedVersions" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Version" minOccurs="0" 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" minOccurs="0" />
      <xs:element name="SIF_ServiceProviders" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_ServiceProvider" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ServiceList" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Service" minOccurs="0" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
                            </xs:sequence>
                            <xs:attribute name="ServiceName" use="required" type="xs:token">
                              <xs:annotation>
                                <xs:documentation>The name of the SIF Zone Service as defined by a SIF Zone Service specification</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required" type="xs:token">
                  <xs:annotation>
                    <xs:documentation>The identifier of the SIF node that is providing SIF Services. 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:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_ServiceResponders" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_ServiceResponder" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ServiceList" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Service" minOccurs="0" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
                            </xs:sequence>
                            <xs:attribute name="ServiceName" use="required" type="xs:token">
                              <xs:annotation>
                                <xs:documentation>The name of the SIF Zone Service as defined by a SIF Zone Service specification</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required" type="xs:token">
                  <xs:annotation>
                    <xs:documentation>
		  The identifier of the SIF node that is providing SIF Services. 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:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_ServiceRequesters" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_ServiceRequester" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ServiceList" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Service" minOccurs="0" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="SIF_Operations" minOccurs="0">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="SIF_Operation" minOccurs="0" maxOccurs="unbounded" type="xs:token">
                                      <xs:annotation>
                                        <xs:documentation>
		  A specific operation with a SIF Zone Service that the agent will invoke.
	  </xs:documentation>
                                      </xs:annotation>
                                    </xs:element>
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>
                              <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
                            </xs:sequence>
                            <xs:attribute name="ServiceName" use="required" type="xs:token">
                              <xs:annotation>
                                <xs:documentation>The name of the SIF Zone Service as defined by a SIF Zone Service specification</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required" type="xs:token">
                  <xs:annotation>
                    <xs:documentation>
		  The identifier of the SIF node that will respond to SIF_ServiceInput messages. 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:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_ServiceSubscribers" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_ServiceSubscriber" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ServiceList" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Service" minOccurs="0" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="SIF_Operations" minOccurs="0">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="SIF_Operation" minOccurs="0" maxOccurs="unbounded" type="xs:token">
                                      <xs:annotation>
                                        <xs:documentation>
		  A specific notification message that the agent is subscribed to
	  </xs:documentation>
                                      </xs:annotation>
                                    </xs:element>
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>
                              <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
                            </xs:sequence>
                            <xs:attribute name="ServiceName" use="required" type="xs:token">
                              <xs:annotation>
                                <xs:documentation>The name of the SIF Zone Service as defined by a SIF Zone Service specification</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required" type="xs:token">
                  <xs:annotation>
                    <xs:documentation>The identifier of the SIF node that is providing SIF Services. 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: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: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:unique name="SIF_ZoneStatusKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@ZoneId" />
    </xs:unique>
  </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 name="SIF_ServiceProviders" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_ServiceProvider" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ServiceList">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Service" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
                            </xs:sequence>
                            <xs:attribute name="ServiceName" use="required" type="xs:token">
                              <xs:annotation>
                                <xs:documentation>The name of the SIF Zone Service as defined by a SIF Zone Service specification</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required" type="xs:token">
                  <xs:annotation>
                    <xs:documentation>The identifier of the SIF node that is providing SIF Services. 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:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_ServiceResponders" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_ServiceResponder" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ServiceList">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Service" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
                            </xs:sequence>
                            <xs:attribute name="ServiceName" use="required" type="xs:token">
                              <xs:annotation>
                                <xs:documentation>The name of the SIF Zone Service as defined by a SIF Zone Service specification</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required" type="xs:token">
                  <xs:annotation>
                    <xs:documentation>
		  The identifier of the SIF node that is providing SIF Services. 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:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_ServiceRequesters" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_ServiceRequester" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ServiceList">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Service" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="SIF_Operations" minOccurs="0">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="SIF_Operation" maxOccurs="unbounded" type="xs:token">
                                      <xs:annotation>
                                        <xs:documentation>
		  A specific operation with a SIF Zone Service that the agent will invoke.
	  </xs:documentation>
                                      </xs:annotation>
                                    </xs:element>
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>
                              <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
                            </xs:sequence>
                            <xs:attribute name="ServiceName" use="required" type="xs:token">
                              <xs:annotation>
                                <xs:documentation>The name of the SIF Zone Service as defined by a SIF Zone Service specification</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required" type="xs:token">
                  <xs:annotation>
                    <xs:documentation>
		  The identifier of the SIF node that will respond to SIF_ServiceInput messages. 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:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_ServiceSubscribers" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_ServiceSubscriber" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ServiceList">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Service" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="SIF_Operations" minOccurs="0">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="SIF_Operation" maxOccurs="unbounded" type="xs:token">
                                      <xs:annotation>
                                        <xs:documentation>
		  A specific notification message that the agent is subscribed to
	  </xs:documentation>
                                      </xs:annotation>
                                    </xs:element>
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>
                              <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
                            </xs:sequence>
                            <xs:attribute name="ServiceName" use="required" type="xs:token">
                              <xs:annotation>
                                <xs:documentation>The name of the SIF Zone Service as defined by a SIF Zone Service specification</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SourceId" use="required" type="xs:token">
                  <xs:annotation>
                    <xs:documentation>The identifier of the SIF node that is providing SIF Services. 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: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: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>


  <!--Introduction-->


  <!--AgencyIdentifierServices-->


  <!--RequestIdentifier-->

  <xs:complexType name="RequestIdentifierType">
    <xs:sequence>
      <xs:element name="TransactionId" minOccurs="0" type="sif:GUIDType">
        <xs:annotation>
          <xs:documentation>GUID that identifies the RequestIdentifier operation.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="RequestingAgencyIds" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="RequestingAgencyId" minOccurs="0" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation>Identification of the agency and/or location requesting the state Id. Optional because the SIF zone infrastructure may provide adequate information for the state to ascertain the origin of the request.</xs:documentation>
              </xs:annotation>
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:normalizedString">
                    <xs:attribute name="Type" use="required">
                      <xs:annotation>
                        <xs:documentation>The functional level of the requesting agency.</xs:documentation>
                      </xs:annotation>
                      <xs:simpleType>
                        <xs:restriction base="xs:token">
                          <xs:enumeration value="ESA">
                            <xs:annotation>
                              <xs:documentation>Educational Services Agency</xs:documentation>
                            </xs:annotation>
                          </xs:enumeration>
                          <xs:enumeration value="LEA">
                            <xs:annotation>
                              <xs:documentation>Local Educational Agency (District)</xs:documentation>
                            </xs:annotation>
                          </xs:enumeration>
                          <xs:enumeration value="School">
                            <xs:annotation>
                              <xs:documentation>School</xs:documentation>
                            </xs:annotation>
                          </xs:enumeration>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:attribute>
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="MinimumConfidence" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>States may choose to allow requesting agencies to indicate the minimum confidence level to associate with the request (see Match/Confidence for more information).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:choice minOccurs="0">
        <xs:element name="StudentRequestParameters" minOccurs="0" nillable="true" type="sif:StudentParametersType">
          <xs:annotation>
            <xs:documentation>Characteristics of the student identified by the district which the state uses to perform its matching logic.  This element is used with the Student Identifier Service.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="StaffRequestParameters" minOccurs="0" nillable="true" type="sif:StaffParametersType">
          <xs:annotation>
            <xs:documentation>Characteristics of the staff person identified by the district which the state uses to perform its matching logic.  This element is used with the Staff Identifier Service.</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="RequestIdentifier" type="sif:RequestIdentifierType" />


  <!--RequestIdentifierResponse-->

  <xs:complexType name="RequestIdentifierResponseType">
    <xs:sequence>
      <xs:element name="TransactionId" minOccurs="0" type="sif:GUIDType">
        <xs:annotation>
          <xs:documentation>GUID that identifies the RequestIdentifier operation.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Match" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="StateProvinceId" minOccurs="0" nillable="true" type="sif:StateProvinceIdType">
              <xs:annotation>
                <xs:documentation>The identified state student Id.  Must be empty when there are no matches (a single Match marked Ambiguous).</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="Confidence" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Confidence score. The main use of this element is when IdStatus equals "Ambiguous" and the state returns one or more* candidate matches. The interpretation is that the information populated in each returned object matches the information in the request to the extent expressed in this score. The matching/scoring algorithms (and resultant values) are defined by the particular state.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:choice minOccurs="0">
              <xs:element name="StudentRequestParameters" minOccurs="0" nillable="true" type="sif:StudentParametersType">
                <xs:annotation>
                  <xs:documentation>Characteristics of the student identified by the district which the state uses to perform its matching logic.  This element is used with the Student Identifier Service.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="StaffRequestParameters" minOccurs="0" nillable="true" type="sif:StaffParametersType">
                <xs:annotation>
                  <xs:documentation>Characteristics of the staff person identified by the district which the state uses to perform its matching logic.  This element is used with the Staff Identifier Service.</xs:documentation>
                </xs:annotation>
              </xs:element>
            </xs:choice>
          </xs:sequence>
          <xs:attribute name="IdStatus" use="required">
            <xs:annotation>
              <xs:documentation>Status of the match.</xs:documentation>
            </xs:annotation>
            <xs:simpleType>
              <xs:restriction base="xs:token">
                <xs:enumeration value="Valid">
                  <xs:annotation>
                    <xs:documentation>Marks a response from the state with a valid StateProvinceId. If the request included Characteristics/StateProvinceId, the value of StateProvinceId in the response could be different.</xs:documentation>
                  </xs:annotation>
                </xs:enumeration>
                <xs:enumeration value="Ambiguous">
                  <xs:annotation>
                    <xs:documentation>Marks a response where the state couldn't uniquely identify the student based on the information provided. The state may respond to the request with a single Match marked "Ambiguous" and an empty StateProvinceId. Alternatively, the state response may include one or more Match elements with candidate matches. Each of these elements would be marked "Ambiguous," and populated per the particular state's policies. StateProvinceId should not be empty in these elements.</xs:documentation>
                  </xs:annotation>
                </xs:enumeration>
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="RequestIdentifierResponse" type="sif:RequestIdentifierResponseType" />


  <!--CancelTransaction-->

  <xs:complexType name="CancelTransactionType">
    <xs:sequence>
      <xs:element name="TransactionId" minOccurs="0" type="sif:GUIDType">
        <xs:annotation>
          <xs:documentation>GUID that identifies the RequestIdentifier operation.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="RequestingAgencyIds" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="RequestingAgencyId" minOccurs="0" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation>Identification of the agency and/or location requesting the state Id. Optional because the SIF zone infrastructure may provide adequate information for the state to ascertain the origin of the request.</xs:documentation>
              </xs:annotation>
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:normalizedString">
                    <xs:attribute name="Type" use="required">
                      <xs:annotation>
                        <xs:documentation>The functional level of the requesting agency.</xs:documentation>
                      </xs:annotation>
                      <xs:simpleType>
                        <xs:restriction base="xs:token">
                          <xs:enumeration value="ESA">
                            <xs:annotation>
                              <xs:documentation>Educational Services Agency</xs:documentation>
                            </xs:annotation>
                          </xs:enumeration>
                          <xs:enumeration value="LEA">
                            <xs:annotation>
                              <xs:documentation>Local Educational Agency (District)</xs:documentation>
                            </xs:annotation>
                          </xs:enumeration>
                          <xs:enumeration value="School">
                            <xs:annotation>
                              <xs:documentation>School</xs:documentation>
                            </xs:annotation>
                          </xs:enumeration>
                        </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="CancelTransaction" type="sif:CancelTransactionType" />


  <!--CancelTransactionResponse-->

  <xs:complexType name="CancelTransactionResponseType">
    <xs:sequence>
      <xs:element name="TransactionId" minOccurs="0" type="sif:GUIDType">
        <xs:annotation>
          <xs:documentation>Echoes the cancelled TransactionId when successful.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="CancelTransactionResponse" type="sif:CancelTransactionResponseType" />


  <!--AssignIdentifier-->

  <xs:complexType name="AssignIdentifierType">
    <xs:sequence>
      <xs:element name="TransactionId" minOccurs="0" type="sif:GUIDType">
        <xs:annotation>
          <xs:documentation>GUID that identifies the operation.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="RequestingAgencyIds" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="RequestingAgencyId" minOccurs="0" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation>Identification of the agency and/or location requesting the state Id assignment. Optional because the SIF zone infrastructure may provide adequate information for the state to ascertain the origin of the request.</xs:documentation>
              </xs:annotation>
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:normalizedString">
                    <xs:attribute name="Type" use="required">
                      <xs:annotation>
                        <xs:documentation>The functional level of the requesting agency.</xs:documentation>
                      </xs:annotation>
                      <xs:simpleType>
                        <xs:restriction base="xs:token">
                          <xs:enumeration value="ESA">
                            <xs:annotation>
                              <xs:documentation>Educational Services Agency</xs:documentation>
                            </xs:annotation>
                          </xs:enumeration>
                          <xs:enumeration value="LEA">
                            <xs:annotation>
                              <xs:documentation>Local Educational Agency (District)</xs:documentation>
                            </xs:annotation>
                          </xs:enumeration>
                          <xs:enumeration value="School">
                            <xs:annotation>
                              <xs:documentation>School</xs:documentation>
                            </xs:annotation>
                          </xs:enumeration>
                        </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="AssignIdentifier" type="sif:AssignIdentifierType" />


  <!--AssignIdentifierResponse-->

  <xs:complexType name="AssignIdentifierResponseType">
    <xs:sequence>
      <xs:element name="TransactionId" minOccurs="0" type="sif:GUIDType">
        <xs:annotation>
          <xs:documentation>GUID that identifies the operation.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StateProvinceId" minOccurs="0" nillable="true" type="sif:StateProvinceIdType">
        <xs:annotation>
          <xs:documentation>The assigned state student Id.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:choice minOccurs="0">
        <xs:element name="StudentReturnValues" minOccurs="0" nillable="true" type="sif:StudentParametersType">
          <xs:annotation>
            <xs:documentation>The state may return any identified characteristics of the student as it sees fit.  This element is used with the Student Identifier Service. </xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="StaffReturnValues" minOccurs="0" nillable="true" type="sif:StaffParametersType">
          <xs:annotation>
            <xs:documentation>The state may return any identified characteristics of the staff person as it sees fit.  This element is used with the Staff Identifier Service.</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="AssignIdentifierResponse" type="sif:AssignIdentifierResponseType" />


  <!--ResolveIdentifier-->

  <xs:complexType name="ResolveIdentifierType">
    <xs:sequence>
      <xs:element name="TransactionId" minOccurs="0" type="sif:GUIDType">
        <xs:annotation>
          <xs:documentation>GUID that identifies the operation.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="RequestingAgencyIds" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="RequestingAgencyId" minOccurs="0" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation>Identification of the agency and/or location requesting the state Id resolution. Optional because the SIF zone infrastructure may provide adequate information for the state to ascertain the origin of the request.</xs:documentation>
              </xs:annotation>
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:normalizedString">
                    <xs:attribute name="Type" use="required">
                      <xs:annotation>
                        <xs:documentation>The functional level of the requesting agency.</xs:documentation>
                      </xs:annotation>
                      <xs:simpleType>
                        <xs:restriction base="xs:token">
                          <xs:enumeration value="ESA">
                            <xs:annotation>
                              <xs:documentation>Educational Services Agency</xs:documentation>
                            </xs:annotation>
                          </xs:enumeration>
                          <xs:enumeration value="LEA">
                            <xs:annotation>
                              <xs:documentation>Local Educational Agency (District)</xs:documentation>
                            </xs:annotation>
                          </xs:enumeration>
                          <xs:enumeration value="School">
                            <xs:annotation>
                              <xs:documentation>School</xs:documentation>
                            </xs:annotation>
                          </xs:enumeration>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:attribute>
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="StateProvinceId" minOccurs="0" nillable="true" type="sif:StateProvinceIdType">
        <xs:annotation>
          <xs:documentation>The state Id to associate with the student identified by Characteristics.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:choice minOccurs="0">
        <xs:element name="StudentRequestParameters" minOccurs="0" nillable="true" type="sif:StudentParametersType">
          <xs:annotation>
            <xs:documentation>Characteristics of the student identified by the district which the state uses to perform its matching logic.  This element is used with the Student Identifier Service.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="StaffRequestParameters" minOccurs="0" nillable="true" type="sif:StaffParametersType">
          <xs:annotation>
            <xs:documentation>Characteristics of the staff person identified by the district which the state uses to perform its matching logic.  This element is used with the Staff Identifier Service.</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ResolveIdentifier" type="sif:ResolveIdentifierType" />


  <!--ResolveIdentifierResponse-->

  <xs:complexType name="ResolveIdentifierResponseType">
    <xs:sequence>
      <xs:element name="TransactionId" minOccurs="0" type="sif:GUIDType">
        <xs:annotation>
          <xs:documentation>GUID that identifies the operation.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StateProvinceId" minOccurs="0" nillable="true" type="sif:StateProvinceIdType">
        <xs:annotation>
          <xs:documentation>Echoes the supplied StateProvinceId.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:choice minOccurs="0">
        <xs:element name="StudentReturnValues" minOccurs="0" nillable="true" type="sif:StudentParametersType">
          <xs:annotation>
            <xs:documentation>The state may return any identified characteristics of the student as it sees fit.  This element is used with the Student Identifier Service.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="StaffReturnValues" minOccurs="0" nillable="true" type="sif:StaffParametersType">
          <xs:annotation>
            <xs:documentation>The state may return any identified characteristics of the staff person as it sees fit.  This element is used with the Staff Identifier Service.</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ResolveIdentifierResponse" type="sif:ResolveIdentifierResponseType" />


  <!--ReleaseIdentifier-->

  <xs:complexType name="ReleaseIdentifierType">
    <xs:sequence>
      <xs:element name="RequestingAgencyIds" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="RequestingAgencyId" minOccurs="0" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation>Identification of the agency and/or location requesting the student be disassociated with the agency. Optional because the SIF zone infrastructure may provide adequate information for the state to ascertain the origin of the request.</xs:documentation>
              </xs:annotation>
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:normalizedString">
                    <xs:attribute name="Type" use="required">
                      <xs:annotation>
                        <xs:documentation>The functional level of the requesting agency.</xs:documentation>
                      </xs:annotation>
                      <xs:simpleType>
                        <xs:restriction base="xs:token">
                          <xs:enumeration value="ESA">
                            <xs:annotation>
                              <xs:documentation>Educational Services Agency</xs:documentation>
                            </xs:annotation>
                          </xs:enumeration>
                          <xs:enumeration value="LEA">
                            <xs:annotation>
                              <xs:documentation>Local Educational Agency (District)</xs:documentation>
                            </xs:annotation>
                          </xs:enumeration>
                          <xs:enumeration value="School">
                            <xs:annotation>
                              <xs:documentation>School</xs:documentation>
                            </xs:annotation>
                          </xs:enumeration>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:attribute>
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="StateProvinceId" minOccurs="0" nillable="true" type="sif:StateProvinceIdType">
        <xs:annotation>
          <xs:documentation>The state Id of the student that has left the district.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ReleaseIdentifier" type="sif:ReleaseIdentifierType" />


  <!--ReleaseIdentifierResponse-->

  <xs:complexType name="ReleaseIdentifierResponseType">
    <xs:sequence>
      <xs:element name="StateProvinceId" minOccurs="0" nillable="true" type="sif:StateProvinceIdType">
        <xs:annotation>
          <xs:documentation>Echoes the supplied StateProvinceId.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:choice minOccurs="0">
        <xs:element name="StudentReturnValues" minOccurs="0" nillable="true" type="sif:StudentParametersType">
          <xs:annotation>
            <xs:documentation>The state may return any identified characteristics of the student as it sees fit.  This element is used with the Student Identifier Service.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="StaffReturnValues" minOccurs="0" nillable="true" type="sif:StaffParametersType">
          <xs:annotation>
            <xs:documentation>The state may return any identified characteristics of the staff person as it sees fit.  This element is used with the Staff Identifier Service.</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ReleaseIdentifierResponse" type="sif:ReleaseIdentifierResponseType" />


  <!--AssessmentServices-->


  <!--ScoreItems-->

  <xs:complexType name="ScoreItemsType">
    <xs:sequence>
      <xs:element ref="sif:AssessmentAdministration" minOccurs="0" />
      <xs:element name="AssessmentItemRefIds" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="AssessmentItemRefId" minOccurs="0" maxOccurs="unbounded" type="sif:IdRefType">
              <xs:annotation>
                <xs:documentation>IdRefType of item to be scored by the targeted APS.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="AssessmentResponseData" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="AssessmentResponseDataItem" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:AssessmentRegistration" minOccurs="0" />
                  <xs:element ref="sif:StudentResponseSet" minOccurs="0" />
                  <xs:element name="StudentSnapshot" minOccurs="0" nillable="true" type="sif:StudentSnapshotType">
                    <xs:annotation>
                      <xs:documentation>Optional demographic information about the student at the time of the assessment.</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="ScoreItems" type="sif:ScoreItemsType" />


  <!--ScoreItemsResponse-->

  <xs:complexType name="ScoreItemsResponseType">
    <xs:sequence>
      <xs:element name="Accepted" minOccurs="0" type="xs:boolean">
        <xs:annotation>
          <xs:documentation>True or false (boolean) return value indicating whether the assessment processing service has accepted the task.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Receipt" minOccurs="0" nillable="true" type="xs:token">
        <xs:annotation>
          <xs:documentation>If accepted, a confirmation token, such as a confirmation number.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Description" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Description of additional information regarding the acceptance of this AssessmentAdministration.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ScoreItemsResponse" type="sif:ScoreItemsResponseType" />


  <!--ItemsScored-->

  <xs:complexType name="ItemsScoredType">
    <xs:sequence>
      <xs:element ref="sif:AssessmentAdministration" minOccurs="0" />
      <xs:element name="AssessmentResponseData" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="AssessmentResponseDataItem" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:AssessmentRegistration" minOccurs="0" />
                  <xs:element ref="sif:StudentResponseSet" minOccurs="0" />
                  <xs:element name="StudentSnapshot" minOccurs="0" nillable="true" type="sif:StudentSnapshotType">
                    <xs:annotation>
                      <xs:documentation>Optional demographic information about the student at the time of the assessment.</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="ItemsScored" type="sif:ItemsScoredType" />


  <!--ItemsScoredResponse-->

  <xs:complexType name="ItemsScoredResponseType">
    <xs:sequence>
      <xs:element name="Accepted" minOccurs="0" type="xs:boolean">
        <xs:annotation>
          <xs:documentation>True or false (boolean) return value indicating whether the Online Assessment System has accepted the results.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Receipt" minOccurs="0" nillable="true" type="xs:token">
        <xs:annotation>
          <xs:documentation>If accepted, a confirmation token, such as a confirmation number.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Description" minOccurs="0" nillable="true" type="xs:string">
        <xs:annotation>
          <xs:documentation>Description of additional information regarding the acceptance of these scores.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ItemsScoredResponse" type="sif:ItemsScoredResponseType" />


  <!--AdministrationScored-->

  <xs:complexType name="AdministrationScoredType">
    <xs:sequence>
      <xs:element ref="sif:AssessmentAdministration" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="AdministrationScored" type="sif:AdministrationScoredType" />


  <!--StudentRecordExchangeServices-->


  <!--GetRecordExchange-->

  <xs:complexType name="GetRecordExchangeType">
    <xs:sequence>
      <xs:element name="StudentId" minOccurs="0" type="sif:StateProvinceIdType">
        <xs:annotation>
          <xs:documentation>The StateProvinceId of the student</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SendingAgencyId" minOccurs="0" type="sif:StateProvinceIdType">
        <xs:annotation>
          <xs:documentation>The StateProvinceId of the sending agency</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ReceivingAgencyId" minOccurs="0" type="sif:StateProvinceIdType">
        <xs:annotation>
          <xs:documentation>The StateProvinceId of the receiving agency</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ExtendedParameters" minOccurs="0" nillable="true" type="sif:ExtendedParametersType">
        <xs:annotation>
          <xs:documentation>Optional list of additional implementation-dependent parameters</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="GetRecordExchange" type="sif:GetRecordExchangeType" />


  <!--GetRecordExchangeResponse-->

  <xs:complexType name="GetRecordExchangeResponseType">
    <xs:sequence>
      <xs:element ref="sif:StudentRecordExchangeDataList" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="GetRecordExchangeResponse" type="sif:GetRecordExchangeResponseType" />


  <!--SetRecordExchange-->

  <xs:complexType name="SetRecordExchangeType">
    <xs:sequence>
      <xs:element name="StudentId" minOccurs="0" type="sif:StateProvinceIdType">
        <xs:annotation>
          <xs:documentation>The StateProvinceId of the student. In the case where a SIF_ServiceInput message spans multiple packets, each packet must provide this element.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SendingAgencyId" minOccurs="0" type="sif:StateProvinceIdType">
        <xs:annotation>
          <xs:documentation>The StateProvinceId of the sending agency. In the case where a SIF_ServiceInput message spans multiple packets, each packet must provide this element.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ReceivingAgencyId" minOccurs="0" type="sif:StateProvinceIdType">
        <xs:annotation>
          <xs:documentation>The StateProvinceId of the receiving agency. In the case where a SIF_ServiceInput message spans multiple packets, each packet must provide this element.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ExtendedParameters" minOccurs="0" nillable="true" type="sif:ExtendedParametersType">
        <xs:annotation>
          <xs:documentation>Optional list of additional implementation-dependent parameters</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element ref="sif:StudentRecordExchangeDataList" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SetRecordExchange" type="sif:SetRecordExchangeType" />


  <!--SetRecordExchangeResponse-->

  <xs:simpleType name="SetRecordExchangeResponseType">
    <xs:restriction base="xs:normalizedString">
      <xs:annotation>
        <xs:documentation>
			This object is empty. 
		</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="SetRecordExchangeResponse" type="sif:SetRecordExchangeResponseType" />


  <!--SetAcademicRecord-->

  <xs:complexType name="SetAcademicRecordType">
    <xs:sequence>
      <xs:element name="StudentId" minOccurs="0" type="sif:StateProvinceIdType">
        <xs:annotation>
          <xs:documentation>The StateProvinceId of the student. In the case where a SIF_ServiceInput message spans multiple packets, each packet must provide this element.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SendingAgencyId" minOccurs="0" type="sif:StateProvinceIdType">
        <xs:annotation>
          <xs:documentation>The StateProvinceId of the sending agency. In the case where a SIF_ServiceInput message spans multiple packets, each packet must provide this element.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ReceivingAgencyId" minOccurs="0" type="sif:StateProvinceIdType">
        <xs:annotation>
          <xs:documentation>The StateProvinceId of the receiving agency. In the case where a SIF_ServiceInput message spans multiple packets, each packet must provide this element.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ExtendedParameters" minOccurs="0" nillable="true" type="sif:ExtendedParametersType">
        <xs:annotation>
          <xs:documentation>Optional list of additional implementation-dependent parameters</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element ref="sif:StudentAcademicRecord" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SetAcademicRecord" type="sif:SetAcademicRecordType" />


  <!--SetAcademicRecordResponse-->

  <xs:simpleType name="SetAcademicRecordResponseType">
    <xs:restriction base="xs:normalizedString">
      <xs:annotation>
        <xs:documentation>
			This object is empty.
		</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="SetAcademicRecordResponse" type="sif:SetAcademicRecordResponseType" />


  <!--SetDemographicRecord-->

  <xs:complexType name="SetDemographicRecordType">
    <xs:sequence>
      <xs:element name="StudentId" minOccurs="0" type="sif:StateProvinceIdType">
        <xs:annotation>
          <xs:documentation>The StateProvinceId of the student. In the case where a SIF_ServiceInput message spans multiple packets, each packet must provide this element.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SendingAgencyId" minOccurs="0" type="sif:StateProvinceIdType">
        <xs:annotation>
          <xs:documentation>The StateProvinceId of the sending agency. In the case where a SIF_ServiceInput message spans multiple packets, each packet must provide this element.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ReceivingAgencyId" minOccurs="0" type="sif:StateProvinceIdType">
        <xs:annotation>
          <xs:documentation>The StateProvinceId of the receiving agency. In the case where a SIF_ServiceInput message spans multiple packets, each packet must provide this element.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ExtendedParameters" minOccurs="0" nillable="true" type="sif:ExtendedParametersType">
        <xs:annotation>
          <xs:documentation>Optional list of additional implementation-dependent parameters</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element ref="sif:StudentDemographicRecord" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SetDemographicRecord" type="sif:SetDemographicRecordType" />


  <!--SetDemographicRecordResponse-->

  <xs:simpleType name="SetDemographicRecordResponseType">
    <xs:restriction base="xs:normalizedString">
      <xs:annotation>
        <xs:documentation>
			This object is empty.
		</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="SetDemographicRecordResponse" type="sif:SetDemographicRecordResponseType" />


  <!--SetSpecialEducationRecord-->

  <xs:complexType name="SetSpecialEducationRecordType">
    <xs:sequence>
      <xs:element name="StudentId" minOccurs="0" type="sif:StateProvinceIdType">
        <xs:annotation>
          <xs:documentation>The StateProvinceId of the student. In the case where a SIF_ServiceInput message spans multiple packets, each packet must provide this element.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SendingAgencyId" minOccurs="0" type="sif:StateProvinceIdType">
        <xs:annotation>
          <xs:documentation>The StateProvinceId of the sending agency. In the case where a SIF_ServiceInput message spans multiple packets, each packet must provide this element.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ReceivingAgencyId" minOccurs="0" type="sif:StateProvinceIdType">
        <xs:annotation>
          <xs:documentation>The StateProvinceId of the receiving agency. In the case where a SIF_ServiceInput message spans multiple packets, each packet must provide this element.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ExtendedParameters" minOccurs="0" nillable="true" type="sif:ExtendedParametersType">
        <xs:annotation>
          <xs:documentation>Optional list of additional implementation-dependent parameters</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element ref="sif:StudentSpecialEducationRecord" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SetSpecialEducationRecord" type="sif:SetSpecialEducationRecordType" />


  <!--SetSpecialEducationRecordResponse-->

  <xs:simpleType name="SetSpecialEducationRecordResponseType">
    <xs:restriction base="xs:normalizedString">
      <xs:annotation>
        <xs:documentation>
			This object is empty.
		</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="SetSpecialEducationRecordResponse" type="sif:SetSpecialEducationRecordResponseType" />


  <!--Data Model Common Elements-->


  <!--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" minOccurs="0" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>
        This element is designed to contain the time period attached to an object.
        Very long periods (school year, quarter, etc.) and very small periods (second, millisecond, etc.) can be defined.
        This element provides a scoping description of the time metadata enclosed.
      </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Code" minOccurs="0" type="xs:token">
        <xs:annotation>
          <xs:documentation>
      This element provides a place for the application to send structured data (code values, unique identifier, timestamps).
      This code value can, depending upon the use case agreement between agents, be used to qualify the data in the </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Name" minOccurs="0" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>
      Contains a human-readable description of the value in </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Value" minOccurs="0" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Contains the human-readable value.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StartDateTime" minOccurs="0" nillable="true" type="xs:dateTime" />
      <xs:element name="EndDateTime" minOccurs="0" nillable="true" type="xs:dateTime" />
      <xs:element name="SpanGaps" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SpanGap" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Type" minOccurs="0" type="xs:normalizedString" />
                  <xs:element name="Code" minOccurs="0" type="xs:token" />
                  <xs:element name="Name" minOccurs="0" type="xs:normalizedString" />
                  <xs:element name="Value" minOccurs="0" type="xs:normalizedString" />
                  <xs:element name="StartDateTime" minOccurs="0" nillable="true" type="xs:dateTime" />
                  <xs:element name="EndDateTime" minOccurs="0" nillable="true" type="xs:dateTime" />
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="IsCurrent" minOccurs="0" type="xs:boolean">
        <xs:annotation>
          <xs:documentation>
      This element allows for the system to tag an object as being explicitly current.
      Although the baseline assumption in SIF is that objects are always current (default value is typically </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="TimeElement" type="sif:TimeElementType" />


  <!--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" minOccurs="0" type="xs:dateTime" />
            <xs:element name="Creators" minOccurs="0" nillable="true">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Creator" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="Name" minOccurs="0" type="xs:normalizedString">
                          <xs:annotation>
                            <xs:documentation>
      Human-readable name of the data's creator. If the object contains system-generated data,
      the name should identify the creating service or application.
    </xs:documentation>
                          </xs:annotation>
                        </xs:element>
                        <xs:element name="ID" minOccurs="0" type="xs:normalizedString">
                          <xs:annotation>
                            <xs:documentation>Unique identifier of the creator.  An email address or URI could be used here.</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="ModificationHistory" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Modified" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="By" minOccurs="0" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>Identifier of the system or person that modified the data.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="DateTime" minOccurs="0" type="xs:dateTime">
                    <xs:annotation>
                      <xs:documentation>The date/time the modification occurred.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="Description" minOccurs="0" nillable="true" type="xs:string">
                    <xs:annotation>
                      <xs:documentation>Human readable description of the data modifications.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="TimeElements" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="sif:TimeElement" minOccurs="0" maxOccurs="unbounded" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="LifeCycle" type="sif:LifeCycleType" />


  <!--RightsElement-->

  <xs:complexType name="RightsElementType">
    <xs:annotation>
      <xs:documentation>
        A common metadata element designed to carry any intellectual property or copyright information, based on the IEEE LOM Rights element [LOM].
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Cost" minOccurs="0" nillable="true" type="xs:boolean" />
      <xs:element name="FeesForUse" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="FeeForUse" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="UseType" minOccurs="0" type="xs:string">
                    <xs:annotation>
                      <xs:documentation>
      A description of the fee structure for this resource.
      Some resources may be licensed differently depending upon their context.
      For example, a content provider might charge one fee structure for resources used in the classroom and a separate fee for those
      resources available to parents from home.
    </xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="MeteringType" minOccurs="0" type="xs:token" />
                  <xs:element name="MeteringURL" minOccurs="0" nillable="true" type="xs:anyURI" />
                  <xs:element name="PerUseCharge" minOccurs="0" nillable="true" type="sif:MonetaryAmountType" />
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="CopyrightStatement" minOccurs="0" nillable="true" type="xs:string" />
      <xs:element name="TermsOfUse" minOccurs="0" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="RightsElement" type="sif:RightsElementType" />


  <!--EducationFilter-->

  <xs:complexType name="EducationFilterType">
    <xs:sequence>
      <xs:element name="MediaTypes" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="MediaType" minOccurs="0" maxOccurs="unbounded" type="xs:token" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="GradeLevels" minOccurs="0" nillable="true" type="sif:GradeLevelsType">
        <xs:annotation>
          <xs:documentation>Applicable grade levels as defined by SIF.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SubjectAreas" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="sif:SubjectArea" minOccurs="0" maxOccurs="unbounded" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="InterestLevels" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="InterestLevel" minOccurs="0" maxOccurs="unbounded" type="sif:GradeLevelType" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="LearningStandardItems" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="LearningStandardItemRefId" minOccurs="0" maxOccurs="unbounded" type="sif:IdRefType" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="BloomsTaxonomyLevels" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="BloomsTaxonomyLevel" minOccurs="0" maxOccurs="unbounded">
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="Knowledge" />
                  <xs:enumeration value="Comprehension" />
                  <xs:enumeration value="Application" />
                  <xs:enumeration value="Analysis" />
                  <xs:enumeration value="Synthesis" />
                  <xs:enumeration value="Evaluation" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="MultipleIntelligences" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="MultipleIntelligence" minOccurs="0" maxOccurs="unbounded">
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="Linguistic" />
                  <xs:enumeration value="Logical-Mathematical" />
                  <xs:enumeration value="Spatial" />
                  <xs:enumeration value="Musical" />
                  <xs:enumeration value="Bodily-Kinesthetic" />
                  <xs:enumeration value="Interpersonal" />
                  <xs:enumeration value="Intrapersonal" />
                  <xs:enumeration value="Naturalist" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="InstructionalStrategies" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="InstructionalStrategy" minOccurs="0" maxOccurs="unbounded">
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="Lecture" />
                  <xs:enumeration value="Online" />
                  <xs:enumeration value="Discussion" />
                  <xs:enumeration value="Cooperative Group" />
                  <xs:enumeration value="Scenario" />
                  <xs:enumeration value="Demonstration/Lab" />
                  <xs:enumeration value="Self-study" />
                  <xs:enumeration value="Problem-Based Learning" />
                  <xs:enumeration value="Project" />
                  <xs:enumeration value="Other" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Title" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The title of the content.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Summary" minOccurs="0" nillable="true" type="xs:string">
        <xs:annotation>
          <xs:documentation>A summary of the content.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LearningObjectives" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="LearningObjective" minOccurs="0" maxOccurs="unbounded" type="xs:string">
              <xs:annotation>
                <xs:documentation />
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="ResourceTypes" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="ResourceType" minOccurs="0" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation />
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="Supplemental Resource" />
                  <xs:enumeration value="Remedial Resource" />
                  <xs:enumeration value="Core Instructional Resource" />
                  <xs:enumeration value="Assessment" />
                  <xs:enumeration value="Other" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="EducationFilter" type="sif:EducationFilterType" />


  <!--EnglishProficiency-->

  <xs:complexType name="EnglishProficiencyType">
    <xs:sequence>
      <xs:element name="Code" minOccurs="0" type="sif:NCES0585EnglishProficiencyType">
        <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" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Code" minOccurs="0" type="sif:NISOZ3953LanguageCodesType">
              <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:NCES0327LanguageTypeType">
              <xs:annotation>
                <xs:documentation>An indication of the function and context in which an individual uses a language to communicate.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="Dialect" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Specific dialect of a person's language.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="LanguageList" type="sif:LanguageListType" />


  <!--PrimaryAssignment-->

  <xs:simpleType name="PrimaryAssignmentType">
    <xs:restriction base="xs:token">
      <xs:annotation>
        <xs:documentation>Is this the person's primary assignment?</xs:documentation>
      </xs:annotation>
      <xs:enumeration value="Yes" />
      <xs:enumeration value="No" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="PrimaryAssignment" type="sif:PrimaryAssignmentType" />


  <!--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" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:annotation>
            <xs:documentation>
        Name of the person.  Note: Type value of 04 may not occur here.
      </xs:documentation>
          </xs:annotation>
          <xs:complexContent>
            <xs:extension base="sif:OtherNameType">
              <xs:attribute name="SIF_Action" use="optional">
                <xs:annotation>
                  <xs:documentation>
        In a Change event, this flag can be used to indicate an element has been deleted from the parent list container.
        At a minimum the key for the list must also be present.
      </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="Delete" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="OtherNames" type="sif:OtherNamesType">
    <xs:unique name="OtherNamesKey1">
      <xs:selector xpath="./sif:Name" />
      <xs:field xpath="@Type" />
    </xs:unique>
  </xs:element>


  <!--PlannedAssessmentParticipation-->

  <xs:complexType name="PlannedAssessmentParticipationType">
    <xs:annotation>
      <xs:documentation>The student's planned level of participation in statewide assessments.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="xs:token">
        <xs:attribute name="Codeset" use="required">
          <xs:annotation>
            <xs:documentation>Identifies source of value provided.</xs:documentation>
          </xs:annotation>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="StateProvince" />
              <xs:enumeration value="Local">
                <xs:annotation>
                  <xs:documentation>e.g. district-specific</xs:documentation>
                </xs:annotation>
              </xs:enumeration>
              <xs:enumeration value="Other" />
              <xs:enumeration value="Text" />
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:element name="PlannedAssessmentParticipation" type="sif:PlannedAssessmentParticipationType" />


  <!--ExceptionalityCategories-->

  <xs:complexType name="ExceptionalityCategoriesType">
    <xs:sequence>
      <xs:element name="ExceptionalityCategory" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Code" minOccurs="0">
              <xs:annotation>
                <xs:documentation>
        Exceptionality description/code which identifies the exceptionality or areas of need of the student.
        Not all programs require identification of an exceptionality.
        If required for this program type, must have at least one element with ExceptionalityPriority value of Primary.
      </xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:union>
                  <xs:simpleType>
                    <xs:restriction base="sif:NCES0768PrimaryDisabilityTypeType" />
                  </xs:simpleType>
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:enumeration value="9999">
                        <xs:annotation>
                          <xs:documentation>Other (not valid for special education)</xs:documentation>
                        </xs:annotation>
                      </xs:enumeration>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:union>
              </xs:simpleType>
            </xs:element>
            <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
            <xs:element name="ExceptionalityPriority" minOccurs="0">
              <xs:annotation>
                <xs:documentation>Identifies priority of the exceptionality.  "Primary" is the first and is required even if only one exceptionality is specified. "Secondary", etc. are of lower priority. Primary, Secondary, and Tertiary must be specified before "Additional" is used.</xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="Primary">
                    <xs:annotation>
                      <xs:documentation>Identifies relative severity of disability - only one can be primary</xs:documentation>
                    </xs:annotation>
                  </xs:enumeration>
                  <xs:enumeration value="Secondary">
                    <xs:annotation>
                      <xs:documentation>Identifies relative severity of disability - only one can be secondary</xs:documentation>
                    </xs:annotation>
                  </xs:enumeration>
                  <xs:enumeration value="Tertiary">
                    <xs:annotation>
                      <xs:documentation>Identifies relative severity of disability - only one can be tertiary</xs:documentation>
                    </xs:annotation>
                  </xs:enumeration>
                  <xs:enumeration value="Additional">
                    <xs:annotation>
                      <xs:documentation>Multiple disabilities can be identified as "Additional"</xs:documentation>
                    </xs:annotation>
                  </xs:enumeration>
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ExceptionalityCategories" type="sif:ExceptionalityCategoriesType" />


  <!--ProgramStatus-->

  <xs:complexType name="ProgramStatusType">
    <xs:sequence>
      <xs:element name="Code" minOccurs="0">
        <xs:annotation>
          <xs:documentation>The current status of the student's program participation.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="S001">
              <xs:annotation>
                <xs:documentation>Referred</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="S002">
              <xs:annotation>
                <xs:documentation>Eligible</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="S003">
              <xs:annotation>
                <xs:documentation>Not Eligible</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="S004">
              <xs:annotation>
                <xs:documentation>Active</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="S005">
              <xs:annotation>
                <xs:documentation>Exited</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="S006">
              <xs:annotation>
                <xs:documentation>Withdrew/refused</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="9999">
              <xs:annotation>
                <xs:documentation>Other</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ProgramStatus" type="sif:ProgramStatusType" />


  <!--ProgramType-->

  <xs:complexType name="ProgramTypeType">
    <xs:sequence>
      <xs:element name="Code" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Identifies the individualized program for which the student's participation is described in this instance.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:union>
            <xs:simpleType>
              <xs:restriction base="sif:NCES0274StudentFamilyProgramTypeType">
                <xs:enumeration value="0241" />
                <xs:enumeration value="0242" />
                <xs:enumeration value="0244" />
                <xs:enumeration value="0245" />
                <xs:enumeration value="0248" />
                <xs:enumeration value="0875" />
                <xs:enumeration value="0249" />
                <xs:enumeration value="0250" />
                <xs:enumeration value="0876" />
                <xs:enumeration value="0251" />
                <xs:enumeration value="0253" />
                <xs:enumeration value="0255" />
                <xs:enumeration value="0256" />
                <xs:enumeration value="2389" />
                <xs:enumeration value="2381" />
                <xs:enumeration value="0246" />
                <xs:enumeration value="0283" />
                <xs:enumeration value="0284" />
                <xs:enumeration value="2393" />
                <xs:enumeration value="0263" />
                <xs:enumeration value="0265" />
                <xs:enumeration value="0267" />
                <xs:enumeration value="0289" />
                <xs:enumeration value="0270" />
                <xs:enumeration value="0272" />
                <xs:enumeration value="0278" />
                <xs:enumeration value="9999" />
              </xs:restriction>
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:NCES0229ProgramTypeType">
                <xs:enumeration value="0300" />
                <xs:enumeration value="0400" />
                <xs:enumeration value="0800" />
                <xs:enumeration value="1300" />
                <xs:enumeration value="1400" />
                <xs:enumeration value="1800" />
                <xs:enumeration value="1900" />
                <xs:enumeration value="2200" />
                <xs:enumeration value="2300" />
                <xs:enumeration value="2400" />
                <xs:enumeration value="2900" />
                <xs:enumeration value="3000" />
                <xs:enumeration value="3100" />
                <xs:enumeration value="3200" />
              </xs:restriction>
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="xs:token">
                <xs:enumeration value="S001">
                  <xs:annotation>
                    <xs:documentation>Supplemental education services</xs:documentation>
                  </xs:annotation>
                </xs:enumeration>
                <xs:enumeration value="S002">
                  <xs:annotation>
                    <xs:documentation>Early intervening services</xs:documentation>
                  </xs:annotation>
                </xs:enumeration>
                <xs:enumeration value="S003">
                  <xs:annotation>
                    <xs:documentation>Individual learning / graduation plan</xs:documentation>
                  </xs:annotation>
                </xs:enumeration>
                <xs:enumeration value="S004">
                  <xs:annotation>
                    <xs:documentation>Exchange program - foreign student attending district school</xs:documentation>
                  </xs:annotation>
                </xs:enumeration>
                <xs:enumeration value="S005">
                  <xs:annotation>
                    <xs:documentation>Exchange program - district student attending foreign school</xs:documentation>
                  </xs:annotation>
                </xs:enumeration>
                <xs:enumeration value="S006">
                  <xs:annotation>
                    <xs:documentation>Home schooling</xs:documentation>
                  </xs:annotation>
                </xs:enumeration>
                <xs:enumeration value="S007">
                  <xs:annotation>
                    <xs:documentation>Early childhood full-day program for 3-year-old students</xs:documentation>
                  </xs:annotation>
                </xs:enumeration>
                <xs:enumeration value="S008">
                  <xs:annotation>
                    <xs:documentation>Early childhood full-day program for 4-year-old students</xs:documentation>
                  </xs:annotation>
                </xs:enumeration>
                <xs:enumeration value="S009">
                  <xs:annotation>
                    <xs:documentation>Early childhood half-day program for 3-year-old students</xs:documentation>
                  </xs:annotation>
                </xs:enumeration>
                <xs:enumeration value="S010">
                  <xs:annotation>
                    <xs:documentation>Early childhood half-day program for 4-year-old students</xs:documentation>
                  </xs:annotation>
                </xs:enumeration>
                <xs:enumeration value="S011">
                  <xs:annotation>
                    <xs:documentation>Kindergarten full-day program</xs:documentation>
                  </xs:annotation>
                </xs:enumeration>
                <xs:enumeration value="S012">
                  <xs:annotation>
                    <xs:documentation>Kindergarten half-day program</xs:documentation>
                  </xs:annotation>
                </xs:enumeration>
                <xs:enumeration value="S013">
                  <xs:annotation>
                    <xs:documentation>Neglected and Delinquent (ESEA I-D)</xs:documentation>
                  </xs:annotation>
                </xs:enumeration>
                <xs:enumeration value="S014">
                  <xs:annotation>
                    <xs:documentation>Reading First (Title I-B-1 and I-B-2)</xs:documentation>
                  </xs:annotation>
                </xs:enumeration>
                <xs:enumeration value="S015">
                  <xs:annotation>
                    <xs:documentation>Education for homeless children and youths (MVHAA Title VII-B)</xs:documentation>
                  </xs:annotation>
                </xs:enumeration>
                <xs:enumeration value="S016">
                  <xs:annotation>
                    <xs:documentation>Rural education (ESEA VI-B)</xs:documentation>
                  </xs:annotation>
                </xs:enumeration>
              </xs:restriction>
            </xs:simpleType>
          </xs:union>
        </xs:simpleType>
      </xs:element>
      <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ProgramType" type="sif:ProgramTypeType" />


  <!--GraduationRequirement-->

  <xs:simpleType name="GraduationRequirementType">
    <xs:restriction base="xs:token">
      <xs:annotation>
        <xs:documentation>Does the state require that the course be completed for graduation?</xs:documentation>
      </xs:annotation>
      <xs:enumeration value="Yes" />
      <xs:enumeration value="No" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="GraduationRequirement" type="sif:GraduationRequirementType" />


  <!--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" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SubjectAreaList" type="sif:SubjectAreaListType" />


  <!--TermSpan-->

  <xs:complexType name="TermSpanType">
    <xs:sequence>
      <xs:element name="Code" minOccurs="0" type="sif:NCES0266SessionTypeType">
        <xs:annotation>
          <xs:documentation>Code for session type.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="TermSpan" type="sif:TermSpanType" />


  <!--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" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="PublishInDirectory" minOccurs="0" nillable="true" type="sif:PublishInDirectoryType">
              <xs:annotation>
                <xs:documentation>Indicates whether or not this school contact's information should be published in a directory of school information.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element ref="sif:ContactInfo" minOccurs="0" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SchoolContactList" type="sif:SchoolContactListType" />


  <!--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" />


  <!--LEAName-->

  <xs:simpleType name="LEANameType">
    <xs:restriction base="xs:normalizedString">
      <xs:annotation>
        <xs:documentation>Name of Local Education Agency.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="LEAName" type="sif:LEANameType" />


  <!--LastName-->

  <xs:simpleType name="LastNameType">
    <xs:restriction base="xs:normalizedString">
      <xs:annotation>
        <xs:documentation>A person's last name.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="LastName" type="sif:LastNameType" />


  <!--FirstName-->

  <xs:simpleType name="FirstNameType">
    <xs:restriction base="xs:normalizedString">
      <xs:annotation>
        <xs:documentation>A person's first name.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="FirstName" type="sif:FirstNameType" />


  <!--MiddleName-->

  <xs:simpleType name="MiddleNameType">
    <xs:restriction base="xs:normalizedString">
      <xs:annotation>
        <xs:documentation>A person's middle name or initial.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="MiddleName" type="sif:MiddleNameType" />


  <!--SSN-->

  <xs:simpleType name="SSNType">
    <xs:restriction base="xs:token">
      <xs:annotation>
        <xs:documentation>Social Security Number</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="SSN" type="sif:SSNType" />


  <!--IDEA-->

  <xs:simpleType name="IDEAType">
    <xs:restriction base="xs:token">
      <xs:annotation>
        <xs:documentation>Is the student IDEA-eligible ("special education")? (Mutually exclusive with Section 504 classification.)</xs:documentation>
      </xs:annotation>
      <xs:enumeration value="Yes" />
      <xs:enumeration value="No" />
      <xs:enumeration value="Unknown" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="IDEA" type="sif:IDEAType" />


  <!--Migrant-->

  <xs:simpleType name="MigrantType">
    <xs:restriction base="xs:token">
      <xs:annotation>
        <xs:documentation>Is this a migrant student?</xs:documentation>
      </xs:annotation>
      <xs:enumeration value="Yes" />
      <xs:enumeration value="No" />
      <xs:enumeration value="Unknown" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="Migrant" type="sif:MigrantType" />


  <!--Title1-->

  <xs:simpleType name="Title1Type">
    <xs:restriction base="xs:token">
      <xs:annotation>
        <xs:documentation>Is the student in Title 1 programs?</xs:documentation>
      </xs:annotation>
      <xs:enumeration value="Yes" />
      <xs:enumeration value="No" />
      <xs:enumeration value="Unknown" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="Title1" type="sif:Title1Type" />


  <!--GiftedTalented-->

  <xs:simpleType name="GiftedTalentedType">
    <xs:restriction base="xs:token">
      <xs:annotation>
        <xs:documentation>Is the student in Gifted/Talented programs?</xs:documentation>
      </xs:annotation>
      <xs:enumeration value="Yes" />
      <xs:enumeration value="No" />
      <xs:enumeration value="Unknown" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="GiftedTalented" type="sif:GiftedTalentedType" />


  <!--EconomicDisadvantage-->

  <xs:simpleType name="EconomicDisadvantageType">
    <xs:restriction base="xs:token">
      <xs:annotation>
        <xs:documentation>Does the student meet the State criteria for classification as having an economic disadvantage?</xs:documentation>
      </xs:annotation>
      <xs:enumeration value="Yes" />
      <xs:enumeration value="No" />
      <xs:enumeration value="Unknown" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="EconomicDisadvantage" type="sif:EconomicDisadvantageType" />


  <!--ELL-->

  <xs:simpleType name="ELLType">
    <xs:restriction base="xs:token">
      <xs:annotation>
        <xs:documentation>Is the student an English Language Learner under Title 3?</xs:documentation>
      </xs:annotation>
      <xs:enumeration value="Yes" />
      <xs:enumeration value="No" />
      <xs:enumeration value="Unknown" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="ELL" type="sif:ELLType" />


  <!--Homeless-->

  <xs:simpleType name="HomelessType">
    <xs:restriction base="xs:token">
      <xs:annotation>
        <xs:documentation>Is the student homeless?</xs:documentation>
      </xs:annotation>
      <xs:enumeration value="Yes" />
      <xs:enumeration value="No" />
      <xs:enumeration value="Unknown" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="Homeless" type="sif:HomelessType" />


  <!--Section504-->

  <xs:simpleType name="Section504Type">
    <xs:restriction base="xs:token">
      <xs:annotation>
        <xs:documentation>Is the student a qualified individual under Section 504 of the Rehabilitation Act? (Mututally exclusive with IDEA classification.)</xs:documentation>
      </xs:annotation>
      <xs:enumeration value="Yes" />
      <xs:enumeration value="No" />
      <xs:enumeration value="Unknown" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="Section504" type="sif:Section504Type" />


  <!--VocationalConcentrator-->

  <xs:simpleType name="VocationalConcentratorType">
    <xs:restriction base="xs:token">
      <xs:annotation>
        <xs:documentation>Does the student meet the State criteria for classification as a vocational concentrator?</xs:documentation>
      </xs:annotation>
      <xs:enumeration value="Yes" />
      <xs:enumeration value="No" />
      <xs:enumeration value="Unknown" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="VocationalConcentrator" type="sif:VocationalConcentratorType" />


  <!--Immigrant-->

  <xs:simpleType name="ImmigrantType">
    <xs:restriction base="xs:token">
      <xs:annotation>
        <xs:documentation>Does the student meet the State criteria for classification as being an immigrant?</xs:documentation>
      </xs:annotation>
      <xs:enumeration value="Yes" />
      <xs:enumeration value="No" />
      <xs:enumeration value="Unknown" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="Immigrant" type="sif:ImmigrantType" />


  <!--NeglectedDelinquent-->

  <xs:simpleType name="NeglectedDelinquentType">
    <xs:restriction base="xs:token">
      <xs:annotation>
        <xs:documentation>Is the student participating in programs for neglected, delinquent, or at risk children?</xs:documentation>
      </xs:annotation>
      <xs:enumeration value="Yes" />
      <xs:enumeration value="No" />
      <xs:enumeration value="Unknown" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="NeglectedDelinquent" type="sif:NeglectedDelinquentType" />


  <!--CourseCode-->

  <xs:simpleType name="CourseCodeType">
    <xs:restriction base="xs:normalizedString">
      <xs:annotation>
        <xs:documentation>School-defined local code for a course.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="CourseCode" type="sif:CourseCodeType" />


  <!--StateCourseCode-->

  <xs:simpleType name="StateCourseCodeType">
    <xs:restriction base="xs:normalizedString">
      <xs:annotation>
        <xs:documentation>State-defined standard course code used to report information about courses.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="StateCourseCode" type="sif:StateCourseCodeType" />


  <!--DistrictCourseCode-->

  <xs:simpleType name="DistrictCourseCodeType">
    <xs:restriction base="xs:normalizedString">
      <xs:annotation>
        <xs:documentation>A district course code.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="DistrictCourseCode" type="sif:DistrictCourseCodeType" />


  <!--CourseTitle-->

  <xs:simpleType name="CourseTitleType">
    <xs:restriction base="xs:normalizedString">
      <xs:annotation>
        <xs:documentation>Title of a course.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="CourseTitle" type="sif:CourseTitleType" />


  <!--IdentificationInfoList-->

  <xs:complexType name="IdentificationInfoListType">
    <xs:sequence>
      <xs:element ref="sif:IdentificationInfo" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="IdentificationInfoList" type="sif:IdentificationInfoListType" />


  <!--IdentificationInfo-->

  <xs:complexType name="IdentificationInfoType">
    <xs:annotation>
      <xs:documentation>Other identification information associated with a school or LEA.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="xs:normalizedString">
        <xs:attribute name="Code" use="required">
          <xs:annotation>
            <xs:documentation>Code indicating which identification system is used.</xs:documentation>
          </xs:annotation>
          <xs:simpleType>
            <xs:restriction base="sif:NCES0147IdentificationSystemType">
              <xs:enumeration value="0175" />
              <xs:enumeration value="0264" />
              <xs:enumeration value="0276" />
              <xs:enumeration value="0764" />
              <xs:enumeration value="9999" />
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:element name="IdentificationInfo" type="sif:IdentificationInfoType" />


  <!--CourseCredits-->

  <xs:complexType name="CourseCreditsType">
    <xs:annotation>
      <xs:documentation>The number of credits awarded upon course completion.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="sif:XSDecimalOrEmpty">
        <xs:attribute name="Type" use="required" type="sif:NCES0108CreditTypeEarnedType">
          <xs:annotation>
            <xs:documentation>The type of credit offered.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:element name="CourseCredits" type="sif:CourseCreditsType" />


  <!--InstructionalLevel-->

  <xs:complexType name="InstructionalLevelType">
    <xs:annotation>
      <xs:documentation>An indication of the general nature and difficulty of instruction provided.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Code" minOccurs="0" type="sif:NCES0437InstructionalLevelType">
        <xs:annotation>
          <xs:documentation>Code representing the general nature and difficulty of instruction provided.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="InstructionalLevel" type="sif:InstructionalLevelType" />


  <!--AddressList-->

  <xs:complexType name="AddressListType">
    <xs:annotation>
      <xs:documentation>A list of Address elements.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Address" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:complexContent>
            <xs:extension base="sif:AddressType">
              <xs:attribute name="SIF_Action" use="optional">
                <xs:annotation>
                  <xs:documentation>
        In a Change event, this flag can be used to indicate an element has been deleted from the parent list container.  At a minimum the key for the list must also be present.
      </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="Delete" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="AddressList" type="sif:AddressListType">
    <xs:unique name="AddressListKey1">
      <xs:selector xpath="./sif:Address" />
      <xs:field xpath="@Type" />
    </xs:unique>
  </xs:element>


  <!--Address-->

  <xs:complexType name="AddressType">
    <xs:annotation>
      <xs:documentation>This element contains address data.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Street" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Line1" minOccurs="0" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Address line 1.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="Line2" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Address line 2.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="Line3" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Address line 3.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="Complex" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Name of the complex.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="StreetNumber" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The address number assigned to the building.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="StreetPrefix" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Street prefix like NE</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="StreetName" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The name of the street.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="StreetType" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The type of street. For example, Lane, Blvd., Ave., etc.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="StreetSuffix" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Street suffix like SW.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="ApartmentType" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Type of apartment, for example, Suite.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="ApartmentNumberPrefix" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Apartment number prefix.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="ApartmentNumber" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The number of the apartment.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="ApartmentNumberSuffix" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Apartment number suffix.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="City" minOccurs="0" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The city part of the address.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="County" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The county part of the address.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element ref="sif:StateProvince" minOccurs="0" />
      <xs:element ref="sif:Country" minOccurs="0" />
      <xs:element name="PostalCode" minOccurs="0" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The ZIP/postal code.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="GridLocation" minOccurs="0" nillable="true" type="sif:GridLocationType">
        <xs:annotation>
          <xs:documentation>The location of the address.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="Type" use="required" type="sif:NCES0025AddressTypeType">
      <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:complexType>

  <xs:element name="Address" type="sif:AddressType" />


  <!--StateProvince-->

  <xs:simpleType name="StateProvinceType">
    <xs:annotation>
      <xs:documentation>A state or province code. Note: When dealing with countries other than the United States or Canada, state/province codes/values other than those referenced here can be used.</xs:documentation>
    </xs:annotation>
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="sif:USPSAbbreviationsType" />
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="sif:CanadaPostProvincesAndTerritoriesType" />
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:token" />
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>

  <xs:element name="StateProvince" type="sif:StateProvinceType" />


  <!--Country-->

  <xs:simpleType name="CountryType">
    <xs:annotation>
      <xs:documentation>A country code.</xs:documentation>
    </xs:annotation>
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="sif:ISO31661EnglishCountryNamesAndCodeElementsType" />
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="sif:ISO31663CodeForFormerlyUsedNamesOfCountriesType" />
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>

  <xs:element name="Country" type="sif:CountryType" />


  <!--CongressionalDistrict-->

  <xs:simpleType name="CongressionalDistrictType">
    <xs:annotation>
      <xs:documentation>
        Number for the US congressional district.  While typically numerical, this element does allow for text values to cover exceptions, e.g. to indicate an "at-large"
        district as in Wyoming.
      </xs:documentation>
    </xs:annotation>
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:unsignedInt" />
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:token" />
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>

  <xs:element name="CongressionalDistrict" type="sif:CongressionalDistrictType" />


  <!--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 name="Name" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Prefix" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>A prefix associated with the name like Mr., Ms., etc.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="LastName" minOccurs="0" nillable="true" type="sif:LastNameType">
              <xs:annotation>
                <xs:documentation>The last name.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="FirstName" minOccurs="0" nillable="true" type="sif:FirstNameType">
              <xs:annotation>
                <xs:documentation>The first name.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="MiddleName" minOccurs="0" nillable="true" type="sif:MiddleNameType">
              <xs:annotation>
                <xs:documentation>The middle name or initial.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="Suffix" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Generation of suffix like II, Jr., etc.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="PreferredName" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>This is a name that the person prefers to be called by.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="SortName" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>This is the name to be used for sorting purposes.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="FullName" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>
        A free text field for the complete name.  Mandatory if LastName and FirstName are omitted.
      </xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
          <xs:attribute name="Type" use="required">
            <xs:annotation>
              <xs:documentation>
        Code that specifies what type of name this is.  If unsure, use 04.
      </xs:documentation>
            </xs:annotation>
            <xs:simpleType>
              <xs:restriction base="xs:token">
                <xs:enumeration value="01">
                  <xs:annotation>
                    <xs:documentation>Given Name (Name at Birth)</xs:documentation>
                  </xs:annotation>
                </xs:enumeration>
                <xs:enumeration value="02">
                  <xs:annotation>
                    <xs:documentation>Current Legal</xs:documentation>
                  </xs:annotation>
                </xs:enumeration>
                <xs:enumeration value="03">
                  <xs:annotation>
                    <xs:documentation>Alias</xs:documentation>
                  </xs:annotation>
                </xs:enumeration>
                <xs:enumeration value="04">
                  <xs:annotation>
                    <xs:documentation>Name of Record</xs:documentation>
                  </xs:annotation>
                </xs:enumeration>
                <xs:enumeration value="05">
                  <xs:annotation>
                    <xs:documentation>Previous Name (sometimes called Maiden Name of Female Persons)</xs:documentation>
                  </xs:annotation>
                </xs:enumeration>
                <xs:enumeration value="07">
                  <xs:annotation>
                    <xs:documentation>Married Name</xs:documentation>
                  </xs:annotation>
                </xs:enumeration>
                <xs:enumeration value="08">
                  <xs:annotation>
                    <xs:documentation>Professional Name</xs:documentation>
                  </xs:annotation>
                </xs:enumeration>
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
        </xs:complexType>
      </xs:element>
      <xs:element name="PositionTitle" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The contact person's position title.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Role" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Role played by this contact in this instance.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Address" minOccurs="0" nillable="true" type="sif:AddressType">
        <xs:annotation>
          <xs:documentation>Address of the contact.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EmailList" minOccurs="0" nillable="true" type="sif:EmailListType">
        <xs:annotation>
          <xs:documentation>List of Email elements.</xs:documentation>
        </xs:annotation>
        <xs:unique name="EmailListKey1">
          <xs:selector xpath="./sif:Email" />
          <xs:field xpath="@Type" />
        </xs:unique>
      </xs:element>
      <xs:element name="PhoneNumberList" minOccurs="0" nillable="true" type="sif:PhoneNumberListType">
        <xs:annotation>
          <xs:documentation>List of PhoneNumber elements.</xs:documentation>
        </xs:annotation>
        <xs:unique name="PhoneNumberListKey1">
          <xs:selector xpath="./sif:PhoneNumber" />
          <xs:field xpath="@Type" />
        </xs:unique>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ContactInfo" type="sif:ContactInfoType" />


  <!--HispanicLatino-->

  <xs:simpleType name="HispanicLatinoType">
    <xs:restriction base="xs:token">
      <xs:annotation>
        <xs:documentation>
        An indication that the individual traces his or her origin or descent to Mexico, Puerto Rico, Cuba, Central or South America, or other Spanish
        cultures, regardless of race.
      </xs:documentation>
      </xs:annotation>
      <xs:enumeration value="Yes" />
      <xs:enumeration value="No" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="HispanicLatino" type="sif:HispanicLatinoType" />


  <!--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:IdRefTypeOrEmpty">
              <xs:attribute name="SIF_RefObject" use="required">
                <xs:annotation>
                  <xs:documentation>
      Type of SIF Object </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="SchoolInfo" />
                    <xs:enumeration value="LEAInfo" />
                    <xs:enumeration value="RoomInfo" />
                    <xs:enumeration value="LocationInfo" />
                  </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" />


  <!--RaceList-->

  <xs:complexType name="RaceListType">
    <xs:sequence>
      <xs:element name="Race" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Code" minOccurs="0">
              <xs:annotation>
                <xs:documentation>The general racial category which reflects the individual's recognition of his or her community or with which the individual most identifies.</xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:union>
                  <xs:simpleType>
                    <xs:restriction base="sif:NCES0849RaceType" />
                  </xs:simpleType>
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:enumeration value="A">
                        <xs:annotation>
                          <xs:documentation>Asian (deprecated)</xs:documentation>
                        </xs:annotation>
                      </xs:enumeration>
                      <xs:enumeration value="H">
                        <xs:annotation>
                          <xs:documentation>Hispanic (deprecated)</xs:documentation>
                        </xs:annotation>
                      </xs:enumeration>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:union>
              </xs:simpleType>
            </xs:element>
            <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
            <xs:element name="Proportion" minOccurs="0" nillable="true" type="xs:decimal">
              <xs:annotation>
                <xs:documentation>A percentage associated with the race.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="RaceList" type="sif:RaceListType" />


  <!--Gender-->

  <xs:simpleType name="GenderType">
    <xs:restriction base="xs:token">
      <xs:annotation>
        <xs:documentation>A person's gender.</xs:documentation>
      </xs:annotation>
      <xs:enumeration value="M">
        <xs:annotation>
          <xs:documentation>Male</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="F">
        <xs:annotation>
          <xs:documentation>Female</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="U">
        <xs:annotation>
          <xs:documentation>Unknown</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="Gender" type="sif:GenderType" />


  <!--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" />


  <!--Demographics-->

  <xs:complexType name="DemographicsType">
    <xs:annotation>
      <xs:documentation>
        Demographics information about the student, contact, staff member, etc. This element occurs within objects such as
        StudentPersonal, StudentContact, etc.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="RaceList" minOccurs="0" nillable="true" type="sif:RaceListType" />
      <xs:element name="HispanicLatino" minOccurs="0" nillable="true" type="sif:HispanicLatinoType" />
      <xs:element name="Gender" minOccurs="0" nillable="true" type="sif:GenderType">
        <xs:annotation>
          <xs:documentation>Person's gender.</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:NCES0315BirthdateVerificationType">
        <xs:annotation>
          <xs:documentation>Means by which the person's birth date was validated.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PlaceOfBirth" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The person's place of birth—like village, town, city etc.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CountyOfBirth" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The county in which the person was born.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StateOfBirth" minOccurs="0" nillable="true" type="sif:StateProvinceType">
        <xs:annotation>
          <xs:documentation>The person's state of birth.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CountryOfBirth" minOccurs="0" nillable="true" type="sif:CountryType">
        <xs:annotation>
          <xs:documentation>The person's country of birth.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CountriesOfCitizenship" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="CountryOfCitizenship" minOccurs="0" maxOccurs="unbounded" type="sif:CountryType">
              <xs:annotation>
                <xs:documentation>A person's country of citizenship.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="CountriesOfResidency" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="CountryOfResidency" minOccurs="0" maxOccurs="unbounded" type="sif:CountryType">
              <xs:annotation>
                <xs:documentation>A person's country of residence.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="CountryArrivalDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date the person first arrived in the country.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CitizenshipStatus" minOccurs="0" nillable="true" type="sif:NCES0322CitizenshipStatusType">
        <xs:annotation>
          <xs:documentation>The person's citizenship status.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EnglishProficiency" minOccurs="0" nillable="true" type="sif:EnglishProficiencyType">
        <xs:annotation>
          <xs:documentation>Person's proficiency in English.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LanguageList" minOccurs="0" nillable="true" type="sif:LanguageListType">
        <xs:annotation>
          <xs:documentation>List of languages an individual uses to communicate.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DwellingArrangement" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Code" minOccurs="0" type="sif:NCES0600DwellingArrangementType">
              <xs:annotation>
                <xs:documentation>Code representing the setting/environment in which the person resides</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="MaritalStatus" minOccurs="0" nillable="true" type="sif:NCES0330MaritalStatusType">
        <xs:annotation>
          <xs:documentation>The person's marital status.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="Demographics" type="sif:DemographicsType" />


  <!--EducationalLevel-->

  <xs:simpleType name="EducationalLevelType">
    <xs:restriction base="sif:NCES0332HighestLevelOfEducationCompletedType">
      <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" />


  <!--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" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ElectronicIdList" type="sif:ElectronicIdListType" />


  <!--ElectronicId-->

  <xs:complexType name="ElectronicIdType">
    <xs:annotation>
      <xs:documentation>
        Common element used to specify entity identifiers that are read by electronic equipment. It is used in objects such
        as StudentPersonal, StaffPersonal, and LibraryPatronStatus.
      </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="xs:normalizedString">
        <xs:attribute name="Type" use="required">
          <xs:annotation>
            <xs:documentation>Electronic Id type.</xs:documentation>
          </xs:annotation>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="Barcode" />
              <xs:enumeration value="Magstripe" />
              <xs:enumeration value="PIN" />
              <xs:enumeration value="RFID" />
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:element name="ElectronicId" type="sif:ElectronicIdType" />


  <!--EmailList-->

  <xs:complexType name="EmailListType">
    <xs:annotation>
      <xs:documentation>A list of e-mail addresses associated with an individual.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Email" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="sif:EmailType">
              <xs:attribute name="SIF_Action" use="optional">
                <xs:annotation>
                  <xs:documentation>
        In a Change event, this flag can be used to indicate an element has been deleted from the parent list container.  At a minimum the key for the list must also be present.
      </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="Delete" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="EmailList" type="sif:EmailListType">
    <xs:unique name="EmailListKey2">
      <xs:selector xpath="./sif:Email" />
      <xs:field xpath="@Type" />
    </xs:unique>
  </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, StudentContact, etc.
      </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="xs:normalizedString">
        <xs:attribute name="Type" use="required">
          <xs:annotation>
            <xs:documentation>This attribute specifies the type of e-mail address.</xs:documentation>
          </xs:annotation>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="Primary" />
              <xs:enumeration value="Alternate1" />
              <xs:enumeration value="Alternate2" />
              <xs:enumeration value="Alternate3" />
              <xs:enumeration value="Alternate4" />
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:element name="Email" type="sif:EmailType" />


  <!--EntryDate-->

  <xs:simpleType name="EntryDateType">
    <xs:restriction base="xs:date">
      <xs:annotation>
        <xs:documentation>The first date on which a student enters.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="EntryDate" type="sif:EntryDateType" />


  <!--ExitDate-->

  <xs:simpleType name="ExitDateType">
    <xs:restriction base="xs:date">
      <xs:annotation>
        <xs:documentation>The date on which a student exits.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="ExitDate" type="sif:ExitDateType" />


  <!--GradeLevel-->

  <xs:complexType name="GradeLevelType">
    <xs:annotation>
      <xs:documentation>Grade or academic level.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Code" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Code representing the grade level.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="PK">
              <xs:annotation>
                <xs:documentation>Pre-Kindergarten/Preschool</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="KG">
              <xs:annotation>
                <xs:documentation>Kindergarten</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="01" />
            <xs:enumeration value="02" />
            <xs:enumeration value="03" />
            <xs:enumeration value="04" />
            <xs:enumeration value="05" />
            <xs:enumeration value="06" />
            <xs:enumeration value="07" />
            <xs:enumeration value="08" />
            <xs:enumeration value="09" />
            <xs:enumeration value="10" />
            <xs:enumeration value="11" />
            <xs:enumeration value="12" />
            <xs:enumeration value="PG">
              <xs:annotation>
                <xs:documentation>Postgraduate/Adult</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="UN">
              <xs:annotation>
                <xs:documentation>Ungraded</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="Other" />
            <xs:enumeration value="Unknown" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="GradeLevel" type="sif:GradeLevelType" />


  <!--GradeLevels-->

  <xs:complexType name="GradeLevelsType">
    <xs:annotation>
      <xs:documentation>
        This is a common element used to specify a collection of grade levels supported. It is used in SchoolInfo and
        assessment-related objects.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:GradeLevel" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="GradeLevels" type="sif:GradeLevelsType" />


  <!--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" />


  <!--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" />


  <!--GridLocation-->

  <xs:complexType name="GridLocationType">
    <xs:annotation>
      <xs:documentation>
        This element contains a map location. The GridLocation element is utilized within other objects and elements, such
        as BusStopInfo and Address, etc.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Latitude" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="xs:decimal">
            <xs:annotation>
              <xs:documentation>Latitude in decimal degrees.</xs:documentation>
            </xs:annotation>
            <xs:minInclusive value="-90" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:maxInclusive value="90" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="Longitude" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="xs:decimal">
            <xs:annotation>
              <xs:documentation>Longitude in decimal degrees.</xs:documentation>
            </xs:annotation>
            <xs:minInclusive value="-180" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:maxInclusive value="180" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="GridLocation" type="sif:GridLocationType" />


  <!--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" />


  <!--LocalId-->

  <xs:simpleType name="LocalIdType">
    <xs:restriction base="xs:normalizedString">
      <xs:annotation>
        <xs:documentation>
        This is a common element used to define the locally assigned identifier associated with an entity. It is used in
        StudentPersonal, StaffPersonal, SchoolInfo, and other objects.
      </xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="LocalId" type="sif:LocalIdType" />


  <!--MeetingTime-->

  <xs:complexType name="MeetingTimeType">
    <xs:annotation>
      <xs:documentation>
        This element represents the meeting times and periods for a course, and occurs within objects such as SectionInfo
        and StudentSectionEnrollment.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="TimetableDay" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Locally defined rotation cycle day code when the section meets (e.g., in a two day schedule, valid values would be "A" and "B," or "1" and "2").</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TimetablePeriod" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The period within the day when this section takes place (e.g., "0" through "7").</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="MeetingTime" type="sif:MeetingTimeType" />


  <!--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, StudentContact, StaffPersonal, etc.
    </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="sif:BaseNameType">
        <xs:attribute name="Type" use="required">
          <xs:annotation>
            <xs:documentation>
        Code that specifies what type of name this is.  If unsure, use 04.
      </xs:documentation>
          </xs:annotation>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="01">
                <xs:annotation>
                  <xs:documentation>Given Name (Name at Birth)</xs:documentation>
                </xs:annotation>
              </xs:enumeration>
              <xs:enumeration value="02">
                <xs:annotation>
                  <xs:documentation>Current Legal</xs:documentation>
                </xs:annotation>
              </xs:enumeration>
              <xs:enumeration value="03">
                <xs:annotation>
                  <xs:documentation>Alias</xs:documentation>
                </xs:annotation>
              </xs:enumeration>
              <xs:enumeration value="04">
                <xs:annotation>
                  <xs:documentation>Name of Record</xs:documentation>
                </xs:annotation>
              </xs:enumeration>
              <xs:enumeration value="05">
                <xs:annotation>
                  <xs:documentation>Previous Name (sometimes called Maiden Name of Female Persons)</xs:documentation>
                </xs:annotation>
              </xs:enumeration>
              <xs:enumeration value="07">
                <xs:annotation>
                  <xs:documentation>Married Name</xs:documentation>
                </xs:annotation>
              </xs:enumeration>
              <xs:enumeration value="08">
                <xs:annotation>
                  <xs:documentation>Professional Name</xs:documentation>
                </xs:annotation>
              </xs:enumeration>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:element name="Name" type="sif:NameType" />


  <!--NCESId-->

  <xs:simpleType name="NCESIdType">
    <xs:restriction base="xs:normalizedString">
      <xs:annotation>
        <xs:documentation>
        This is a common element used to define the identifier assigned by the National Center for Education Statistics that
        is associated with an entity. It is used in SchoolInfo, LEAInfo, and other objects.
      </xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="NCESId" type="sif:NCESIdType" />


  <!--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:NCES0256SchoolStatusType" />
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="sif:NCES0032AgencyStatusType" />
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>

  <xs:element name="OperationalStatus" type="sif:OperationalStatusType" />


  <!--OtherId-->

  <xs:complexType name="OtherIdType">
    <xs:annotation>
      <xs:documentation>
        An "other" identifier associated with a person. This element occurs in objects such as StudentPersonal and
        StaffPersonal, etc.
      </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="xs:normalizedString">
        <xs:attribute name="Type" use="required" type="sif:NCES0147IdentificationSystemType">
          <xs:annotation>
            <xs:documentation>Code that defines the type of this other Id.  Note: A subset of valid values may be specified in data objects.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:element name="OtherId" type="sif:OtherIdType" />


  <!--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" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:complexContent>
            <xs:extension base="sif:PhoneNumberType">
              <xs:attribute name="SIF_Action" use="optional">
                <xs:annotation>
                  <xs:documentation>
        In a Change event, this flag can be used to indicate an element has been deleted from the parent list container.  At a minimum the key for the list must also be present.
      </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="Delete" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="PhoneNumberList" type="sif:PhoneNumberListType">
    <xs:unique name="PhoneNumberListKey2">
      <xs:selector xpath="./sif:PhoneNumber" />
      <xs:field xpath="@Type" />
    </xs:unique>
  </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" minOccurs="0" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Phone number.  Free-form, but typical U.S. 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">
        <xs:annotation>
          <xs:documentation>Indicates whether or not the phone number is available to the public.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Listed" />
            <xs:enumeration value="Unlisted" />
            <xs:enumeration value="Unknown" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="Type" use="required" type="sif:NCES0280TelephoneNumberTypeType">
      <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" />


  <!--Program-->

  <xs:complexType name="ProgramType">
    <xs:annotation>
      <xs:documentation>Program value.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="xs:normalizedString">
        <xs:attribute name="Type" use="required">
          <xs:annotation>
            <xs:documentation>The type of the program. Type identifies the list of values.</xs:documentation>
          </xs:annotation>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="Foodservice" />
              <xs:enumeration value="CFDA" />
              <xs:enumeration value="NCES">
                <xs:annotation>
                  <xs:documentation>Code from the NCES Handbook</xs:documentation>
                </xs:annotation>
              </xs:enumeration>
              <xs:enumeration value="StateDOE">
                <xs:annotation>
                  <xs:documentation>Code defined by the State Department of Education</xs:documentation>
                </xs:annotation>
              </xs:enumeration>
              <xs:enumeration value="Local">
                <xs:annotation>
                  <xs:documentation>Locally-defined code</xs:documentation>
                </xs:annotation>
              </xs:enumeration>
              <xs:enumeration value="Text">
                <xs:annotation>
                  <xs:documentation>Textual description</xs:documentation>
                </xs:annotation>
              </xs:enumeration>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:element name="Program" type="sif:ProgramType" />


  <!--PublishInDirectory-->

  <xs:simpleType name="PublishInDirectoryType">
    <xs:restriction base="xs:token">
      <xs:annotation>
        <xs:documentation>Indicates whether or not information should be published in a directory.</xs:documentation>
      </xs:annotation>
      <xs:enumeration value="Yes" />
      <xs:enumeration value="No" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="PublishInDirectory" type="sif:PublishInDirectoryType" />


  <!--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" minOccurs="0" type="sif:NCES0609RelationshipToStudentType">
        <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" />


  <!--SchoolName-->

  <xs:simpleType name="SchoolNameType">
    <xs:restriction base="xs:normalizedString">
      <xs:annotation>
        <xs:documentation>The name of the school.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="SchoolName" type="sif:SchoolNameType" />


  <!--SchoolYear-->

  <xs:simpleType name="SchoolYearType">
    <xs:restriction base="xs:gYear">
      <xs:annotation>
        <xs:documentation>School year for which this information is applicable, expressed as the four-digit year in which the school year ends (e.g., "2004" for the 2003-04 school year).</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="SchoolYear" type="sif:SchoolYearType" />


  <!--SCEDCode-->

  <xs:complexType name="SCEDCodeType">
    <xs:annotation>
      <xs:documentation>Course code from the School Codes for the Exchange of Data that describe the content of the course.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="CourseDescription" minOccurs="0" type="sif:SCEDCourseTitlesType">
        <xs:annotation>
          <xs:documentation>Five-digit number. Subject areas are represented by the first two digits, the last three digits specify a particular course within the subject area.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CourseLevel" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Conveys the level of the course.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="B">
              <xs:annotation>
                <xs:documentation>Basic or remedial</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="G">
              <xs:annotation>
                <xs:documentation>General or regular</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="E">
              <xs:annotation>
                <xs:documentation>Enriched or advanced</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="H">
              <xs:annotation>
                <xs:documentation>Honors</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="AvailableCredit" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="xs:decimal">
            <xs:annotation>
              <xs:documentation>Identifies the amount of credit available to a student who successfully meets the objectives of the course, measured in Carnegie units (9.99 format).</xs:documentation>
            </xs:annotation>
            <xs:minInclusive value="0" 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="SequenceNumber" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="xs:unsignedInt">
            <xs:annotation>
              <xs:documentation>One-digit number describing where a specific course lies when it is part of a consecutive sequence of courses described by the same general course description.</xs:documentation>
            </xs:annotation>
            <xs:minInclusive value="1" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:maxInclusive value="9" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SequenceLimit" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="xs:unsignedInt">
            <xs:annotation>
              <xs:documentation>One-digit number representing the total number of courses in the consecutive sequence described by the same general course description.</xs:documentation>
            </xs:annotation>
            <xs:minInclusive value="1" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:maxInclusive value="9" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SCEDCode" type="sif:SCEDCodeType" />


  <!--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" />


  <!--SubjectArea-->

  <xs:complexType name="SubjectAreaType">
    <xs:annotation>
      <xs:documentation>
        This is a common element used to designate the subject area of a course or other learning materials, or a department. It is used in
        SchoolCourseInfo and learning-related objects.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Code" minOccurs="0">
        <xs:annotation>
          <xs:documentation>The subject area code (i.e., the first two digits of the course classification code).</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:union>
            <xs:simpleType>
              <xs:restriction base="sif:SCEDSecondaryCoursesType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:SCEDNonSecondaryCoursesType" />
            </xs:simpleType>
          </xs:union>
        </xs:simpleType>
      </xs:element>
      <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SubjectArea" type="sif:SubjectAreaType" />


  <!--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" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
        A state/province code, local code, other code or a text string that crosswalks to or serves as a translation of an associated Code element.
      </xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:token">
              <xs:attribute name="Codeset" use="required">
                <xs:annotation>
                  <xs:documentation>
        Describes the OtherCode element content as either a state/province code, a local code, other code, or text string.
      </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="StateProvince" />
                    <xs:enumeration value="Local" />
                    <xs:enumeration value="Other" />
                    <xs:enumeration value="Text" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="OtherCodeList" type="sif:OtherCodeListType" />


  <!--MealStatus-->

  <xs:complexType name="MealStatusType">
    <xs:annotation>
      <xs:documentation>This gives information about a student's meal status.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="StartDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date on which meal status became effective (inclusive).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EndDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>
        Date on which meal status was last in effect, if in the past.
        This element can't exist without a StartDate.
      </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., 2004 for the 2003-04 school year).
      </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="Type" use="required">
      <xs:annotation>
        <xs:documentation>Meal status type.</xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="Free" />
          <xs:enumeration value="Reduced" />
          <xs:enumeration value="None" />
          <xs:enumeration value="NA" />
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="MealStatus" type="sif:MealStatusType" />


  <!--EarnedStatus-->

  <xs:complexType name="EarnedStatusType">
    <xs:annotation>
      <xs:documentation>This gives information about a staff member's meal status.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="StartDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date on which earned status became effective (inclusive).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EndDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date on which earned status was last in effect. This attribute is conditional upon the StartDate element. It exists only if the StartDate element exists.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="Type" use="required">
      <xs:annotation>
        <xs:documentation>Earned status type.</xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="Yes" />
          <xs:enumeration value="No" />
          <xs:enumeration value="NA" />
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="EarnedStatus" type="sif:EarnedStatusType" />


  <!--MealType-->

  <xs:simpleType name="MealTypeType">
    <xs:restriction base="xs:token">
      <xs:annotation>
        <xs:documentation>This gives information about a meal type.</xs:documentation>
      </xs:annotation>
      <xs:enumeration value="FirstMeal" />
      <xs:enumeration value="SecondMeal" />
      <xs:enumeration value="StaffMeal" />
      <xs:enumeration value="AdultMeal" />
      <xs:enumeration value="AlaCarte" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="MealType" type="sif:MealTypeType" />


  <!--OtherIdList-->

  <xs:complexType name="OtherIdListType">
    <xs:annotation>
      <xs:documentation>Common XML structure for a list of other Ids related to the object.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:OtherId" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="OtherIdList" type="sif:OtherIdListType" />


  <!--PersonInfo-->

  <xs:complexType name="PersonInfoType">
    <xs:annotation>
      <xs:documentation>A wrapper element for information that describes a generic person.  This element may be used as a basic building block for person-type objects.</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 object instance with the same LocalId.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="OtherIdList" minOccurs="0" nillable="true" type="sif:OtherIdListType">
        <xs:annotation>
          <xs:documentation>Lists all "other" identifiers associated with the person.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Name" minOccurs="0" type="sif:NameOfRecordType">
        <xs:annotation>
          <xs:documentation>The name of the person. Note: Type attribute value of 04 must be used here.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="OtherNames" minOccurs="0" nillable="true" type="sif:OtherNamesType">
        <xs:annotation>
          <xs:documentation>Previous, alternate or other names or aliases associated with the person.</xs:documentation>
        </xs:annotation>
        <xs:unique name="OtherNamesKey2">
          <xs:selector xpath="./sif:Name" />
          <xs:field xpath="@Type" />
        </xs:unique>
      </xs:element>
      <xs:element name="Demographics" minOccurs="0" nillable="true" type="sif:DemographicsType">
        <xs:annotation>
          <xs:documentation>This element contains information related to person's demographics.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AddressList" minOccurs="0" nillable="true" type="sif:AddressListType">
        <xs:annotation>
          <xs:documentation>The person's address(es).</xs:documentation>
        </xs:annotation>
        <xs:unique name="AddressListKey2">
          <xs:selector xpath="./sif:Address" />
          <xs:field xpath="@Type" />
        </xs:unique>
      </xs:element>
      <xs:element name="PhoneNumberList" minOccurs="0" nillable="true" type="sif:PhoneNumberListType">
        <xs:annotation>
          <xs:documentation>The person's phone number(s).</xs:documentation>
        </xs:annotation>
        <xs:unique name="PhoneNumberListKey3">
          <xs:selector xpath="./sif:PhoneNumber" />
          <xs:field xpath="@Type" />
        </xs:unique>
      </xs:element>
      <xs:element name="EmailList" minOccurs="0" nillable="true" type="sif:EmailListType">
        <xs:annotation>
          <xs:documentation>The person's e-mail address(es).</xs:documentation>
        </xs:annotation>
        <xs:unique name="EmailListKey3">
          <xs:selector xpath="./sif:Email" />
          <xs:field xpath="@Type" />
        </xs:unique>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="PersonInfo" type="sif:PersonInfoType" />


  <!--TechnicalRequirements-->

  <xs:complexType name="TechnicalRequirementsType">
    <xs:annotation>
      <xs:documentation>A list of operating system, network, and other technical requirements.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="TechnicalRequirement" minOccurs="0" maxOccurs="unbounded" type="xs:string">
        <xs:annotation>
          <xs:documentation>an operating system, network, or other technical requirement.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="TechnicalRequirements" type="sif:TechnicalRequirementsType" />


  <!--SoftwareRequirementList-->

  <xs:complexType name="SoftwareRequirementListType">
    <xs:annotation>
      <xs:documentation>Contains information about required software.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SoftwareRequirement" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SoftwareTitle" minOccurs="0" type="xs:string">
              <xs:annotation>
                <xs:documentation>This is the title of the specific software.  This does not include the vendor.  For example, Flash not Adobe.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="Version" minOccurs="0" nillable="true" type="xs:string">
              <xs:annotation>
                <xs:documentation>This includes the version of the specific software.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="Vendor" minOccurs="0" nillable="true" type="xs:string">
              <xs:annotation>
                <xs:documentation>This is the vendor of the specific software.  For example, Adobe.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="OS" minOccurs="0" nillable="true" type="xs:string">
              <xs:annotation>
                <xs:documentation>This is the operating system and version.  For example, Macintosh OS X 1.4.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SoftwareRequirementList" type="sif:SoftwareRequirementListType" />


  <!--ExtendedParameters-->

  <xs:complexType name="ExtendedParametersType">
    <xs:annotation>
      <xs:documentation>A list of ExtendedParameter elements</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="ExtendedParameter" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Name" minOccurs="0" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The name of the parameter</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="SIF_Value" minOccurs="0" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The value of the parameter	</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ExtendedParameters" type="sif:ExtendedParametersType" />


  <!--StudentRecordExchangeDataList-->

  <xs:complexType name="StudentRecordExchangeDataListType">
    <xs:annotation>
      <xs:documentation />
    </xs:annotation>
    <xs:sequence>
      <xs:element name="StudentRecordExchangeData" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="StudentRecordExchange" minOccurs="0" nillable="true" type="sif:StudentRecordExchangeType">
              <xs:annotation>
                <xs:documentation>The StudentRecordExchange object set for the student and sending agency that was requested by the GetStudentRecordExchange method. The object set is contained in a composite StudentRecordExchangeData object. To allow for packetizing of StudentRecordExchange object sets, there should be one instance of the StudentRecordExchangeData object for each object it contains.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="StudentDemographicRecord" minOccurs="0" nillable="true" type="sif:StudentDemographicRecordType">
              <xs:annotation>
                <xs:documentation>The StudentDemographicRecord object referenced by the StudentRecordExchange/Records/StudentDemographicRecordRefId element. At most one of this or one of the other Conditional elements must be provided in a StudentRecordExchangeData instance.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="StudentAcademicRecord" minOccurs="0" nillable="true" type="sif:StudentAcademicRecordType">
              <xs:annotation>
                <xs:documentation>The StudentAcademicRecord object referenced by the StudentRecordExchange/Records/StudentAcademicRecordRefId element. At most one of this or one of the other Conditional elements must be provided in a StudentRecordExchangeData instance.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="StudentSpecialEducationRecord" minOccurs="0" nillable="true" type="sif:StudentSpecialEducationRecordType">
              <xs:annotation>
                <xs:documentation>The StudentSpecialEducationRecord object referenced by the StudentRecordExchange/Records/StudentSpecialEducationRecordRefId element. At most one of this or one of the other Conditional elements must be provided in a StudentRecordExchangeData instance.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="StudentRecordPackage" minOccurs="0" nillable="true" type="sif:StudentRecordPackageType">
              <xs:annotation>
                <xs:documentation>A StudentRecordPackage object referenced by the StudentRecordExchange/Records/OtherRecords element. At most one of this or one of the other Conditional elements must be provided in a StudentRecordExchangeData instance.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="StudentRecordExchangeDataList" type="sif:StudentRecordExchangeDataListType" />


  <!--SIF_Metadata-->

  <xs:complexType name="SIF_MetadataType">
    <xs:annotation>
      <xs:documentation>A commonly defined container for metadata elements defined within SIF.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="TimeElements" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="sif:TimeElement" minOccurs="0" maxOccurs="unbounded" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="LifeCycle" minOccurs="0" nillable="true" type="sif:LifeCycleType" />
      <xs:element name="RightsElements" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="sif:RightsElement" minOccurs="0" maxOccurs="unbounded" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="EducationFilter" minOccurs="0" nillable="true" type="sif:EducationFilterType" />
    </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:unique name="SIF_ExtendedElementsKey1">
      <xs:selector xpath="./sif:SIF_ExtendedElement" />
      <xs:field xpath="@Name" />
    </xs:unique>
  </xs:element>


  <!--DataModelTaskForce-->


  <!--SEAInfo-->

  <xs:complexType name="SEAInfoType">
    <xs:annotation>
      <xs:documentation>This object is designed to facilitate the transfer of State Education Agency (SEA) directory information to the Department of Education (USED) through the Education Data Exchange Network (EDEN).</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 SEA.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="NCESId" minOccurs="0" nillable="true" type="sif:NCESIdType">
        <xs:annotation>
          <xs:documentation>The NCES-assigned identifier for this SEA.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SEAName" minOccurs="0" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The full legally accepted name of the SEA.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SEAURL" minOccurs="0" nillable="true" type="xs:anyURI">
        <xs:annotation>
          <xs:documentation>URL for the SEA.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CSSOContact" minOccurs="0" type="sif:ContactInfoType">
        <xs:annotation>
          <xs:documentation>Chief State School Officer contact information.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SEAContactList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SEAContact" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="PublishInDirectory" minOccurs="0" nillable="true" type="sif:PublishInDirectoryType">
                    <xs:annotation>
                      <xs:documentation>Indicates whether or not this SEA contact's information should be published in a directory of SEA information.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element ref="sif:ContactInfo" minOccurs="0" />
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="PhoneNumberList" minOccurs="0" nillable="true" type="sif:PhoneNumberListType">
        <xs:annotation>
          <xs:documentation>The SEA's phone number(s).</xs:documentation>
        </xs:annotation>
        <xs:unique name="PhoneNumberListKey4">
          <xs:selector xpath="./sif:PhoneNumber" />
          <xs:field xpath="@Type" />
        </xs:unique>
      </xs:element>
      <xs:element name="AddressList" minOccurs="0" nillable="true" type="sif:AddressListType">
        <xs:annotation>
          <xs:documentation>The SEA's address(es).</xs:documentation>
        </xs:annotation>
        <xs:unique name="AddressListKey3">
          <xs:selector xpath="./sif:Address" />
          <xs:field xpath="@Type" />
        </xs:unique>
      </xs:element>
      <xs:element name="OperationalStatus" minOccurs="0" nillable="true" type="sif:OperationalStatusType">
        <xs:annotation>
          <xs:documentation>Operational condition of an SEA.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EDENInfo" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="FIPSStateCode" minOccurs="0" nillable="true">
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:annotation>
                    <xs:documentation>The two-digit Federal Information Processing Standard (FIPS) Code for the State, District of Columbia, and the possessions and freely associated areas of the United States (e.g. Puerto Rico).</xs:documentation>
                  </xs:annotation>
                  <xs:pattern value="[0-9]{2}|[A-Z]{2}" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
            <xs:element name="AgencyIdNumber" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>A number used in EDEN to uniquely uniquely identify state agencies.</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:unique name="SIF_ExtendedElementsKey2">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:unique>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The GUID of the SEA whose information this is.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="SEAInfo" type="sif:SEAInfoType">
    <xs:unique name="SEAInfoKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:unique>
  </xs:element>


  <!--StudentLEARelationship-->

  <xs:complexType name="StudentLEARelationshipType">
    <xs:annotation>
      <xs:documentation>
        The purpose of the StudentLEARelationship object is to represent the current information available regarding a single student's
        relationship/affiliation to a single LEA for a specific school year as of the time a SIF_Event or SIF_Response is generated
        by the system of record. This object is not designed to operate on a historical/longitudinal basis in the default context.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="MembershipType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
        The type of this affiliation as it relates to the LEA identified in LEAInfoRefId.
      </xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Home">
              <xs:annotation>
                <xs:documentation>The LEA is responsible for reporting the student's membership/child accounting information.</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="Concurrent">
              <xs:annotation>
                <xs:documentation>The LEA is not the primary reporting unit for the student's membership/child accounting information.</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="Summer">
              <xs:annotation>
                <xs:documentation>A summer school enrollment, not part of the regular school year.</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="LEARelationshipType" minOccurs="0" type="sif:OrganizationRelationshipType">
        <xs:annotation>
          <xs:documentation>An instance of the OrganizationRelationshipType common element that describes the details of the student's affiliation with the LEA.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EntryDate" minOccurs="0" type="xs:date">
        <xs:annotation>
          <xs:documentation>The date from when this affiliation is valid.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EntryType" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Code" minOccurs="0" type="sif:NCES0619EntryTypeType">
              <xs:annotation>
                <xs:documentation>Code indicating the type of entry for this affiliation.</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="ExitDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>The last school calendar day (membership day) the student was affiliated with the LEA (inclusive).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ExitType" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Code" minOccurs="0" type="sif:NCES0644ExitWithdrawalTypeType">
              <xs:annotation>
                <xs:documentation>Code indicating the type of exit for this affiliation.</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="ExitStatus" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Code" minOccurs="0" type="sif:NCES0643ExitWithdrawalStatusType">
              <xs:annotation>
                <xs:documentation>Code indicating the exit status for this affiliation.</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="NonResidentAttendReason" minOccurs="0" nillable="true" type="sif:NCES0599NonResidentAttendanceRationaleType">
        <xs:annotation>
          <xs:documentation>Indicates the reason that the student has an affiliation with this LEA if the student is a not a resident of the LEA.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="GradeLevel" minOccurs="0" nillable="true" type="sif:GradeLevelType">
        <xs:annotation>
          <xs:documentation>The grade or academic level of the student.</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:unique name="SIF_ExtendedElementsKey3">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:unique>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The unique identifier for a particular affiliation between a student and a LEA.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="StudentPersonalRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>
        The SIF RefId of the StudentPersonal object to which this instance of StudentLEARelationship refers.
      </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="LEAInfoRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>
        The SIF RefId of the LEAInfo object to which this instance of StudentLEARelationship refers.
      </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="SchoolYear" use="required" type="sif:SchoolYearType">
      <xs:annotation>
        <xs:documentation>
        Contains the SIF school year to which this instance of StudentLEARelationship applies. StudentLEARelationship must not span multiple school years.
      </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="StudentLEARelationship" type="sif:StudentLEARelationshipType">
    <xs:unique name="StudentLEARelationshipKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:unique>
  </xs:element>


  <!--DataWarehouseWorkingGroup-->


  <!--AggregateStatisticInfo-->

  <xs:complexType name="AggregateStatisticInfoType">
    <xs:annotation>
      <xs:documentation>This object defines the data that is being aggregated as well as the type of measurement that is being performed.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="StatisticName" minOccurs="0" type="xs:token">
        <xs:annotation>
          <xs:documentation>Name of Aggregate Statistic</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CalculationRule" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>Rule for calculating the aggregate statistic</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:string">
              <xs:attribute name="Type" use="required">
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="Description" />
                    <xs:enumeration value="Formula" />
                    <xs:enumeration value="URL" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="ApprovalDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date for which the statistic is initially valid</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ExpirationDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date after which the statistic is no longer valid</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ExclusionRules" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="ExclusionRule" minOccurs="0" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation>Rule for which statistic may not be reported</xs:documentation>
              </xs:annotation>
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:string">
                    <xs:attribute name="Type" use="required">
                      <xs:simpleType>
                        <xs:restriction base="xs:token">
                          <xs:enumeration value="SampleSize" />
                          <xs:enumeration value="Description" />
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:attribute>
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Source" minOccurs="0" nillable="true" type="xs:token">
        <xs:annotation>
          <xs:documentation>System providing the data: i.e., SIS, Transportation,</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EffectiveDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Effective date of the statistic</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DiscontinueDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Discontinue date of the statistic</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Location" minOccurs="0" nillable="true">
        <xs:complexType>
          <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 SchoolInfo.
      </xs:documentation>
                </xs:annotation>
                <xs:simpleContent>
                  <xs:extension base="sif:IdRefTypeOrEmpty">
                    <xs:attribute name="SIF_RefObject" use="required">
                      <xs:annotation>
                        <xs:documentation>
        Type of SIF object Location points to.
      </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="required">
            <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:restriction>
            </xs:simpleType>
          </xs:attribute>
        </xs:complexType>
      </xs:element>
      <xs:element name="Measure" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>Type of the statistic.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Count" />
            <xs:enumeration value="Minimum" />
            <xs:enumeration value="Maximum" />
            <xs:enumeration value="Percent" />
            <xs:enumeration value="Mean" />
            <xs:enumeration value="Median" />
            <xs:enumeration value="Mode" />
            <xs:enumeration value="Sum" />
            <xs:enumeration value="StandardDeviation" />
            <xs:enumeration value="UnduplicatedCount" />
            <xs:enumeration value="FTE" />
            <xs:enumeration value="Other" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType">
        <xs:unique name="SIF_ExtendedElementsKey4">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:unique>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>Key</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="AggregateStatisticInfo" type="sif:AggregateStatisticInfoType">
    <xs:unique name="AggregateStatisticInfoKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:unique>
  </xs:element>


  <!--AggregateCharacteristicInfo-->

  <xs:complexType name="AggregateCharacteristicInfoType">
    <xs:annotation>
      <xs:documentation>This object defines the attribute of a group of objects that implicitly or explicitly defines a subset of the group.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Description" minOccurs="0" nillable="true" type="xs:string">
        <xs:annotation>
          <xs:documentation>
        Describes the supercategory of the characteristic described in the Definition element below.
      </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Definition" minOccurs="0" type="xs:token">
        <xs:annotation>
          <xs:documentation>Defines the aggregate characteristic information.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ElementName" minOccurs="0" nillable="true" type="xs:token">
        <xs:annotation>
          <xs:documentation>
        Reference to SIF elements or external authority (e.g., StudentPersonal/Gender).
      </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:unique name="SIF_ExtendedElementsKey5">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:unique>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>Key for aggregate characteristic information.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="AggregateCharacteristicInfo" type="sif:AggregateCharacteristicInfoType">
    <xs:unique name="AggregateCharacteristicInfoKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:unique>
  </xs:element>


  <!--AggregateStatisticFact-->

  <xs:complexType name="AggregateStatisticFactType">
    <xs:annotation>
      <xs:documentation>This object is the actual value of the measurement. It is always associated with one statistic and one or more characteristics.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="AggregateStatisticInfoRefId" minOccurs="0" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>
      Reference to statistic defined by </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Characteristics" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="AggregateCharacteristicInfoRefId" minOccurs="0" maxOccurs="unbounded" type="sif:IdRefType">
              <xs:annotation>
                <xs:documentation>
        Reference to an AggregateCharacteristicInfo object.
      </xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Excluded" minOccurs="0" nillable="true">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Yes" />
            <xs:enumeration value="No" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="Value" minOccurs="0" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>Value of the fact.</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:unique name="SIF_ExtendedElementsKey6">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:unique>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType" />
  </xs:complexType>

  <xs:element name="AggregateStatisticFact" type="sif:AggregateStatisticFactType">
    <xs:unique name="AggregateStatisticFactKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:unique>
  </xs:element>


  <!--FoodServicesWorkingGroup-->


  <!--StudentMeal-->

  <xs:complexType name="StudentMealType">
    <xs:annotation>
      <xs:documentation>This object communicates the current meal/account status of a given student.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="MealStatus" minOccurs="0" nillable="true" type="sif:MealStatusType">
        <xs:annotation>
          <xs:documentation>The student's current meal status.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="HistoricalMealStatus" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="sif:MealStatus" minOccurs="0" maxOccurs="unbounded" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="LastBreakfastDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date of the last reimbursable breakfast served.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LastLunchDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date of the last reimbursable lunch served.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Amounts" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Amount" minOccurs="0" maxOccurs="unbounded" type="sif:FSAmountType" />
          </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:unique name="SIF_ExtendedElementsKey7">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:unique>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="StudentPersonalRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The GUID of the student to whom this object is linked.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="StudentMeal" type="sif:StudentMealType">
    <xs:unique name="StudentMealKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@StudentPersonalRefId" />
    </xs:unique>
  </xs:element>


  <!--FoodserviceItem-->

  <xs:complexType name="FoodserviceItemType">
    <xs:sequence>
      <xs:element ref="sif:LocalId" minOccurs="0" />
      <xs:element name="Description" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Description of Item</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 item.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ItemCategory" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>
        The category is derived from the Child Nutrition Database's food category codes/names (Source: Food Category Name File [CNDB]).
        Agents may use the actual codes or a district's local definition of the names associated with the codes.
        The Child Nutrition Database [CNDB] is updated on a yearly basis by the USDA.
      </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:unique name="SIF_ExtendedElementsKey8">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:unique>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>GUID that identifies this item</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="FoodserviceItem" type="sif:FoodserviceItemType">
    <xs:unique name="FoodserviceItemKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:unique>
  </xs:element>


  <!--FoodserviceItemUnit-->

  <xs:complexType name="FoodserviceItemUnitType">
    <xs:annotation>
      <xs:documentation>This object describes the unit for an item.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="FoodserviceItemRefId" minOccurs="0" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>GUID that identifies related item</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Description" minOccurs="0" type="xs:string">
        <xs:annotation>
          <xs:documentation>Description of unit ("cup", "teaspoon", etc.)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="MeasureDescriptionCode" minOccurs="0" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>
        Child Nutrition Database [CNDB] standard code describing unit.  The database is updated on a yearly basis by the USDA.
      </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="GramWeight" minOccurs="0" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>Gram weight of this item in terms of MeasureDescriptionCode</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:unique name="SIF_ExtendedElementsKey9">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:unique>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>GUID that identifies this unit</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="FoodserviceItemUnit" type="sif:FoodserviceItemUnitType">
    <xs:unique name="FoodserviceItemUnitKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:unique>
  </xs:element>


  <!--FoodserviceItemPortion-->

  <xs:complexType name="FoodserviceItemPortionType">
    <xs:annotation>
      <xs:documentation>This object describes a certain amount for a specific item unit.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="FoodserviceItemUnitRefId" minOccurs="0" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>GUID that identifies related item portion</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ItemPortionQuantity" minOccurs="0" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>Quantity of item portion (number of units)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ItemPortionType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Type of item unit</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Component" />
            <xs:enumeration value="Entree" />
            <xs:enumeration value="AlaCarte" />
            <xs:enumeration value="Bonus" />
            <xs:enumeration value="Combo" />
            <xs:enumeration value="NonFood" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="Description" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Optional description of amount</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:unique name="SIF_ExtendedElementsKey10">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:unique>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>GUID that identifies this item's portion</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="FoodserviceItemPortion" type="sif:FoodserviceItemPortionType">
    <xs:unique name="FoodserviceItemPortionKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:unique>
  </xs:element>


  <!--FoodserviceReimbursementRates-->

  <xs:complexType name="FoodserviceReimbursementRatesType">
    <xs:annotation>
      <xs:documentation>This object describes the federal, state, local and other reimbursement rates for a school.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SchoolInfoRefId" minOccurs="0" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>GUID that identifies the school.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StartDate" minOccurs="0" type="xs:date">
        <xs:annotation>
          <xs:documentation>Effective start date for the reimbursement rates</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EndDate" minOccurs="0" type="xs:date">
        <xs:annotation>
          <xs:documentation>Effective end date for the reimbursement rates</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element ref="sif:Program" minOccurs="0" />
      <xs:element name="Agencies" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Agency" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Name" minOccurs="0" nillable="true" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>
        The name of the reimbursing agency. This element is to be used when the Type is set as Other.
      </xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="Rates" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="Rate" minOccurs="0" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="Value" minOccurs="0" type="xs:decimal">
                                <xs:annotation>
                                  <xs:documentation>The rate value</xs:documentation>
                                </xs:annotation>
                              </xs:element>
                              <xs:element ref="sif:MealStatus" minOccurs="0" />
                            </xs:sequence>
                            <xs:attribute name="SevereNeed" use="required">
                              <xs:annotation>
                                <xs:documentation>
        Severe need identifier for the rate. When SevereNeed is Yes then the rate shown is the combined rate.
        For certain programs the severe need identifier does not apply.  In such cases the value NA should
        be used.
      </xs:documentation>
                              </xs:annotation>
                              <xs:simpleType>
                                <xs:restriction base="xs:token">
                                  <xs:enumeration value="Yes" />
                                  <xs:enumeration value="No" />
                                  <xs:enumeration value="NA" />
                                </xs:restriction>
                              </xs:simpleType>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="Type" use="required">
                  <xs:annotation>
                    <xs:documentation>Type of the reimbursing agency.</xs:documentation>
                  </xs:annotation>
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:enumeration value="Federal" />
                      <xs:enumeration value="State" />
                      <xs:enumeration value="Local" />
                      <xs:enumeration value="Other" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </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:unique name="SIF_ExtendedElementsKey11">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:unique>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>GUID that identifies this object.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="FoodserviceReimbursementRates" type="sif:FoodserviceReimbursementRatesType">
    <xs:unique name="FoodserviceReimbursementRatesKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:unique>
  </xs:element>


  <!--FoodserviceMealPrices-->

  <xs:complexType name="FoodserviceMealPricesType">
    <xs:annotation>
      <xs:documentation>This object is a site's meal prices for each grade program, meal status, meal type and grade level.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SchoolInfoRefId" minOccurs="0" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>GUID that identifies the school this meal price belongs to</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element ref="sif:Program" minOccurs="0" />
      <xs:element name="Prices" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Price" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Value" minOccurs="0" type="sif:MonetaryAmountType">
                    <xs:annotation>
                      <xs:documentation>The price value</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element ref="sif:MealStatus" minOccurs="0" />
                  <xs:element ref="sif:MealType" minOccurs="0" />
                  <xs:element ref="sif:GradeLevels" minOccurs="0" />
                </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:unique name="SIF_ExtendedElementsKey12">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:unique>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>GUID that identifies this meal price.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="FoodserviceMealPrices" type="sif:FoodserviceMealPricesType">
    <xs:unique name="FoodserviceMealPricesKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:unique>
  </xs:element>


  <!--StaffMeal-->

  <xs:complexType name="StaffMealType">
    <xs:annotation>
      <xs:documentation>
        This object communicates the current meal status and account status of a given staff member. This object indicates
        whether the staff member is entitled to earn meals.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:EarnedStatus" minOccurs="0" />
      <xs:element name="LastBreakfastDate" minOccurs="0" type="xs:date">
        <xs:annotation>
          <xs:documentation>Last breakfast served date</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LastLunchDate" minOccurs="0" type="xs:date">
        <xs:annotation>
          <xs:documentation>Last lunch served date</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Amounts" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Amount" minOccurs="0" maxOccurs="unbounded" type="sif:FSAmountType" />
          </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:unique name="SIF_ExtendedElementsKey13">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:unique>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="StaffPersonalRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The GUID of the staff to whom this object is linked.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="StaffMeal" type="sif:StaffMealType">
    <xs:unique name="StaffMealKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@StaffPersonalRefId" />
    </xs:unique>
  </xs:element>


  <!--FoodserviceTransaction-->

  <xs:complexType name="FoodserviceTransactionType">
    <xs:annotation>
      <xs:documentation>
        This object communicates food service transaction information. This is the key object that will be present for every
        food service transaction.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SchoolInfoRefId" minOccurs="0" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>GUID that identifies the school/site of account transaction</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element ref="sif:Program" minOccurs="0" />
      <xs:element name="TransactionDate" minOccurs="0" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date of transaction</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TransactionTime" minOccurs="0" type="xs:time">
        <xs:annotation>
          <xs:documentation>Time of transaction.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TransactionTypes" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="TransactionType" minOccurs="0" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation>Type of transaction</xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="Purchase" />
                  <xs:enumeration value="Prepayment" />
                  <xs:enumeration value="Refund" />
                  <xs:enumeration value="Repayment" />
                  <xs:enumeration value="Adjustment" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Customer" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:choice minOccurs="0">
              <xs:element name="MealStatus" minOccurs="0" nillable="true" type="sif:MealStatusType" />
              <xs:element name="EarnedStatus" minOccurs="0" nillable="true" type="sif:EarnedStatusType" />
            </xs:choice>
          </xs:sequence>
          <xs:attribute name="SIF_RefId" use="required" type="sif:IdRefType">
            <xs:annotation>
              <xs:documentation>The GUID of the customer doing the transaction. </xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="SIF_RefObject" use="required">
            <xs:annotation>
              <xs:documentation>SIF customer type.</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:complexType>
      </xs:element>
      <xs:element name="Amount" minOccurs="0" type="sif:FSAmountType" />
      <xs:element name="Tax" minOccurs="0" nillable="true" type="sif:MonetaryAmountType">
        <xs:annotation>
          <xs:documentation>Amount of tax.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Description" minOccurs="0" nillable="true" type="xs:string">
        <xs:annotation>
          <xs:documentation>Description of the Transaction</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Voided" minOccurs="0">
        <xs:annotation>
          <xs:documentation>This flag tells us if the transaction is voided.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Yes" />
            <xs:enumeration value="No" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType">
        <xs:unique name="SIF_ExtendedElementsKey14">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:unique>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>GUID that identifies food service transaction</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="FoodserviceTransaction" type="sif:FoodserviceTransactionType">
    <xs:unique name="FoodserviceTransactionKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:unique>
  </xs:element>


  <!--FoodserviceTransactionDetails-->

  <xs:complexType name="FoodserviceTransactionDetailsType">
    <xs:annotation>
      <xs:documentation>
        This object gives the transaction distribution for food service transactions of type other than Purchase. So, this
        object can be requested for transactions of type Prepayment, Repayment, Refund, Adjustment.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="FoodserviceTransactionRefId" minOccurs="0" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>GUID that identifies food service transaction</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Amounts" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Amount" minOccurs="0" maxOccurs="unbounded" type="sif:FSAmountType">
              <xs:annotation>
                <xs:documentation>This amount refers to the funds being directed inwards to/outwards from the customer's account. That is: these amounts reflect the changes to the account balances.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Description" minOccurs="0" nillable="true" type="xs:string">
        <xs:annotation>
          <xs:documentation>Description</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:unique name="SIF_ExtendedElementsKey15">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:unique>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>GUID that identifies transaction details</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="FoodserviceTransactionDetails" type="sif:FoodserviceTransactionDetailsType">
    <xs:unique name="FoodserviceTransactionDetailsKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:unique>
  </xs:element>


  <!--FoodserviceTransactionPayMethod-->

  <xs:complexType name="FoodserviceTransactionPayMethodType">
    <xs:annotation>
      <xs:documentation>
        This object communicates the funding for a given transaction. By the term funding we refer to the form of payment
        that is made for the transaction.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="FoodserviceTransactionRefId" minOccurs="0" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>GUID that identifies food service transaction</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TransactionPayMethods" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="TransactionPayMethod" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Amounts" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="Amount" minOccurs="0" maxOccurs="unbounded" type="sif:FSAmountType">
                          <xs:annotation>
                            <xs:documentation>This amount is the form of the incoming funds for this transaction. For example; the payment can be made by a credit card.</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="Type" use="required">
                  <xs:annotation>
                    <xs:documentation>This refers to the way the payment was made.</xs:documentation>
                  </xs:annotation>
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:enumeration value="Payment" />
                      <xs:enumeration value="Refund" />
                      <xs:enumeration value="Charge" />
                      <xs:enumeration value="Usage" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </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:unique name="SIF_ExtendedElementsKey16">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:unique>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>GUID that identifies the payment</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="FoodserviceTransactionPayMethod" type="sif:FoodserviceTransactionPayMethodType">
    <xs:unique name="FoodserviceTransactionPayMethodKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:unique>
  </xs:element>


  <!--FoodserviceSales-->

  <xs:complexType name="FoodserviceSalesType">
    <xs:annotation>
      <xs:documentation>This object communicates the daily sales information.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SchoolInfoRefId" minOccurs="0" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>School for which the sales object applies</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Date" minOccurs="0" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date on which the sales occurred.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element ref="sif:Program" minOccurs="0" />
      <xs:element name="SalesAmounts" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SalesAmount" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:annotation>
                  <xs:documentation>Monetary value</xs:documentation>
                </xs:annotation>
                <xs:simpleContent>
                  <xs:extension base="sif:MonetaryAmountType">
                    <xs:attribute name="Type" use="required">
                      <xs:annotation>
                        <xs:documentation>Type of SalesAmount. This denotes the form of incoming funds for the sales done.</xs:documentation>
                      </xs:annotation>
                      <xs:simpleType>
                        <xs:restriction base="xs:token">
                          <xs:enumeration value="Cash" />
                          <xs:enumeration value="Account" />
                          <xs:enumeration value="Charged" />
                          <xs:enumeration value="Earned" />
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:attribute>
                    <xs:attribute name="AccountType" use="required">
                      <xs:annotation>
                        <xs:documentation>
        Type of account to which sales amounts apply.  This is set to NA when Type is set as Earned.
      </xs:documentation>
                      </xs:annotation>
                      <xs:simpleType>
                        <xs:restriction base="xs:token">
                          <xs:enumeration value="PrepaidCash" />
                          <xs:enumeration value="BreakfastCredit" />
                          <xs:enumeration value="LunchCredit" />
                          <xs:enumeration value="NA" />
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:attribute>
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType">
        <xs:unique name="SIF_ExtendedElementsKey17">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:unique>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>GUID that identifies the daily meal sales object</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="FoodserviceSales" type="sif:FoodserviceSalesType">
    <xs:unique name="FoodserviceSalesKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:unique>
  </xs:element>


  <!--FoodserviceItemSales-->

  <xs:complexType name="FoodserviceItemSalesType">
    <xs:annotation>
      <xs:documentation>This object gives the sales details for the items sold for a specified date.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SchoolInfoRefId" minOccurs="0" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>GUID that identifies the school for this object</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Date" minOccurs="0" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date of sales</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element ref="sif:Program" minOccurs="0" />
      <xs:element name="ItemQuantities" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="ItemQuantity" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Value" minOccurs="0" type="xs:decimal">
                    <xs:annotation>
                      <xs:documentation>The value of item quantity</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element ref="sif:MealType" minOccurs="0" />
                  <xs:element ref="sif:GradeLevels" minOccurs="0" />
                  <xs:element name="Cost" minOccurs="0" nillable="true" type="sif:MonetaryAmountType">
                    <xs:annotation>
                      <xs:documentation>The cost (monetary value) of the item sold.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="FoodserviceItemPortionRefId" use="required" type="sif:IdRefType">
                  <xs:annotation>
                    <xs:documentation>GUID of FoodserviceItemPortion object</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </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:unique name="SIF_ExtendedElementsKey18">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:unique>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>GUID that identifies this object</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="FoodserviceItemSales" type="sif:FoodserviceItemSalesType">
    <xs:unique name="FoodserviceItemSalesKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:unique>
  </xs:element>


  <!--FoodserviceMenuPlan-->

  <xs:complexType name="FoodserviceMenuPlanType">
    <xs:annotation>
      <xs:documentation>This object communicates the foodservice menu plan for a school site for a given meal program, grade level range and date.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SchoolInfoRefId" minOccurs="0" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>GUID that identifies the school for this menu plan</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element ref="sif:GradeLevels" minOccurs="0" />
      <xs:element name="MenuPlanDate" minOccurs="0" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date of menu plan</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element ref="sif:Program" minOccurs="0" />
      <xs:element name="Description" minOccurs="0" nillable="true" type="xs:string">
        <xs:annotation>
          <xs:documentation>Description of menu plan</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ProjectedParticipation" minOccurs="0" type="xs:string">
        <xs:annotation>
          <xs:documentation>Feeding figure projected</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="MenuPlanQuantities" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="MenuPlanQuantity" minOccurs="0" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation>Quantity of item in this menu plan</xs:documentation>
              </xs:annotation>
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="sif:XSDecimalOrEmpty">
                    <xs:attribute name="FoodserviceItemPortionRefId" use="required" type="sif:IdRefType">
                      <xs:annotation>
                        <xs:documentation>Item portion amount</xs:documentation>
                      </xs:annotation>
                    </xs:attribute>
                    <xs:attribute name="MenuCategory" use="required">
                      <xs:simpleType>
                        <xs:restriction base="xs:token">
                          <xs:enumeration value="ActualMeal" />
                          <xs:enumeration value="ProjectedMeal" />
                          <xs:enumeration value="ActualAlaCarte" />
                          <xs:enumeration value="ProjectedAlaCarte" />
                          <xs:enumeration value="Produced" />
                          <xs:enumeration value="LeftOver" />
                          <xs:enumeration value="Wasted" />
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:attribute>
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType">
        <xs:unique name="SIF_ExtendedElementsKey19">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:unique>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>GUID that identifies this menu plan</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="FoodserviceMenuPlan" type="sif:FoodserviceMenuPlanType">
    <xs:unique name="FoodserviceMenuPlanKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:unique>
  </xs:element>


  <!--FoodserviceMilkSales-->

  <xs:complexType name="FoodserviceMilkSalesType">
    <xs:annotation>
      <xs:documentation>This object communicates the daily milk sales at a school.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SchoolInfoRefId" minOccurs="0" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>School for which the sales object applies</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Date" minOccurs="0" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date on which the sales occurred.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element ref="sif:Program" minOccurs="0" />
      <xs:element name="SaleQuantities" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SaleQuantity" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Value" minOccurs="0" type="xs:decimal">
                    <xs:annotation>
                      <xs:documentation>The quantity sold.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element ref="sif:MealStatus" minOccurs="0" />
                  <xs:element name="SaleUnit" minOccurs="0" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>Unit of Sale</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="ChargeToChild" minOccurs="0" type="sif:MonetaryAmountType">
                    <xs:annotation>
                      <xs:documentation>Charge to child per unit</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:unique name="SIF_ExtendedElementsKey20">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:unique>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>GUID that identifies the daily milk sales object</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="FoodserviceMilkSales" type="sif:FoodserviceMilkSalesType">
    <xs:unique name="FoodserviceMilkSalesKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:unique>
  </xs:element>


  <!--FoodservicePurchaseTransaction-->

  <xs:complexType name="FoodservicePurchaseTransactionType">
    <xs:annotation>
      <xs:documentation>
        If a food service transaction is of type Purchase then this object can give the details of the purchase.
        This object does not exist for other transaction types.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="FoodserviceTransactionRefId" minOccurs="0" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>GUID that identifies food service transaction in which this purchase was made</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PurchaseQuantities" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="PurchaseQuantity" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:MealType" minOccurs="0" />
                  <xs:element name="Value" minOccurs="0" type="xs:decimal">
                    <xs:annotation>
                      <xs:documentation>The value of quantity</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="FoodserviceItemPortionRefId" use="required" type="sif:IdRefType">
                  <xs:annotation>
                    <xs:documentation>Foodservice Item Portion</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
                <xs:attribute name="Earned" use="required">
                  <xs:annotation>
                    <xs:documentation>Identifies whether the item being purchased is earned i.e., at no cost to the buyer. It is used when  FoodserviceTransaction object's TransactionType element has the value "Purchase".</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>
          </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:unique name="SIF_ExtendedElementsKey21">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:unique>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>GUID that identifies purchase transaction</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="FoodservicePurchaseTransaction" type="sif:FoodservicePurchaseTransactionType">
    <xs:unique name="FoodservicePurchaseTransactionKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:unique>
  </xs:element>


  <!--FoodserviceStaffEnrollmentCount-->

  <xs:complexType name="FoodserviceStaffEnrollmentCountType">
    <xs:annotation>
      <xs:documentation>This object communicates the staff enrollment for a specified date.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:Program" minOccurs="0" />
      <xs:element name="Counts" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Count" minOccurs="0" maxOccurs="unbounded" type="sif:FSCountType" />
          </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:unique name="SIF_ExtendedElementsKey22">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:unique>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="SchoolInfoRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>Reference to SchoolInfo</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="Date" use="required" type="xs:date">
      <xs:annotation>
        <xs:documentation>Date the count is taken.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="FoodserviceStaffEnrollmentCount" type="sif:FoodserviceStaffEnrollmentCountType">
    <xs:unique name="FoodserviceStaffEnrollmentCountKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@SchoolInfoRefId" />
      <xs:field xpath="@Date" />
    </xs:unique>
  </xs:element>


  <!--FoodserviceStaffMealCounts-->

  <xs:complexType name="FoodserviceStaffMealCountsType">
    <xs:annotation>
      <xs:documentation>This object communicates the daily staff sales.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SchoolInfoRefId" minOccurs="0" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>School for which the sales object applies</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Date" minOccurs="0" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date on which the sales occurred.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element ref="sif:Program" minOccurs="0" />
      <xs:element name="Counts" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Count" minOccurs="0" maxOccurs="unbounded" type="sif:FSCountType" />
          </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:unique name="SIF_ExtendedElementsKey23">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:unique>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>GUID that identifies the daily meal sales object</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="FoodserviceStaffMealCounts" type="sif:FoodserviceStaffMealCountsType">
    <xs:unique name="FoodserviceStaffMealCountsKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:unique>
  </xs:element>


  <!--FoodserviceStudentEnrollmentCount-->

  <xs:complexType name="FoodserviceStudentEnrollmentCountType">
    <xs:annotation>
      <xs:documentation>This object communicates the student enrollment for a specified date.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="sif:Program" minOccurs="0" />
      <xs:element name="Counts" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Count" minOccurs="0" maxOccurs="unbounded" type="sif:FSCountType" />
          </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:unique name="SIF_ExtendedElementsKey24">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:unique>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="SchoolInfoRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>Reference to SchoolInfo</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="Date" use="required" type="xs:date">
      <xs:annotation>
        <xs:documentation>Date the count is taken.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="FoodserviceStudentEnrollmentCount" type="sif:FoodserviceStudentEnrollmentCountType">
    <xs:unique name="FoodserviceStudentEnrollmentCountKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@SchoolInfoRefId" />
      <xs:field xpath="@Date" />
    </xs:unique>
  </xs:element>


  <!--FoodserviceStudentMealCounts-->

  <xs:complexType name="FoodserviceStudentMealCountsType">
    <xs:annotation>
      <xs:documentation>This object communicates the daily student sales.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SchoolInfoRefId" minOccurs="0" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>School for which the sales object applies</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Date" minOccurs="0" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date on which the sales occurred.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element ref="sif:Program" minOccurs="0" />
      <xs:element name="Counts" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Count" minOccurs="0" maxOccurs="unbounded" type="sif:FSCountType" />
          </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:unique name="SIF_ExtendedElementsKey25">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:unique>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>GUID that identifies the daily meal sales object</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="FoodserviceStudentMealCounts" type="sif:FoodserviceStudentMealCountsType">
    <xs:unique name="FoodserviceStudentMealCountsKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:unique>
  </xs:element>


  <!--StudentRecordExchangeTaskForce-->


  <!--StudentRecordExchange-->

  <xs:complexType name="StudentRecordExchangeType">
    <xs:annotation>
      <xs:documentation>This object contains references to the set of records associated with and available for a given student.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="StateProvinceId" minOccurs="0" nillable="true" type="sif:StateProvinceIdType">
        <xs:annotation>
          <xs:documentation>A unique student identifier outside of SIF.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LocalId" minOccurs="0" nillable="true" type="sif:LocalIdType">
        <xs:annotation>
          <xs:documentation>A locally-defined student identifier.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StudentPersonalRefId" minOccurs="0" nillable="true" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>
        An associated StudentPersonal object.
      </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Records" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="StudentDemographicRecordRefId" minOccurs="0" type="sif:IdRefType" />
            <xs:element name="StudentAcademicRecordRefId" minOccurs="0" nillable="true" type="sif:IdRefType" />
            <xs:element name="StudentSpecialEducationRecordRefId" minOccurs="0" nillable="true" type="sif:IdRefType" />
            <xs:element name="OtherRecords" minOccurs="0" nillable="true">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="StudentRecordPackageRefId" minOccurs="0" maxOccurs="unbounded" type="sif:IdRefType" />
                </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:unique name="SIF_ExtendedElementsKey26">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:unique>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The GUID that uniquely identifies an instance of this object.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="StudentRecordExchange" type="sif:StudentRecordExchangeType" />


  <!--StudentDemographicRecord-->

  <xs:complexType name="StudentDemographicRecordType">
    <xs:annotation>
      <xs:documentation>Conveys a student's demographic data for student record exchange and transcript purposes.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="ReportingDate" minOccurs="0" type="xs:date">
        <xs:annotation>
          <xs:documentation>The date this record was prepared.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StudentPersonalData" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="LocalId" minOccurs="0" nillable="true" type="sif:LocalIdType" />
            <xs:element name="StateProvinceId" minOccurs="0" nillable="true" type="sif:StateProvinceIdType" />
            <xs:element name="SSN" minOccurs="0" nillable="true" type="sif:SSNType" />
            <xs:element name="OtherIdList" minOccurs="0" nillable="true">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="OtherId" minOccurs="0" 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="sif:NCES0147IdentificationSystemType">
                            <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 name="Name" minOccurs="0" type="sif:NameOfRecordType">
              <xs:annotation>
                <xs:documentation>
        Name of the student.  Note: Type value of 04 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 student.</xs:documentation>
              </xs:annotation>
              <xs:unique name="OtherNamesKey3">
                <xs:selector xpath="./sif:Name" />
                <xs:field xpath="@Type" />
              </xs:unique>
            </xs:element>
            <xs:element name="DemographicsData" minOccurs="0" nillable="true">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="RaceList" minOccurs="0" nillable="true" type="sif:RaceListType" />
                  <xs:element name="Gender" minOccurs="0" nillable="true" type="sif:GenderType" />
                  <xs:element name="BirthDate" minOccurs="0" nillable="true" type="sif:BirthDateType" />
                  <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="HispanicLatino" minOccurs="0" nillable="true" type="sif:HispanicLatinoType">
                    <xs:annotation>
                      <xs:documentation />
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="CountryOfBirth" minOccurs="0" nillable="true" type="sif:CountryType">
                    <xs:annotation>
                      <xs:documentation />
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="DwellingArrangement" minOccurs="0" nillable="true">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="Code" minOccurs="0" type="sif:NCES0600DwellingArrangementType">
                          <xs:annotation>
                            <xs:documentation>Code representing the setting/environment in which the person resides</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                        <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
            <xs:element name="AddressList" minOccurs="0" nillable="true" type="sif:AddressListType">
              <xs:annotation>
                <xs:documentation>The address of the student.</xs:documentation>
              </xs:annotation>
              <xs:unique name="AddressListKey4">
                <xs:selector xpath="./sif:Address" />
                <xs:field xpath="@Type" />
              </xs:unique>
            </xs:element>
            <xs:element name="PhoneNumberList" minOccurs="0" nillable="true" type="sif:PhoneNumberListType">
              <xs:unique name="PhoneNumberListKey5">
                <xs:selector xpath="./sif:PhoneNumber" />
                <xs:field xpath="@Type" />
              </xs:unique>
            </xs:element>
            <xs:element name="IDEA" minOccurs="0" nillable="true" type="sif:IDEAType" />
            <xs:element name="Migrant" minOccurs="0" nillable="true" type="sif:MigrantType" />
            <xs:element name="Title1" minOccurs="0" nillable="true" type="sif:Title1Type" />
            <xs:element name="GiftedTalented" minOccurs="0" nillable="true" type="sif:GiftedTalentedType" />
            <xs:element name="EconomicDisadvantage" minOccurs="0" nillable="true" type="sif:EconomicDisadvantageType" />
            <xs:element name="ELL" minOccurs="0" nillable="true" type="sif:ELLType" />
            <xs:element name="Homeless" minOccurs="0" nillable="true" type="sif:HomelessType" />
            <xs:element name="Section504" minOccurs="0" nillable="true" type="sif:Section504Type" />
            <xs:element name="VocationalConcentrator" minOccurs="0" nillable="true" type="sif:VocationalConcentratorType" />
            <xs:element name="Immigrant" minOccurs="0" nillable="true" type="sif:ImmigrantType" />
            <xs:element name="NeglectedDelinquent" minOccurs="0" nillable="true" type="sif:NeglectedDelinquentType" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="StudentContactsSummary" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="ParentGuardian1" minOccurs="0">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:Name" minOccurs="0" />
                  <xs:element name="PhoneNumberList" minOccurs="0" nillable="true" type="sif:PhoneNumberListType">
                    <xs:unique name="PhoneNumberListKey6">
                      <xs:selector xpath="./sif:PhoneNumber" />
                      <xs:field xpath="@Type" />
                    </xs:unique>
                  </xs:element>
                  <xs:element name="AddressList" minOccurs="0" nillable="true" type="sif:AddressListType">
                    <xs:unique name="AddressListKey5">
                      <xs:selector xpath="./sif:Address" />
                      <xs:field xpath="@Type" />
                    </xs:unique>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
            <xs:element name="ParentGuardian2" minOccurs="0" nillable="true">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:Name" minOccurs="0" />
                  <xs:element name="PhoneNumberList" minOccurs="0" nillable="true" type="sif:PhoneNumberListType">
                    <xs:unique name="PhoneNumberListKey7">
                      <xs:selector xpath="./sif:PhoneNumber" />
                      <xs:field xpath="@Type" />
                    </xs:unique>
                  </xs:element>
                  <xs:element name="AddressList" minOccurs="0" nillable="true" type="sif:AddressListType">
                    <xs:unique name="AddressListKey6">
                      <xs:selector xpath="./sif:Address" />
                      <xs:field xpath="@Type" />
                    </xs:unique>
                  </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:unique name="SIF_ExtendedElementsKey27">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:unique>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The Id (GUID) of this record.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="SIF_RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>
        The GUID of an associated object, either StudentRecordExchange or StudentPersonal.
      </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="SIF_RefObject" use="required">
      <xs:annotation>
        <xs:documentation>
        The associated object type.
      </xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="StudentRecordExchange" />
          <xs:enumeration value="StudentPersonal" />
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="StudentDemographicRecord" type="sif:StudentDemographicRecordType">
    <xs:unique name="StudentDemographicRecordKey1">
      <xs:selector xpath="." />
      <xs:field xpath="@RefId" />
    </xs:unique>
  </xs:element>


  <!--StudentAcademicRecord-->

  <xs:complexType name="StudentAcademicRecordType">
    <xs:annotation>
      <xs:documentation>This object conveys a student's academic record data for student record exchange and transcript purposes.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="ReportingDate" minOccurs="0" type="xs:date">
        <xs:annotation>
          <xs:documentation>The date this record was prepared.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StudentSchoolEnrollmentData" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="sif:GradeLevel" minOccurs="0" />
            <xs:element name="Advisor" minOccurs="0" nillable="true">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="StaffPersonalData" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element ref="sif:Name" minOccurs="0" />
                        <xs:element name="Title" minOccurs="0" nillable="true" type="xs:normalizedString" />
                        <xs:element name="AddressList" minOccurs="0" nillable="true" type="sif:AddressListType">
                          <xs:unique name="AddressListKey7">
                            <xs:selector xpath="./sif:Address" />
                            <xs:field xpath="@Type" />
                          </xs:unique>
                        </xs:element>
                        <xs:element name="PhoneNumberList" minOccurs="0" nillable="true" type="sif:PhoneNumberListType">
                          <xs:unique name="PhoneNumberListKey8">
                            <xs:selector xpath="./sif:PhoneNumber" />
                            <xs:field xpath="@Type" />
                          </xs:unique>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
            <xs:element name="Counselor" minOccurs="0" nillable="true">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="StaffPersonalData" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element ref="sif:Name" minOccurs="0" />
                        <xs:element name="Title" minOccurs="0" nillable="true" type="xs:normalizedString" />
                        <xs:element name="AddressList" minOccurs="0" nillable="true" type="sif:AddressListType">
                          <xs:unique name="AddressListKey8">
                            <xs:selector xpath="./sif:Address" />
                            <xs:field xpath="@Type" />
                          </xs:unique>
                        </xs:element>
                        <xs:element name="PhoneNumberList" minOccurs="0" nillable="true" type="sif:PhoneNumberListType">
                          <xs:unique name="PhoneNumberListKey9">
                            <xs:selector xpath="./sif:PhoneNumber" />
                            <xs:field xpath="@Type" />
                          </xs:unique>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
          <xs:attribute name="SchoolAttendedRefId" use="required" type="sif:IdRefType">
            <xs:annotation>
              <xs:documentation>References the school of record for the student (see SchoolAttended).</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:complexType>
      </xs:element>
      <xs:element name="DistrictEntryDate" minOccurs="0" nillable="true" type="sif:PartialDateType">
        <xs:annotation>
          <xs:documentation>The date the student originally enrolled in the district of the school of record.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolAttendanceHistory" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SchoolAttended" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="LEAInfoData" minOccurs="0" nillable="true">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="LocalId" minOccurs="0" nillable="true" type="sif:LocalIdType" />
                        <xs:element name="StateProvinceId" minOccurs="0" nillable="true" type="sif:StateProvinceIdType" />
                        <xs:element name="NCESId" minOccurs="0" nillable="true" type="sif:NCESIdType" />
                        <xs:element ref="sif:LEAName" minOccurs="0" />
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="SchoolInfoData" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element ref="sif:LocalId" minOccurs="0" />
                        <xs:element name="StateProvinceId" minOccurs="0" nillable="true" type="sif:StateProvinceIdType" />
                        <xs:element name="NCESId" minOccurs="0" nillable="true" type="sif:NCESIdType" />
                        <xs:element ref="sif:SchoolName" minOccurs="0" />
                        <xs:element name="SchoolURL" minOccurs="0" nillable="true" type="sif:SchoolURLType" />
                        <xs:element name="SchoolContactList" minOccurs="0" nillable="true" type="sif:SchoolContactListType" />
                        <xs:element name="AddressList" minOccurs="0" nillable="true" type="sif:AddressListType">
                          <xs:unique name="AddressListKey9">
                            <xs:selector xpath="./sif:Address" />
                            <xs:field xpath="@Type" />
                          </xs:unique>
                        </xs:element>
                        <xs:element name="PhoneNumberList" minOccurs="0" nillable="true" type="sif:PhoneNumberListType">
                          <xs:unique name="PhoneNumberListKey10">
                            <xs:selector xpath="./sif:PhoneNumber" />
                            <xs:field xpath="@Type" />
                          </xs:unique>
                        </xs:element>
                        <xs:element name="IdentificationInfoList" minOccurs="0" nillable="true" type="sif:IdentificationInfoListType" />
                        <xs:element name="GradeLevels" minOccurs="0" nillable="true" type="sif:GradeLevelsType" />
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="AccreditingBody" minOccurs="0" nillable="true" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>Accrediting body for the school.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="MarkingSystems" minOccurs="0" nillable="true">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="MarkValueInfoData" minOccurs="0" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="Name" minOccurs="0" type="xs:string">
                                <xs:annotation>
                                  <xs:documentation>The text name of the value list ("Letter Grades", "Letter Grades (+/-)", "ESU", "Pass/Fail", "Override Grades", "Citizenship Comment Codes", etc.).</xs:documentation>
                                </xs:annotation>
                              </xs:element>
                              <xs:element name="Percentage" minOccurs="0" nillable="true">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="Minimum" minOccurs="0" nillable="true" type="xs:decimal">
                                      <xs:annotation>
                                        <xs:documentation>The minimum percent value accepted for this mark.  If present, the publisher of this object is required to ensure that any values present in the StudentSectionMarks object will not be lower than this value.</xs:documentation>
                                      </xs:annotation>
                                    </xs:element>
                                    <xs:element name="Maximum" minOccurs="0" nillable="true" type="xs:decimal">
                                      <xs:annotation>
                                        <xs:documentation>The maximum percent value accepted for this mark.  If present, the publisher of this object is required to ensure that any values present in the StudentSectionMarks object will not be higher than this value.</xs:documentation>
                                      </xs:annotation>
                                    </xs:element>
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>
                              <xs:element name="Numeric" minOccurs="0" nillable="true">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="Precision" minOccurs="0" nillable="true" type="xs:unsignedInt">
                                      <xs:annotation>
                                        <xs:documentation>Number of significant digits.</xs:documentation>
                                      </xs:annotation>
                                    </xs:element>
                                    <xs:element name="Scale" minOccurs="0" nillable="true" type="xs:unsignedInt">
                                      <xs:annotation>
                                        <xs:documentation>Number of decimal places.</xs:documentation>
                                      </xs:annotation>
                                    </xs:element>
                                    <xs:element name="Low" minOccurs="0" nillable="true" type="xs:decimal">
                                      <xs:annotation>
                                        <xs:documentation>Lowest Mark in the range (e.g., 98, 3.95).</xs:documentation>
                                      </xs:annotation>
                                    </xs:element>
                                    <xs:element name="High" minOccurs="0" nillable="true" type="xs:decimal">
                                      <xs:annotation>
                                        <xs:documentation>Highest Mark in the range (e.g., 100, 4.0).</xs:documentation>
                                      </xs:annotation>
                                    </xs:element>
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>
                              <xs:element name="Letter" minOccurs="0" nillable="true">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="ValidMark" minOccurs="0" maxOccurs="unbounded">
                                      <xs:complexType>
                                        <xs:sequence>
                                          <xs:element name="Code" minOccurs="0" type="xs:token">
                                            <xs:annotation>
                                              <xs:documentation>String representing the actual Mark that would appear on the report card (e.g., "A+", "I", "100").</xs:documentation>
                                            </xs:annotation>
                                          </xs:element>
                                          <xs:element name="NumericEquivalent" minOccurs="0" nillable="true" type="xs:decimal">
                                            <xs:annotation>
                                              <xs:documentation>Numeric equivalent for the Mark (e.g., 100, 4.0).</xs:documentation>
                                            </xs:annotation>
                                          </xs:element>
                                          <xs:element name="Description" minOccurs="0" nillable="true" type="xs:string">
                                            <xs:annotation>
                                              <xs:documentation>The description for this code. (e.g. "Excellent", "Participates in Class", "Incomplete", etc...).</xs:documentation>
                                            </xs:annotation>
                                          </xs:element>
                                        </xs:sequence>
                                      </xs:complexType>
                                    </xs:element>
                                  </xs:sequence>
                                </xs:complexType>
                                <xs:unique name="LetterKey1">
                                  <xs:selector xpath="./sif:ValidMark" />
                                  <xs:field xpath="./sif:Code" />
                                </xs:unique>
                              </xs:element>
                              <xs:element name="Narrative" minOccurs="0" nillable="true">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="MaximumSize" minOccurs="0" nillable="true" type="xs:unsignedInt">
                                      <xs:annotation>
                                        <xs:documentation>An integer value representing the maximum number of Unicode characters for the narrative, the UTF-8 encoding of which may be longer.</xs:documentation>
                                      </xs:annotation>
                                    </xs:element>
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>
                            </xs:sequence>
                            <xs:attribute name="RefId" use="required" type="sif:RefIdType">
                              <xs:annotation>
                                <xs:documentation>Id used internally to StudentAcademicRecord to link marks to their marking systems.</xs:documentation>
                              </xs:annotation>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="RefId" use="required" type="sif:RefIdType">
                  <xs:annotation>
                    <xs:documentation>Id used internally to StudentAcademicRecord to avoid duplication of school-related data.</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="EnrollmentHistory" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="StudentSchoolEnrollmentData" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SchoolYear" minOccurs="0" nillable="true" type="sif:SchoolYearType" />
                  <xs:element name="EntryDate" minOccurs="0" nillable="true" type="sif:PartialDateType" />
                  <xs:element name="ExitDate" minOccurs="0" nillable="true" type="sif:PartialDateType">
                    <xs:annotation>
                      <xs:documentation>Note: Mandatory if student exited school.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="EntryType" minOccurs="0" nillable="true">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="Code" minOccurs="0" nillable="true" type="sif:NCES0619EntryTypeType">
                          <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 />
                          </xs:annotation>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="GradeLevel" minOccurs="0" nillable="true" type="sif:GradeLevelType">
                    <xs:annotation>
                      <xs:documentation>Grade or academic level of student.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="ExitStatus" minOccurs="0" nillable="true">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="Code" minOccurs="0" type="sif:NCES0643ExitWithdrawalStatusType">
                          <xs:annotation>
                            <xs:documentation>Code indicating the exit status for this enrollment.</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                        <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType">
                          <xs:annotation>
                            <xs:documentation />
                          </xs:annotation>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="ExitType" minOccurs="0" nillable="true">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="Code" minOccurs="0" type="sif:NCES0644ExitWithdrawalTypeType">
                          <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:annotation>
                            <xs:documentation />
                          </xs:annotation>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="StudentLEARelationship" minOccurs="0" nillable="true">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="MembershipType" minOccurs="0" nillable="true">
                          <xs:annotation>
                            <xs:documentation>The type of this affiliation as it relates to the LEA identified.</xs:documentation>
                          </xs:annotation>
                          <xs:simpleType>
                            <xs:restriction base="xs:token">
                              <xs:enumeration value="Home">
                                <xs:annotation>
                                  <xs:documentation>The LEA is responsible for reporting the student's membership/child accounting information.</xs:documentation>
                                </xs:annotation>
                              </xs:enumeration>
                              <xs:enumeration value="Concurrent">
                                <xs:annotation>
                                  <xs:documentation>The LEA is not the primary reporting unit for the student's membership/child accounting information.</xs:documentation>
                                </xs:annotation>
                              </xs:enumeration>
                              <xs:enumeration value="Summer">
                                <xs:annotation>
                                  <xs:documentation>A summer school enrollment, not part of the regular school year.</xs:documentation>
                                </xs:annotation>
                              </xs:enumeration>
                            </xs:restriction>
                          </xs:simpleType>
                        </xs:element>
                        <xs:element name="LEARelationshipType" minOccurs="0" type="sif:OrganizationRelationshipType">
                          <xs:annotation>
                            <xs:documentation>An instance of the OrganizationRelationshipType common type that describes the details of the student's affiliation with the LEA.</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="StudentSchoolRelationship" minOccurs="0" nillable="true">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="MembershipType" minOccurs="0" nillable="true">
                          <xs:annotation>
                            <xs:documentation>The type of this affiliation as it relates to the school identified.</xs:documentation>
                          </xs:annotation>
                          <xs:simpleType>
                            <xs:restriction base="xs:token">
                              <xs:enumeration value="Home">
                                <xs:annotation>
                                  <xs:documentation>The LEA is responsible for reporting the student's membership/child accounting information.</xs:documentation>
                                </xs:annotation>
                              </xs:enumeration>
                              <xs:enumeration value="Concurrent">
                                <xs:annotation>
                                  <xs:documentation>The LEA is not the primary reporting unit for the student's membership/child accounting information.</xs:documentation>
                                </xs:annotation>
                              </xs:enumeration>
                              <xs:enumeration value="Summer">
                                <xs:annotation>
                                  <xs:documentation>A summer school enrollment, not part of the regular school year.</xs:documentation>
                                </xs:annotation>
                              </xs:enumeration>
                            </xs:restriction>
                          </xs:simpleType>
                        </xs:element>
                        <xs:element name="ResidencyStatus" minOccurs="0" nillable="true">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="Code" minOccurs="0" type="sif:NCES0598PublicSchoolResidenceStatusType">
                                <xs:annotation>
                                  <xs:documentation>Code indicating the residency status for this enrollment.</xs:documentation>
                                </xs:annotation>
                              </xs:element>
                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>
                        <xs:element name="NonResidentAttendReason" minOccurs="0" nillable="true" type="sif:NCES0599NonResidentAttendanceRationaleType">
                          <xs:annotation>
                            <xs:documentation>If the school represented by this enrollment is outside of the student's usual attendance area (as indicated in the ResidencyStatus element), this element indicates the reason that the student attends this school.</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="SchoolAttendedRefId" use="required" type="sif:IdRefType">
                  <xs:annotation>
                    <xs:documentation>Reference to SchoolAttended.</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="CurrentCourseActivity" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="TermInfoData" minOccurs="0">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SchoolYear" minOccurs="0" nillable="true" type="sif:SchoolYearType" />
                  <xs:element name="StartDate" minOccurs="0" nillable="true" type="sif:PartialDateType" />
                  <xs:element name="EndDate" minOccurs="0" nillable="true" type="sif:PartialDateType" />
                  <xs:element name="Description" minOccurs="0" nillable="true" type="xs:string" />
                  <xs:element name="TermCode" minOccurs="0" nillable="true" type="xs:normalizedString" />
                  <xs:element name="Track" minOccurs="0" nillable="true" type="xs:normalizedString" />
                  <xs:element name="TermSpan" minOccurs="0" nillable="true" type="sif:TermSpanType" />
                </xs:sequence>
                <xs:attribute name="SchoolAttendedRefId" use="required" type="sif:IdRefType">
                  <xs:annotation>
                    <xs:documentation>Reference to the school of record for the courses being taken (see SchoolAttended).</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
            <xs:element name="Courses" minOccurs="0">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Course" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SchoolAttendedRefId" minOccurs="0" nillable="true" type="sif:IdRefType">
                          <xs:annotation>
                            <xs:documentation>
        Reference to the school where the course is being taken (see SchoolAttended); may be omitted if the school is the same as the school of record.
      </xs:documentation>
                          </xs:annotation>
                        </xs:element>
                        <xs:element name="SchoolCourseInfoData" minOccurs="0">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="CourseCode" minOccurs="0" nillable="true" type="sif:CourseCodeType" />
                              <xs:element name="StateCourseCode" minOccurs="0" nillable="true" type="sif:StateCourseCodeType" />
                              <xs:element name="DistrictCourseCode" minOccurs="0" nillable="true" type="sif:DistrictCourseCodeType" />
                              <xs:element name="NationalCourseCode" minOccurs="0" nillable="true" type="xs:normalizedString" />
                              <xs:element name="SubjectAreaList" minOccurs="0" nillable="true" type="sif:SubjectAreaListType" />
                              <xs:element name="CourseTitle" minOccurs="0" nillable="true" type="sif:CourseTitleType" />
                              <xs:element name="Description" minOccurs="0" nillable="true" type="xs:string" />
                              <xs:element name="InstructionalLevel" minOccurs="0" nillable="true" type="sif:InstructionalLevelType" />
                              <xs:element name="CoreAcademicCourse" minOccurs="0" nillable="true" type="xs:boolean" />
                              <xs:element name="GraduationRequirement" minOccurs="0" nillable="true" type="sif:GraduationRequirementType" />
                              <xs:element name="Department" minOccurs="0" nillable="true" type="xs:normalizedString" />
                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>
                        <xs:element name="StartDate" minOccurs="0" nillable="true" type="sif:PartialDateType">
                          <xs:annotation>
                            <xs:documentation>Date course section started.</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                        <xs:element name="EndDate" minOccurs="0" nillable="true" type="sif:PartialDateType">
                          <xs:annotation>
                            <xs:documentation>Date course section ended, or will end.</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                        <xs:element name="MarkingPeriod" minOccurs="0">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="TermInfoData" minOccurs="0" nillable="true">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="StartDate" minOccurs="0" nillable="true" type="sif:PartialDateType" />
                                    <xs:element name="EndDate" minOccurs="0" nillable="true" type="sif:PartialDateType" />
                                    <xs:element name="Description" minOccurs="0" nillable="true" type="xs:string" />
                                    <xs:element name="TermCode" minOccurs="0" nillable="true" type="xs:normalizedString" />
                                    <xs:element name="Track" minOccurs="0" nillable="true" type="xs:normalizedString" />
                                    <xs:element name="TermSpan" minOccurs="0" nillable="true" type="sif:TermSpanType" />
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>
                              <xs:element name="GradeLevelWhenTaken" minOccurs="0" nillable="true" type="sif:GradeLevelType">
                                <xs:annotation>
                                  <xs:documentation>Student's grade level at time of course.</xs:documentation>
                                </xs:annotation>
                              </xs:element>
                              <xs:element name="MarkData" minOccurs="0" nillable="true">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="Percentage" minOccurs="0" nillable="true" type="xs:decimal">
                                      <xs:annotation>
                                        <xs:documentation>The percent score for this mark (0.00 - 100.00).</xs:documentation>
                                      </xs:annotation>
                                    </xs:element>
                                    <xs:element name="Numeric" minOccurs="0" nillable="true" type="xs:unsignedInt">
                                      <xs:annotation>
                                        <xs:documentation>The raw numeric score for this mark.</xs:documentation>
                                      </xs:annotation>
                                    </xs:element>
                                    <xs:element name="Letter" minOccurs="0" nillable="true" type="xs:normalizedString">
                                      <xs:annotation>
                                        <xs:documentation>The letter grade for this mark.</xs:documentation>
                                      </xs:annotation>
                                    </xs:element>
                                    <xs:element name="Narrative" minOccurs="0" nillable="true" type="xs:string">
                                      <xs:annotation>
                                        <xs:documentation>The free form text narrative for this mark.</xs:documentation>
                                      </xs:annotation>
                                    </xs:element>
                                  </xs:sequence>
                                  <xs:attribute name="MarkValueInfoDataRefId" use="required" type="sif:IdRefType">
                                    <xs:annotation>
                                      <xs:documentation>Reference to marking system at school of record.</xs:documentation>
                                    </xs:annotation>
                                  </xs:attribute>
                                </xs:complexType>
                              </xs:element>
                              <xs:element name="CourseCreditsAttempted" minOccurs="0" nillable="true" type="xs:decimal">
                                <xs:annotation>
                                  <xs:documentation>Number of course credits attempted.</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="CourseHistory" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Term" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="TermInfoData" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SchoolYear" minOccurs="0" nillable="true" type="sif:SchoolYearType" />
                        <xs:element name="StartDate" minOccurs="0" nillable="true" type="sif:PartialDateType" />
                        <xs:element name="EndDate" minOccurs="0" nillable="true" type="sif:PartialDateType" />
                        <xs:element name="Description" minOccurs="0" nillable="true" type="xs:string" />
                        <xs:element name="TermCode" minOccurs="0" nillable="true" type="xs:normalizedString" />
                        <xs:element name="Track" minOccurs="0" nillable="true" type="xs:normalizedString" />
                        <xs:element name="TermSpan" minOccurs="0" nillable="true" type="sif:TermSpanType" />
                      </xs:sequence>
                      <xs:attribute name="SchoolAttendedRefId" use="required" type="sif:IdRefType">
                        <xs:annotation>
                          <xs:documentation>Reference to the school of record for the time span (see SchoolAttended).</xs:documentation>
                        </xs:annotation>
                      </xs:attribute>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="Courses" minOccurs="0" nillable="true">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="Course" minOccurs="0" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="SchoolAttendedRefId" minOccurs="0" nillable="true" type="sif:IdRefType">
                                <xs:annotation>
                                  <xs:documentation>
        Reference to the school where the course was taken (see SchoolAttended); may be omitted if the school is the same as the school of record.
      </xs:documentation>
                                </xs:annotation>
                              </xs:element>
                              <xs:element name="SchoolCourseInfoData" minOccurs="0">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="CourseCode" minOccurs="0" nillable="true" type="sif:CourseCodeType" />
                                    <xs:element name="StateCourseCode" minOccurs="0" nillable="true" type="sif:StateCourseCodeType" />
                                    <xs:element name="DistrictCourseCode" minOccurs="0" nillable="true" type="sif:DistrictCourseCodeType" />
                                    <xs:element name="NationalCourseCode" minOccurs="0" nillable="true" type="xs:normalizedString" />
                                    <xs:element name="SubjectAreaList" minOccurs="0" nillable="true" type="sif:SubjectAreaListType" />
                                    <xs:element name="CourseTitle" minOccurs="0" nillable="true" type="sif:CourseTitleType" />
                                    <xs:element name="Description" minOccurs="0" nillable="true" type="xs:string" />
                                    <xs:element name="InstructionalLevel" minOccurs="0" nillable="true" type="sif:InstructionalLevelType" />
                                    <xs:element name="CoreAcademicCourse" minOccurs="0" nillable="true" type="xs:boolean" />
                                    <xs:element name="GraduationRequirement" minOccurs="0" nillable="true" type="sif:GraduationRequirementType" />
                                    <xs:element name="Department" minOccurs="0" nillable="true" type="xs:normalizedString" />
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>
                              <xs:element name="StartDate" minOccurs="0" nillable="true" type="sif:PartialDateType">
                                <xs:annotation>
                                  <xs:documentation>Date course section started.</xs:documentation>
                                </xs:annotation>
                              </xs:element>
                              <xs:element name="EndDate" minOccurs="0" nillable="true" type="sif:PartialDateType">
                                <xs:annotation>
                                  <xs:documentation>Date course section ended.</xs:documentation>
                                </xs:annotation>
                              </xs:element>
                              <xs:element name="MarkingPeriods" minOccurs="0">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="MarkingPeriod" minOccurs="0" maxOccurs="unbounded">
                                      <xs:complexType>
                                        <xs:sequence>
                                          <xs:element name="SchoolAttendedRefId" minOccurs="0" nillable="true" type="sif:IdRefType">
                                            <xs:annotation>
                                              <xs:documentation>
        Reference to the school where student took the course during the marking period, if different from schools above.
      </xs:documentation>
                                            </xs:annotation>
                                          </xs:element>
                                          <xs:element name="TermInfoData" minOccurs="0" nillable="true">
                                            <xs:complexType>
                                              <xs:sequence>
                                                <xs:element name="StartDate" minOccurs="0" nillable="true" type="sif:PartialDateType" />
                                                <xs:element name="EndDate" minOccurs="0" nillable="true" type="sif:PartialDateType" />
                                                <xs:element name="Description" minOccurs="0" nillable="true" type="xs:string" />
                                                <xs:element name="TermCode" minOccurs="0" nillable="true" type="xs:normalizedString" />
                                                <xs:element name="Track" minOccurs="0" nillable="true" type="xs:normalizedString" />
                                                <xs:element name="TermSpan" minOccurs="0" nillable="true" type="sif:TermSpanType" />
                                              </xs:sequence>
                                            </xs:complexType>
                                          </xs:element>
                                          <xs:element name="GradeLevelWhenTaken" minOccurs="0" nillable="true" type="sif:GradeLevelType">
                                            <xs:annotation>
                                              <xs:documentation>Student's grade level at time of course.</xs:documentation>
                                            </xs:annotation>
                                          </xs:element>
                                          <xs:element name="MarkData" minOccurs="0" nillable="true">
                                            <xs:complexType>
                                              <xs:sequence>
                                                <xs:element name="Percentage" minOccurs="0" nillable="true" type="xs:decimal">
                                                  <xs:annotation>
                                                    <xs:documentation>The percent score for this mark (0.00 - 100.00).</xs:documentation>
                                                  </xs:annotation>
                                                </xs:element>
                                                <xs:element name="Numeric" minOccurs="0" nillable="true" type="xs:unsignedInt">
                                                  <xs:annotation>
                                                    <xs:documentation>The raw numeric score for this mark.</xs:documentation>
                                                  </xs:annotation>
                                                </xs:element>
                                                <xs:element name="Letter" minOccurs="0" nillable="true" type="xs:normalizedString">
                                                  <xs:annotation>
                                                    <xs:documentation>The letter grade for this mark.</xs:documentation>
                                                  </xs:annotation>
                                                </xs:element>
                                                <xs:element name="Narrative" minOccurs="0" nillable="true" type="xs:string">
                                                  <xs:annotation>
                                                    <xs:documentation>The free form text narrative for this mark.</xs:documentation>
                                                  </xs:annotation>
                                                </xs:element>
                                              </xs:sequence>
                                              <xs:attribute name="MarkValueInfoDataRefId" use="required" type="sif:IdRefType">
                                                <xs:annotation>
                                                  <xs:documentation>Reference to marking system at school of record.</xs:documentation>
                                                </xs:annotation>
                                              </xs:attribute>
                                            </xs:complexType>
                                          </xs:element>
                                          <xs:element name="CourseCreditsAttempted" minOccurs="0" nillable="true" type="xs:decimal">
                                            <xs:annotation>
                                              <xs:documentation>Number of course credits attempted.</xs:documentation>
                                            </xs:annotation>
                                          </xs:element>
                                          <xs:element name="CourseCreditsEarned" minOccurs="0" nillable="true" type="xs:decimal">
                                            <xs:annotation>
                                              <xs:documentation>Number of course credits earned.</xs:documentation>
                                            </xs:annotation>
                                          </xs:element>
                                          <xs:element name="CreditType" minOccurs="0" nillable="true" type="sif:NCES0108CreditTypeEarnedType">
                                            <xs:annotation>
                                              <xs:documentation>Type of credit.</xs:documentation>
                                            </xs:annotation>
                                          </xs:element>
                                          <xs:element name="ExcessiveAbsenceIndicator" minOccurs="0" nillable="true" type="xs:boolean">
                                            <xs:annotation>
                                              <xs:documentation>Flag indicating that the student was excessively absent from the class.</xs:documentation>
                                            </xs:annotation>
                                          </xs:element>
                                          <xs:element name="DaysAbsent" minOccurs="0" nillable="true" type="xs:decimal">
                                            <xs:annotation>
                                              <xs:documentation>Number of days absent.</xs:documentation>
                                            </xs:annotation>
                                          </xs:element>
                                          <xs:element name="DaysPresent" minOccurs="0" nillable="true" type="xs:decimal">
                                            <xs:annotation>
                                              <xs:documentation>Number of days present.</xs:documentation>
                                            </xs:annotation>
                                          </xs:element>
                                        </xs:sequence>
                                      </xs:complexType>
                                    </xs:element>
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>
                              <xs:element name="SectionInfoData" minOccurs="0" nillable="true">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="MediumOfInstruction" minOccurs="0" nillable="true">
                                      <xs:complexType>
                                        <xs:sequence>
                                          <xs:element name="Code" minOccurs="0" type="sif:NCES0209MediumOfInstructionType">
                                            <xs:annotation>
                                              <xs:documentation>Code representing the medium of instruction.</xs:documentation>
                                            </xs:annotation>
                                          </xs:element>
                                          <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType">
                                            <xs:annotation>
                                              <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:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="AcademicPerformanceHistory" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="TermPerformance" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="TermInfoData" minOccurs="0" nillable="true">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SchoolYear" minOccurs="0" nillable="true" type="sif:SchoolYearType" />
                        <xs:element name="StartDate" minOccurs="0" nillable="true" type="sif:PartialDateType" />
                        <xs:element name="EndDate" minOccurs="0" nillable="true" type="sif:PartialDateType" />
                        <xs:element name="Description" minOccurs="0" nillable="true" type="xs:string" />
                        <xs:element name="TermCode" minOccurs="0" nillable="true" type="xs:normalizedString" />
                        <xs:element name="Track" minOccurs="0" nillable="true" type="xs:normalizedString" />
                        <xs:element name="TermSpan" minOccurs="0" nillable="true" type="sif:TermSpanType" />
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="GradeLevelWhenTaken" minOccurs="0" nillable="true" type="sif:GradeLevelType">
                    <xs:annotation>
                      <xs:documentation>Student's grade level at time.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="CreditsAttempted" minOccurs="0" nillable="true" type="xs:decimal">
                    <xs:annotation>
                      <xs:documentation>Number of credits attempted.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="CreditsEarned" minOccurs="0" nillable="true" type="xs:decimal">
                    <xs:annotation>
                      <xs:documentation>Number of credits earned.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="GPACreditsAttempted" minOccurs="0" nillable="true" type="xs:decimal">
                    <xs:annotation>
                      <xs:documentation>Number of GPA credits attempted.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="GPACreditsEarned" minOccurs="0" nillable="true" type="xs:decimal">
                    <xs:annotation>
                      <xs:documentation>Number of GPA credits earned.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="GPAGradePoints" minOccurs="0" nillable="true" type="xs:decimal">
                    <xs:annotation>
                      <xs:documentation>Number of GPA points received.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="GPA" minOccurs="0" nillable="true" type="xs:decimal">
                    <xs:annotation>
                      <xs:documentation>Grade point average for term.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="WeightedGPA" minOccurs="0" nillable="true" type="xs:decimal">
                    <xs:annotation>
                      <xs:documentation>Weighted grade point average for term.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="DaysAbsent" minOccurs="0" nillable="true" type="xs:decimal">
                    <xs:annotation>
                      <xs:documentation>Number of days absent.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="DaysPresent" minOccurs="0" nillable="true" type="xs:decimal">
                    <xs:annotation>
                      <xs:documentation>Number of days present.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="AcademicPerformanceSummary" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="TotalCreditsAttempted" minOccurs="0" nillable="true" type="xs:decimal">
              <xs:annotation>
                <xs:documentation>Total credits attempted during academic career.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="TotalCreditsEarned" minOccurs="0" nillable="true" type="xs:decimal">
              <xs:annotation>
                <xs:documentation>Total credits earned during academic career.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="CumulativeGPACreditsEarned" minOccurs="0" nillable="true" type="xs:decimal">
              <xs:annotation>
                <xs:documentation>Cumulative number of GPA credits earned during academic career.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="CumulativeGradePoints" minOccurs="0" nillable="true" type="xs:decimal">
              <xs:annotation>
                <xs:documentation>Cumulative number of grade points earned during academic career.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="CumulativeGPA" minOccurs="0" nillable="true" type="xs:decimal">
              <xs:annotation>
                <xs:documentation>Cumulative grade point average for academic career.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="GPAType" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Brief name/description of type of GPA.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="ClassRank" minOccurs="0" nillable="true" type="xs:unsignedInt">
              <xs:annotation>
                <xs:documentation>Student's rank in graduating class.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="ClassTotalNumber" minOccurs="0" nillable="true" type="xs:unsignedInt">
              <xs:annotation>
                <xs:documentation>Total number of students in student's graduating class.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="ClassRankingDate" minOccurs="0" nillable="true" type="sif:PartialDateType">
              <xs:annotation>
                <xs:documentation>Date class ranking was determined.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="ProjectedGraduationDate" minOccurs="0" nillable="true" type="sif:PartialDateType">
              <xs:annotation>
                <xs:documentation>Projected graduation date.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="GraduationDate" minOccurs="0" nillable="true" type="sif:PartialDateType">
              <xs:annotation>
                <xs:documentation>Note: Mandatory if graduated.  Graduation date.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="GraduationDiplomaType" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Note: Mandatory if graduated.  Type of diploma earned.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="AcademicTrack" minOccurs="0" nillable="true" type="sif:NCES0106CourseInstructionalLevelType">
              <xs:annotation>
                <xs:documentation>An indication of the general nature and difficulty of instruction provided throughout a course.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="AcademicFoci" minOccurs="0" nillable="true">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="AcademicFocus" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="Code" minOccurs="0" type="sif:NCES0229ProgramTypeType">
                          <xs:annotation>
                            <xs:documentation>
        A code to depict the focus of the educational program (replaces deprecated AcademicTrack.
      </xs:documentation>
                          </xs:annotation>
                        </xs:element>
                        <xs:eleme
