<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="http://www.w3.org/2001/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 name="SIF_Ack" type="sif:SIF_AckType">
        <xs:annotation>
          <xs:documentation>Contains one of the SIF message types.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Event" type="sif:SIF_EventType">
        <xs:annotation>
          <xs:documentation>Contains one of the SIF message types.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Provide" type="sif:SIF_ProvideType">
        <xs:annotation>
          <xs:documentation>Contains one of the SIF message types.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Provision" type="sif:SIF_ProvisionType">
        <xs:annotation>
          <xs:documentation>Contains one of the SIF message types.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Register" type="sif:SIF_RegisterType">
        <xs:annotation>
          <xs:documentation>Contains one of the SIF message types.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Request" type="sif:SIF_RequestType">
        <xs:annotation>
          <xs:documentation>Contains one of the SIF message types.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Response" type="sif:SIF_ResponseType">
        <xs:annotation>
          <xs:documentation>Contains one of the SIF message types.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Subscribe" type="sif:SIF_SubscribeType">
        <xs:annotation>
          <xs:documentation>Contains one of the SIF message types.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_SystemControl" type="sif:SIF_SystemControlType">
        <xs:annotation>
          <xs:documentation>Contains one of the SIF message types.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Unprovide" type="sif:SIF_UnprovideType">
        <xs:annotation>
          <xs:documentation>Contains one of the SIF message types.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Unregister" type="sif:SIF_UnregisterType">
        <xs:annotation>
          <xs:documentation>Contains one of the SIF message types.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Unsubscribe" type="sif:SIF_UnsubscribeType">
        <xs:annotation>
          <xs:documentation>Contains one of the SIF message types.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </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.0.
              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 name="SIF_AuthenticationLevel" type="sif:SIF_AuthenticationLevelType">
                    <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:element>
                  <xs:element name="SIF_EncryptionLevel" type="sif:SIF_EncryptionLevelType">
                    <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:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_SourceId" type="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:element>
      <xs:element name="SIF_DestinationId" minOccurs="0" type="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:element>
      <xs:element name="SIF_Contexts" minOccurs="0" type="sif:SIF_ContextsType">
        <xs:annotation>
          <xs:documentation>
              Contains each SIF Context that applies to the message.  If omitted, the applicable context is SIF_Default.
              SIF_Context is repeatable for SIF_Events, not repeatable for SIF_Request or SIF_Response.
            </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Header" type="sif:SIF_HeaderType" />


  <!--SIF_EncryptionLevel-->

  <xs:simpleType name="SIF_EncryptionLevelType">
    <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: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: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: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 name="SIF_Context" maxOccurs="unbounded" type="sif:SIF_ContextType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Contexts" type="sif:SIF_ContextsType" />


  <!--SIF_Context-->

  <xs:simpleType name="SIF_ContextType">
    <xs:annotation>
      <xs:documentation>The name of a SIF Context that applies to a message or operation.</xs:documentation>
    </xs:annotation>
    <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: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 for contacting a ZIS or Agent.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:choice>
        <xs:element name="SIF_URL" type="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:element>
        <xs:element name="SIF_Property" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="SIF_Name" type="xs:token">
                <xs:annotation>
                  <xs:documentation>
              Property name.
            </xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="SIF_Value" type="xs:string">
                <xs:annotation>
                  <xs:documentation>
              Property value.
            </xs:documentation>
                </xs:annotation>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </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:annotation>
            <xs:documentation>The type of protocol to use (HTTPS, HTTP or an implementation-defined protocol).</xs:documentation>
          </xs:annotation>
          <xs:simpleType>
            <xs:restriction base="sif:DefinedProtocolsType" />
          </xs:simpleType>
          <xs:annotation>
            <xs:documentation>The type of protocol to use (HTTPS, HTTP or an implementation-defined protocol).</xs:documentation>
          </xs:annotation>
          <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" type="xs:string">
        <xs:annotation>
          <xs:documentation>
              An optional textual description/equivalent of SIF_Code.
            </xs:documentation>
        </xs:annotation>
      </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 name="SIF_Message" type="sif:SIF_MessageType">
              <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:element>
            <xs:element name="SIF_AgentACL" type="sif:SIF_AgentACLInfrastructureType">
              <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:element>
            <xs:element name="SIF_ZoneStatus" type="sif:SIF_ZoneStatusInfrastructureType">
              <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:element>
          </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:annotation>
              <xs:documentation>
              See Error Codes.
            </xs:documentation>
            </xs:annotation>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureXMLValidationErrorType" />
            </xs:simpleType>
            <xs:annotation>
              <xs:documentation>
              See Error Codes.
            </xs:documentation>
            </xs:annotation>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureEncryptionErrorType" />
            </xs:simpleType>
            <xs:annotation>
              <xs:documentation>
              See Error Codes.
            </xs:documentation>
            </xs:annotation>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureAuthenticationErrorType" />
            </xs:simpleType>
            <xs:annotation>
              <xs:documentation>
              See Error Codes.
            </xs:documentation>
            </xs:annotation>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureAccessAndPermissionErrorType" />
            </xs:simpleType>
            <xs:annotation>
              <xs:documentation>
              See Error Codes.
            </xs:documentation>
            </xs:annotation>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureRegistrationErrorType" />
            </xs:simpleType>
            <xs:annotation>
              <xs:documentation>
              See Error Codes.
            </xs:documentation>
            </xs:annotation>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureProvisionErrorType" />
            </xs:simpleType>
            <xs:annotation>
              <xs:documentation>
              See Error Codes.
            </xs:documentation>
            </xs:annotation>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureSubscriptionErrorType" />
            </xs:simpleType>
            <xs:annotation>
              <xs:documentation>
              See Error Codes.
            </xs:documentation>
            </xs:annotation>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureRequestAndResponseErrorType" />
            </xs:simpleType>
            <xs:annotation>
              <xs:documentation>
              See Error Codes.
            </xs:documentation>
            </xs:annotation>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureEventReportingAndProcessingErrorType" />
            </xs:simpleType>
            <xs:annotation>
              <xs:documentation>
              See Error Codes.
            </xs:documentation>
            </xs:annotation>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureTransportErrorType" />
            </xs:simpleType>
            <xs:annotation>
              <xs:documentation>
              See Error Codes.
            </xs:documentation>
            </xs:annotation>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureSystemErrorType" />
            </xs:simpleType>
            <xs:annotation>
              <xs:documentation>
              See Error Codes.
            </xs:documentation>
            </xs:annotation>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureGenericMessageHandlingErrorType" />
            </xs:simpleType>
            <xs:annotation>
              <xs:documentation>
              See Error Codes.
            </xs:documentation>
            </xs:annotation>
            <xs:simpleType>
              <xs:restriction base="xs:token" />
            </xs:simpleType>
          </xs:union>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SIF_Desc" type="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: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">
          <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 StudentLocator; wider use may be considered in future
							versions of this specification.
						</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:choice>
              <xs:element name="StudentLocator" type="sif:StudentLocatorType">
                <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 StudentLocator; wider use may be considered in future
							versions of this specification.
						</xs:documentation>
                </xs:annotation>
              </xs:element>
            </xs:choice>
          </xs:complexType>
        </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" type="xs:normalizedString">
                      <xs:annotation>
                        <xs:documentation>Optional caption for the column.</xs:documentation>
                      </xs:annotation>
                    </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: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:restriction base="xs:positiveInteger" />
                </xs:simpleType>
                <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: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" />
                                    </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" type="xs:normalizedString">
                      <xs:annotation>
                        <xs:documentation>The caption for the column, if specified in SIF_ExtendedQuery.
					</xs:documentation>
                      </xs:annotation>
                    </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:ExtendedContentType">
                    <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 name="SIF_Header" type="sif:SIF_HeaderType">
        <xs:annotation>
          <xs:documentation>Header information associated with this message.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <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 name="SIF_Status" type="sif:SIF_StatusType">
          <xs:annotation>
            <xs:documentation>This element is used to signal a successful response.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="SIF_Error" type="sif:SIF_ErrorType">
          <xs:annotation>
            <xs:documentation>This element is used to signal an unsuccessful response.</xs:documentation>
          </xs:annotation>
        </xs:element>
      </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 name="SIF_Header" type="sif:SIF_HeaderType">
        <xs:annotation>
          <xs:documentation>Header information associated with this message.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <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 name="SIF_Header" type="sif:SIF_HeaderType">
        <xs:annotation>
          <xs:documentation>Header information associated with this message.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <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 name="SIF_Contexts" minOccurs="0" type="sif:SIF_ContextsType">
              <xs:annotation>
                <xs:documentation>The contexts in which the object is being provided; if omitted, the context is SIF_Default.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </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 name="SIF_Header" type="sif:SIF_HeaderType">
        <xs:annotation>
          <xs:documentation>Header information associated with this message.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <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 name="SIF_Contexts" minOccurs="0" type="sif:SIF_ContextsType">
                    <xs:annotation>
                      <xs:documentation>
			Applicable contexts for stated object support.  If omitted, the context defaults to SIF_Default.
		</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </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 name="SIF_Contexts" minOccurs="0" type="sif:SIF_ContextsType">
                    <xs:annotation>
                      <xs:documentation>
							Applicable contexts for stated object support.  If omitted, the context defaults to SIF_Default.
						</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </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 name="SIF_Contexts" minOccurs="0" type="sif:SIF_ContextsType">
                    <xs:annotation>
                      <xs:documentation>
							Applicable contexts for stated object support.  If omitted, the context defaults to SIF_Default.
						</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </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 name="SIF_Contexts" minOccurs="0" type="sif:SIF_ContextsType">
                    <xs:annotation>
                      <xs:documentation>
							Applicable contexts for stated object support.  If omitted, the context defaults to SIF_Default.
						</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </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 name="SIF_Contexts" minOccurs="0" type="sif:SIF_ContextsType">
                    <xs:annotation>
                      <xs:documentation>
							Applicable contexts for stated object support.  If omitted, the context defaults to SIF_Default.
						</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </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 name="SIF_Contexts" minOccurs="0" type="sif:SIF_ContextsType">
                    <xs:annotation>
                      <xs:documentation>
							Applicable contexts for stated object support.  If omitted, the context defaults to SIF_Default.
						</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </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 name="SIF_Contexts" minOccurs="0" type="sif:SIF_ContextsType">
                    <xs:annotation>
                      <xs:documentation>
							Applicable contexts for stated object support.  If omitted, the context defaults to SIF_Default.
						</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="ObjectName" use="required" type="sif:SIF_RequestObjectNamesType">
                  <xs:annotation>
                    <xs:documentation>The name of each object.</xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Provision" type="sif:SIF_ProvisionType" />


  <!--SIF_Register-->

  <xs:complexType name="SIF_RegisterType">
    <xs:annotation>
      <xs:documentation>SIF_Register is the message for registering an agent with a ZIS.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SIF_Header" type="sif:SIF_HeaderType">
        <xs:annotation>
          <xs:documentation>Header information associated with this message.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Name" type="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:element>
      <xs:element name="SIF_Version" maxOccurs="unbounded" type="sif:VersionWithWildcardsType">
        <xs:annotation>
          <xs:documentation>Specifies which SIF Specification version(s) the agent supports. 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 name="SIF_Protocol" minOccurs="0" type="sif:SIF_ProtocolType">
        <xs:annotation>
          <xs:documentation>If SIF_Mode is Push, SIF_Protocol contains protocol information for contacting the agent in Push mode. A Pull-mode agent does not need to send SIF_Protocol; if received, a ZIS ignores it.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_NodeVendor" minOccurs="0" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The vendor of the SIF agent.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_NodeVersion" minOccurs="0" type="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:element>
      <xs:element name="SIF_Application" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Vendor" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The name of the company of the product that this agent supports.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="SIF_Product" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The name of the product that this agent supports.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="SIF_Version" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The version of the product. This field is informative only.</xs:documentation>
              </xs:annotation>
            </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 name="SIF_Header" type="sif:SIF_HeaderType">
        <xs:annotation>
          <xs:documentation>Header information associated with this message.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Version" maxOccurs="unbounded" type="sif:VersionWithWildcardsType">
        <xs:annotation>
          <xs:documentation>Specifies which SIF 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 name="SIF_Query" type="sif:SIF_QueryType">
          <xs:annotation>
            <xs:documentation>Either SIF_Query or SIF_ExtendedQuery must be specified, which contain the criteria to be used to match response objects.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="SIF_ExtendedQuery" type="sif:SIF_ExtendedQueryType" />
      </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 name="SIF_Header" type="sif:SIF_HeaderType">
        <xs:annotation>
          <xs:documentation>Header information associated with this message. The SIF_DestinationId needs to be the SIF_SourceId of the original SIF_Request message being processed.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <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 name="SIF_Error" type="sif:SIF_ErrorType">
          <xs:annotation>
            <xs:documentation>The responder returns SIF_Error, SIF_ObjectData or SIF_ExtendedQueryResults.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <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 name="SIF_ExtendedQueryResults" type="sif:SIF_ExtendedQueryResultsType">
          <xs:annotation>
            <xs:documentation>This element contains the elements requested by SIF_ExtendedQuery in SIF_Request.</xs:documentation>
          </xs:annotation>
        </xs:element>
      </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 name="SIF_Header" type="sif:SIF_HeaderType">
        <xs:annotation>
          <xs:documentation>Header information associated with this message.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Object" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Contexts" minOccurs="0" type="sif:SIF_ContextsType">
              <xs:annotation>
                <xs:documentation>The contexts to which the subscription applies; if omitted, the context is SIF_Default.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </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 name="SIF_Header" type="sif:SIF_HeaderType">
        <xs:annotation>
          <xs:documentation>Header information associated with this message.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <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 name="SIF_Ping" type="sif:SIF_PingType">
              <xs:annotation>
                <xs:documentation>This element holds the sub-message being sent.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="SIF_Sleep" type="sif:SIF_SleepType">
              <xs:annotation>
                <xs:documentation>This element holds the sub-message being sent.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="SIF_Wakeup" type="sif:SIF_WakeupType">
              <xs:annotation>
                <xs:documentation>This element holds the sub-message being sent.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="SIF_GetMessage" type="sif:SIF_GetMessageType">
              <xs:annotation>
                <xs:documentation>This element holds the sub-message being sent.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="SIF_GetZoneStatus" type="sif:SIF_GetZoneStatusType">
              <xs:annotation>
                <xs:documentation>This element holds the sub-message being sent.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="SIF_GetAgentACL" type="sif:SIF_GetAgentACLType">
              <xs:annotation>
                <xs:documentation>This element holds the sub-message being sent.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </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_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 name="SIF_Header" type="sif:SIF_HeaderType">
        <xs:annotation>
          <xs:documentation>Header information associated with this message.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Object" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Contexts" minOccurs="0" type="sif:SIF_ContextsType">
              <xs:annotation>
                <xs:documentation>
	The contexts from which the object is being removed; if omitted, the context is SIF_Default.
</xs:documentation>
              </xs:annotation>
            </xs:element>
          </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 name="SIF_Header" type="sif:SIF_HeaderType">
        <xs:annotation>
          <xs:documentation>Header information contained in the message.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </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 to SIF_Events.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SIF_Header" type="sif:SIF_HeaderType">
        <xs:annotation>
          <xs:documentation>Header information associated with this message.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Object" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Contexts" minOccurs="0" type="sif:SIF_ContextsType">
              <xs:annotation>
                <xs:documentation>
	The applicable contexts; if omitted, the context is SIF_Default.
</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
          <xs:attribute name="ObjectName" use="required" type="sif:SIF_SubscribeObjectNamesType">
            <xs:annotation>
              <xs:documentation>The actual name of the object from which the agent should be unsubscribed. Events pertaining to this object published after successful unsubscription will no longer be queued for delivery to the agent. Events already queued for delivery to the agent prior to unsubscription will be delivered.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Unsubscribe" type="sif:SIF_UnsubscribeType" />


  <!--Infrastructure Data Objects-->


  <!--SIF_ZoneStatus-->

  <xs:complexType name="SIF_ZoneStatusType">
    <xs:annotation>
      <xs:documentation>
	The SIF_ZoneStatus object is an object that is implicitly provided by all Zone Integration Servers to provide
	information about the ZIS. Zone Integration Servers MUST provide this object.
</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SIF_Name" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The descriptive name for the zone.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Icon" minOccurs="0" type="xs:anyURI">
        <xs:annotation>
          <xs:documentation>
	HTTP URL referencing an icon for graphical representation of the ZIS/Zone.
	Should range from 16x16 pixels to 128x128 pixels and be of an image MIME type commonly supported by Web browsers (e.g. PNG, JPEG, GIF).
	Agents may optionally follow the more restrictive guidelines at [FAVICON].
</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Vendor" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Name" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The name of the company that wrote the ZIS.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="SIF_Product" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The product name assigned by the vendor to identify this ZIS.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="SIF_Version" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The version of the vendor's product—not necessarily the SIF version.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Providers" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Provider" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ObjectList">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Object" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="SIF_ExtendedQuerySupport" type="xs:boolean" />
                              <xs:element name="SIF_Contexts" type="sif:SIF_ContextsType" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="xs:NCName">
                              <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" type="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: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 name="SIF_Contexts" type="sif:SIF_ContextsType" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="xs:NCName">
                              <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" type="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: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 name="SIF_Contexts" type="sif:SIF_ContextsType" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="xs:NCName">
                              <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" type="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: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 name="SIF_Contexts" type="sif:SIF_ContextsType" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="xs:NCName">
                              <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" type="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: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 name="SIF_Contexts" type="sif:SIF_ContextsType" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="xs:NCName">
                              <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" type="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: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: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 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: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 name="SIF_Contexts" type="sif:SIF_ContextsType" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="xs:NCName">
                              <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" type="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: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" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>The vendor of the SIF agent.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="SIF_NodeVersion" minOccurs="0" type="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:element>
                  <xs:element name="SIF_Application" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Vendor" type="xs:normalizedString">
                          <xs:annotation>
                            <xs:documentation>The name of the company of the product that this agent supports.</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                        <xs:element name="SIF_Product" type="xs:normalizedString">
                          <xs:annotation>
                            <xs:documentation>The name of the product that this agent supports.</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                        <xs:element name="SIF_Version" type="xs:normalizedString">
                          <xs:annotation>
                            <xs:documentation>The version of the product. This field is informative only.</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="SIF_SourceId" type="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: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 name="SIF_Protocol" minOccurs="0" type="sif:SIF_ProtocolType">
                    <xs:annotation>
                      <xs:documentation>Describes the currently active protocol that the SIF node is using to communicate with the ZIS.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <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 Specification that the SIF node uses. 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 name="SIF_AuthenticationLevel" minOccurs="0" type="sif:SIF_AuthenticationLevelType">
                    <xs:annotation>
                      <xs:documentation>This is the level of authentication that the SIF node supports when it wants to communicate via a secure channel.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="SIF_EncryptionLevel" minOccurs="0" type="sif:SIF_EncryptionLevelType">
                    <xs:annotation>
                      <xs:documentation>This is the level of encryption that the SIF node supports when it wants to communicate via a secure channel.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <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 name="SIF_Protocol" maxOccurs="unbounded" type="sif:SIF_ProtocolType" />
          </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 name="SIF_Contexts" type="sif:SIF_ContextsType" />
      <xs:element name="SIF_Metadata" minOccurs="0" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" type="sif:SIF_ExtendedElementsType" />
    </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" />


  <!--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 name="SIF_Contexts" type="sif:SIF_ContextsType" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="xs:NCName">
                              <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" type="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: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 name="SIF_Contexts" type="sif:SIF_ContextsType" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="xs:NCName">
                              <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" type="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: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 name="SIF_Contexts" type="sif:SIF_ContextsType" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="xs:NCName">
                              <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" type="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: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 name="SIF_Contexts" type="sif:SIF_ContextsType" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="xs:NCName">
                              <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" type="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: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 name="SIF_Contexts" type="sif:SIF_ContextsType" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="xs:NCName">
                              <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" type="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: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: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 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: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 name="SIF_Contexts" type="sif:SIF_ContextsType" />
                            </xs:sequence>
                            <xs:attribute name="ObjectName" use="required" type="xs:NCName">
                              <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" type="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: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" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>The vendor of the SIF agent.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="SIF_NodeVersion" minOccurs="0" type="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:element>
                  <xs:element name="SIF_Application" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Vendor" type="xs:normalizedString">
                          <xs:annotation>
                            <xs:documentation>The name of the company of the product that this agent supports.</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                        <xs:element name="SIF_Product" type="xs:normalizedString">
                          <xs:annotation>
                            <xs:documentation>The name of the product that this agent supports.</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                        <xs:element name="SIF_Version" type="xs:normalizedString">
                          <xs:annotation>
                            <xs:documentation>The version of the product. This field is informative only.</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="SIF_SourceId" type="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: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 name="SIF_Protocol" minOccurs="0" type="sif:SIF_ProtocolType">
                    <xs:annotation>
                      <xs:documentation>Describes the currently active protocol that the SIF node is using to communicate with the ZIS.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <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 Specification that the SIF node uses. 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 name="SIF_AuthenticationLevel" minOccurs="0" type="sif:SIF_AuthenticationLevelType">
                    <xs:annotation>
                      <xs:documentation>This is the level of authentication that the SIF node supports when it wants to communicate via a secure channel.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="SIF_EncryptionLevel" minOccurs="0" type="sif:SIF_EncryptionLevelType">
                    <xs:annotation>
                      <xs:documentation>This is the level of encryption that the SIF node supports when it wants to communicate via a secure channel.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <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 name="SIF_Protocol" maxOccurs="unbounded" type="sif:SIF_ProtocolType" />
          </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 name="SIF_Contexts" type="sif:SIF_ContextsType" />
      <xs:element name="SIF_Metadata" minOccurs="0" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" type="sif:SIF_ExtendedElementsType" />
    </xs:sequence>
    <xs:attribute name="ZoneId" use="required" type="xs:token">
      <xs:annotation>
        <xs:documentation>
	The identifier for this Zone.
	It is the same as the SIF_SourceId that the ZIS would place in any SIF_Header that it creates.
</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>


  <!--SIF_AgentACL-->

  <xs:complexType name="SIF_AgentACLType">
    <xs:annotation>
      <xs:documentation>This object provides an Agent its access control list (ACL) settings in the Zone.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SIF_ProvideAccess">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_Contexts" type="sif:SIF_ContextsType">
                    <xs:annotation>
                      <xs:documentation>List of contexts in which rights for the given action/object apply.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </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_SubscribeAccess">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_Contexts" type="sif:SIF_ContextsType">
                    <xs:annotation>
                      <xs:documentation>List of contexts in which rights for the given action/object apply.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </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_PublishAddAccess">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_Contexts" type="sif:SIF_ContextsType">
                    <xs:annotation>
                      <xs:documentation>List of contexts in which rights for the given action/object apply.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </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_PublishChangeAccess">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_Contexts" type="sif:SIF_ContextsType">
                    <xs:annotation>
                      <xs:documentation>List of contexts in which rights for the given action/object apply.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </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_PublishDeleteAccess">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_Contexts" type="sif:SIF_ContextsType">
                    <xs:annotation>
                      <xs:documentation>List of contexts in which rights for the given action/object apply.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </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_RequestAccess">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_Contexts" type="sif:SIF_ContextsType">
                    <xs:annotation>
                      <xs:documentation>List of contexts in which rights for the given action/object apply.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </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_RespondAccess">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_Contexts" type="sif:SIF_ContextsType">
                    <xs:annotation>
                      <xs:documentation>List of contexts in which rights for the given action/object apply.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </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_Metadata" minOccurs="0" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" type="sif:SIF_ExtendedElementsType" />
    </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" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_Contexts" type="sif:SIF_ContextsType">
                    <xs:annotation>
                      <xs:documentation>List of contexts in which rights for the given action/object apply.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </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_SubscribeAccess">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_Contexts" type="sif:SIF_ContextsType">
                    <xs:annotation>
                      <xs:documentation>List of contexts in which rights for the given action/object apply.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </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_PublishAddAccess">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_Contexts" type="sif:SIF_ContextsType">
                    <xs:annotation>
                      <xs:documentation>List of contexts in which rights for the given action/object apply.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </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_PublishChangeAccess">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_Contexts" type="sif:SIF_ContextsType">
                    <xs:annotation>
                      <xs:documentation>List of contexts in which rights for the given action/object apply.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </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_PublishDeleteAccess">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_Contexts" type="sif:SIF_ContextsType">
                    <xs:annotation>
                      <xs:documentation>List of contexts in which rights for the given action/object apply.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </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_RequestAccess">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_Contexts" type="sif:SIF_ContextsType">
                    <xs:annotation>
                      <xs:documentation>List of contexts in which rights for the given action/object apply.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </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_RespondAccess">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_Contexts" type="sif:SIF_ContextsType">
                    <xs:annotation>
                      <xs:documentation>List of contexts in which rights for the given action/object apply.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </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_Metadata" minOccurs="0" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" type="sif:SIF_ExtendedElementsType" />
    </xs:sequence>
  </xs:complexType>


  <!--Data Model Common Elements-->


  <!--OtherNames-->

  <xs:complexType name="OtherNamesType">
    <xs:annotation>
      <xs:documentation>Previous, alternate or other names or aliases associated with a person.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Name" maxOccurs="unbounded">
        <xs:complexType>
          <xs:annotation>
            <xs:documentation>
					Name of the person.  Note: Type value of 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" />


  <!--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" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Code">
              <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: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:restriction base="sif:NCES0768PrimaryDisabilityTypeType" />
                  </xs:simpleType>
                  <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: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">
              <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">
        <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="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">
        <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: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: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: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: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: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: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:annotation>
      <xs:documentation>Does the state require that the course be completed for graduation?</xs:documentation>
    </xs:annotation>
    <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 name="SubjectArea" maxOccurs="unbounded" type="sif:SubjectAreaType">
        <xs:annotation>
          <xs:documentation>Subject matter.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SubjectAreaList" type="sif:SubjectAreaListType" />


  <!--TermSpan-->

  <xs:complexType name="TermSpanType">
    <xs:sequence>
      <xs:element name="Code" 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" 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 name="ContactInfo" type="sif:ContactInfoType" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SchoolContactList" type="sif:SchoolContactListType" />


  <!--SchoolURL-->

  <xs:simpleType name="SchoolURLType">
    <xs:annotation>
      <xs:documentation>URL for a school.</xs:documentation>
    </xs:annotation>
    <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:annotation>
      <xs:documentation>Name of Local Education Agency.</xs:documentation>
    </xs:annotation>
    <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:annotation>
      <xs:documentation>A person's last name.</xs:documentation>
    </xs:annotation>
    <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:annotation>
      <xs:documentation>A person's first name.</xs:documentation>
    </xs:annotation>
    <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:annotation>
      <xs:documentation>A person's middle name or initial.</xs:documentation>
    </xs:annotation>
    <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:annotation>
      <xs:documentation>Social Security Number</xs:documentation>
    </xs:annotation>
    <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:annotation>
      <xs:documentation>Is the student IDEA-eligible ("special education")? (Mutually exclusive with Section 504 classification.)</xs:documentation>
    </xs:annotation>
    <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:annotation>
      <xs:documentation>Is this a migrant student?</xs:documentation>
    </xs:annotation>
    <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:annotation>
      <xs:documentation>Is the student in Title 1 programs?</xs:documentation>
    </xs:annotation>
    <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:annotation>
      <xs:documentation>Is the student in Gifted/Talented programs?</xs:documentation>
    </xs:annotation>
    <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:annotation>
      <xs:documentation>Does the student meet the State criteria for classification as having an economic disadvantage?</xs:documentation>
    </xs:annotation>
    <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:annotation>
      <xs:documentation>Is the student an English Language Learner under Title 3?</xs:documentation>
    </xs:annotation>
    <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:annotation>
      <xs:documentation>Is the student homeless?</xs:documentation>
    </xs:annotation>
    <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: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: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:annotation>
      <xs:documentation>Does the student meet the State criteria for classification as a vocational concentrator?</xs:documentation>
    </xs:annotation>
    <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:annotation>
      <xs:documentation>Does the student meet the State criteria for classification as being an immigrant?</xs:documentation>
    </xs:annotation>
    <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:annotation>
      <xs:documentation>Is the student participating in programs for neglected, delinquent, or at risk children?</xs:documentation>
    </xs:annotation>
    <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:annotation>
      <xs:documentation>School-defined local code for a course.</xs:documentation>
    </xs:annotation>
    <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:annotation>
      <xs:documentation>State-defined standard course code used to report information about courses.</xs:documentation>
    </xs:annotation>
    <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:annotation>
      <xs:documentation>A district course code.</xs:documentation>
    </xs:annotation>
    <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:annotation>
      <xs:documentation>Title of a course.</xs:documentation>
    </xs:annotation>
    <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 name="IdentificationInfo" maxOccurs="unbounded" type="sif:IdentificationInfoType">
        <xs:annotation>
          <xs:documentation>Other identification information associated with a school or LEA.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </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="xs:decimal">
        <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" 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" 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" />


  <!--Address-->

  <xs:complexType name="AddressType">
    <xs:annotation>
      <xs:documentation>This element contains address data.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Street">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Line1" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Address line 1.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="Line2" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Address line 2.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="Line3" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Address line 3.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="Complex" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Name of the complex.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="StreetNumber" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The address number assigned to the building.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="StreetPrefix" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Street prefix like NE</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="StreetName" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The name of the street.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="StreetType" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The type of street. For example, Lane, Blvd., Ave., etc.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="StreetSuffix" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Street suffix like SW.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="ApartmentType" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Type of apartment, for example, Suite.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="ApartmentNumberPrefix" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Apartment number prefix.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="ApartmentNumber" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>The number of the apartment.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="ApartmentNumberSuffix" minOccurs="0" nillable="true" type="xs:normalizedString">
              <xs:annotation>
                <xs:documentation>Apartment number suffix.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="City" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The city part of the address.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="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 name="StateProvince" type="sif:StateProvinceType">
        <xs:annotation>
          <xs:documentation>The state or province code.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Country" type="sif:CountryType">
        <xs:annotation>
          <xs:documentation>The country code.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PostalCode" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The ZIP/postal code.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="GridLocation" minOccurs="0" nillable="true" type="sif:GridLocationType">
        <xs:annotation>
          <xs:documentation>The location of the address.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs: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: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: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:simpleType>
        <xs:restriction base="sif:USPSAbbreviationsType" />
      </xs:simpleType>
      <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:simpleType>
        <xs:restriction base="sif:CanadaPostProvincesAndTerritoriesType" />
      </xs:simpleType>
      <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: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:annotation>
      <xs:documentation>A country code.</xs:documentation>
    </xs:annotation>
    <xs:union>
      <xs:annotation>
        <xs:documentation>A country code.</xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="sif:ISO31661EnglishCountryNamesAndCodeElementsType" />
      </xs:simpleType>
      <xs:annotation>
        <xs:documentation>A country code.</xs:documentation>
      </xs:annotation>
      <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: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: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:simpleType>
        <xs:restriction base="xs:unsignedInt" />
      </xs:simpleType>
      <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: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">
        <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: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:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ContactInfo" type="sif:ContactInfoType" />


  <!--HispanicLatino-->

  <xs:simpleType name="HispanicLatinoType">
    <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: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" />


  <!--RaceList-->

  <xs:complexType name="RaceListType">
    <xs:sequence>
      <xs:element name="Race" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Code" type="sif:NCES0849RaceType">
              <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: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:annotation>
      <xs:documentation>A person's gender.</xs:documentation>
    </xs:annotation>
    <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:annotation>
      <xs:documentation>A person's date of birth.</xs:documentation>
    </xs:annotation>
    <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" maxOccurs="unbounded" type="sif:CountryType">
              <xs:annotation>
                <xs:documentation>A person's country of citizenship.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="CountriesOfResidency" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="CountryOfResidency" maxOccurs="unbounded" type="sif:CountryType">
              <xs:annotation>
                <xs:documentation>A person's country of residence.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="CountryArrivalDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date the person first arrived in the country.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="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">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Code" 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>
      <xs:element name="LanguageList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Language" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Code" type="sif: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>
      <xs:element name="DwellingArrangement" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Code" 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:annotation>
      <xs:documentation>A code representing the highest level of education completed by a person.</xs:documentation>
    </xs:annotation>
    <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 name="ElectronicId" maxOccurs="unbounded" type="sif:ElectronicIdType" />
    </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" 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" />


  <!--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:annotation>
      <xs:documentation>The first date on which a student enters.</xs:documentation>
    </xs:annotation>
    <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:annotation>
      <xs:documentation>The date on which a student exits.</xs:documentation>
    </xs:annotation>
    <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">
        <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 name="GradeLevel" maxOccurs="unbounded" type="sif:GradeLevelType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="GradeLevels" type="sif:GradeLevelsType" />


  <!--GraduationDate-->

  <xs:complexType name="GraduationDateType">
    <xs:annotation>
      <xs:documentation>Date student officially graduated from secondary education.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Year" type="xs:gYear">
        <xs:annotation>
          <xs:documentation>Year of graduation (CCYY).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Month" minOccurs="0" nillable="true">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:annotation>
              <xs:documentation>Month of graduation (MM).</xs:documentation>
            </xs:annotation>
            <xs:pattern value="([0][1-9])|([1][0-2])" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="Day" minOccurs="0" nillable="true">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:annotation>
              <xs:documentation>Day of graduation (DD).</xs:documentation>
            </xs:annotation>
            <xs:pattern value="([0-2][0-9])|([3][0-1])" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="GraduationDate" type="sif:GraduationDateType" />


  <!--ProjectedGraduationYear-->

  <xs:simpleType name="ProjectedGraduationYearType">
    <xs:annotation>
      <xs:documentation>Currently projected graduation year (CCYY).</xs:documentation>
    </xs:annotation>
    <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:annotation>
      <xs:documentation>First projected graduation year, usually determined when student is accepted into 9th grade (CCYY).</xs:documentation>
    </xs:annotation>
    <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">
        <xs:simpleType>
          <xs:restriction base="xs:decimal">
            <xs:annotation>
              <xs:documentation>Latitude in decimal degrees.</xs:documentation>
            </xs:annotation>
            <xs:minInclusive value="-90" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:maxInclusive value="90" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="Longitude">
        <xs:simpleType>
          <xs:restriction base="xs:decimal">
            <xs:annotation>
              <xs:documentation>Longitude in decimal degrees.</xs:documentation>
            </xs:annotation>
            <xs:minInclusive value="-180" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:maxInclusive value="180" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="GridLocation" type="sif:GridLocationType" />


  <!--HomeroomNumber-->

  <xs:simpleType name="HomeroomNumberType">
    <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 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: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 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: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 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:annotation>
      <xs:documentation>Operational condition of an institution.</xs:documentation>
    </xs:annotation>
    <xs:union>
      <xs:annotation>
        <xs:documentation>Operational condition of an institution.</xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="sif:NCES0256SchoolStatusType" />
      </xs:simpleType>
      <xs:annotation>
        <xs:documentation>Operational condition of an institution.</xs:documentation>
      </xs:annotation>
      <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" 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" />


  <!--PhoneNumber-->

  <xs:complexType name="PhoneNumberType">
    <xs:annotation>
      <xs:documentation>This element represents a phone number and occurs within objects such as StudentPersonal, StaffPersonal, etc.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Number" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Phone number.  Free-form, but typical 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:annotation>
      <xs:documentation>Indicates whether or not information should be published in a directory.</xs:documentation>
    </xs:annotation>
    <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" 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:annotation>
      <xs:documentation>The name of the school.</xs:documentation>
    </xs:annotation>
    <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: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 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" />


  <!--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" />


  <!--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">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <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:pattern value="[0-9]{5}" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="CourseLevel">
        <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">
        <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">
        <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">
        <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:annotation>
      <xs:documentation>The identifier for this entity as assigned by the state or province.</xs:documentation>
    </xs:annotation>
    <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">
        <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: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:restriction base="sif:SCEDSecondaryCoursesType" />
            </xs:simpleType>
            <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: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" 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:annotation>
      <xs:documentation>This gives information about a meal type.</xs:documentation>
    </xs:annotation>
    <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" />


  <!--DataModelTaskForce-->


  <!--SIF_Metadata-->

  <xs:complexType name="SIF_MetadataType">
    <xs:annotation>
      <xs:documentation>A commonly defined container for metadata elements defined within SIF.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="TimeElements" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="TimeElement" minOccurs="0" maxOccurs="unbounded" type="sif:TimeElementType" />
          </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 name="RightsElement" minOccurs="0" maxOccurs="unbounded" type="sif:RightsElementType" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Metadata" type="sif:SIF_MetadataType" />


  <!--TimeElement-->

  <xs:complexType name="TimeElementType">
    <xs:annotation>
      <xs:documentation>A common metadata element designed to contain time data, both self-defined and by type.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Type" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>
		This element is designed to contain the time period attached to an object.
		Very long periods (school year, quarter, etc.) and very small periods (second, millisecond, etc.) can be defined.
		This element provides a scoping description of the time metadata enclosed.
	</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Code" type="xs:token">
        <xs:annotation>
          <xs:documentation>
							This element provides a place for the application to send structured data (code values, unique identifier, timestamps).
							This code value can, depending upon the use case agreement between agents, be used to qualify the data in the </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Name" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>
							Contains a human-readable description of the value in </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Value" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Contains the human-readable value.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StartDateTime" minOccurs="0" nillable="true" type="xs:dateTime" />
      <xs:element name="EndDateTime" minOccurs="0" nillable="true" type="xs:dateTime" />
      <xs:element name="SpanGaps" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SpanGap" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Type" type="xs:normalizedString" />
                  <xs:element name="Code" type="xs:token" />
                  <xs:element name="Name" type="xs:normalizedString" />
                  <xs:element name="Value" type="xs:normalizedString" />
                  <xs:element name="StartDateTime" minOccurs="0" nillable="true" type="xs:dateTime" />
                  <xs:element name="EndDateTime" minOccurs="0" nillable="true" type="xs:dateTime" />
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="IsCurrent" type="xs:boolean">
        <xs:annotation>
          <xs:documentation>
							This element allows for the system to tag an object as being explicitly current.
							Although the baseline assumption in SIF is that objects are always current (default value is typically </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="TimeElement" type="sif:TimeElementType" />


  <!--LifeCycle-->

  <xs:complexType name="LifeCycleType">
    <xs:annotation>
      <xs:documentation>
								This common metadata element describes the life cycle of the object it represents, based on the IEEE LOM LifeCycle element [LOM].
							</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Created" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="DateTime" type="xs:dateTime" />
            <xs:element name="Creators" minOccurs="0" nillable="true">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Creator" maxOccurs="unbounded">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="Name" type="xs:normalizedString">
                          <xs:annotation>
                            <xs:documentation>
							Human-readable name of the data's creator. If the object contains system-generated data,
							the name should identify the creating service or application.
						</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                        <xs:element name="ID" type="xs:normalizedString">
                          <xs:annotation>
                            <xs:documentation>Unique identifier of the creator.  An email address or URI could be used here.</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="ModificationHistory" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Modified" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="By" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>Identifier of the system or person that modified the data.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="DateTime" type="xs:dateTime">
                    <xs:annotation>
                      <xs:documentation>The date/time the modification occurred.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="Description" minOccurs="0" nillable="true" type="xs:string">
                    <xs:annotation>
                      <xs:documentation>Human readable description of the data modifications.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="TimeElements" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="TimeElement" minOccurs="0" maxOccurs="unbounded" type="sif:TimeElementType" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="LifeCycle" type="sif:LifeCycleType" />


  <!--RightsElement-->

  <xs:complexType name="RightsElementType">
    <xs:annotation>
      <xs:documentation>
								A common metadata element designed to carry any intellectual property or copyright information, based on the IEEE LOM Rights element [LOM].
							</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Cost" minOccurs="0" nillable="true" type="xs:boolean" />
      <xs:element name="FeesForUse" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="FeeForUse" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="UseType" type="xs:string">
                    <xs:annotation>
                      <xs:documentation>
							A description of the fee structure for this resource.
							Some resources may be licensed differently depending upon their context.
							For example, a content provider might charge one fee structure for resources used in the classroom and a separate fee for those
							resources available to parents from home.
						</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="MeteringType" type="xs:token" />
                  <xs:element name="MeteringURL" minOccurs="0" nillable="true" type="xs:anyURI" />
                  <xs:element name="PerUseCharge" minOccurs="0" nillable="true" type="sif:MonetaryAmountType" />
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="CopyrightStatement" minOccurs="0" nillable="true" type="xs:string" />
      <xs:element name="TermsOfUse" minOccurs="0" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="RightsElement" type="sif:RightsElementType" />


  <!--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" 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:IdRefType">
                    <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: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" />


  <!--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" 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: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" />


  <!--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" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>
							Reference to statistic defined by </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Characteristics">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="AggregateCharacteristicInfoRefId" 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" 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:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType" />
  </xs:complexType>

  <xs:element name="AggregateStatisticFact" type="sif:AggregateStatisticFactType" />


  <!--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 name="MealStatus" maxOccurs="unbounded" type="sif:MealStatusType">
              <xs:annotation>
                <xs:documentation>
								The student's meal status.  Note that as this status is historical, StartDate and EndDate together,
								and/or SchoolYear MUST be included.  If SchoolYear is included,
								StartDate and EndDate should not cross school year boundaries, i.e. in addition to multiple
								statuses being a possibility in a given school year, the same status may be repeated so StartDate and EndDate don't
								disagree with SchoolYear, if included.
							</xs:documentation>
              </xs:annotation>
            </xs:element>
          </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" 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: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" />


  <!--FoodserviceItem-->

  <xs:complexType name="FoodserviceItemType">
    <xs:sequence>
      <xs:element name="LocalId" type="sif:LocalIdType">
        <xs:annotation>
          <xs:documentation>Item number as presented to user.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <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: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" />


  <!--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" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>GUID that identifies related item</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Description" type="xs:string">
        <xs:annotation>
          <xs:documentation>Description of unit ("cup", "teaspoon", etc.)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="MeasureDescriptionCode" 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" 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: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" />


  <!--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" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>GUID that identifies related item portion</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ItemPortionQuantity" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>Quantity of item portion (number of units)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ItemPortionType">
        <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: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" />


  <!--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" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>GUID that identifies the school.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StartDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>Effective start date for the reimbursement rates</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EndDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>Effective end date for the reimbursement rates</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Program" type="sif:ProgramType" />
      <xs:element name="Agencies">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Agency" 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">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="Rate" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="Value" type="xs:decimal">
                                <xs:annotation>
                                  <xs:documentation>The rate value</xs:documentation>
                                </xs:annotation>
                              </xs:element>
                              <xs:element name="MealStatus" type="sif:MealStatusType" />
                            </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: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" />


  <!--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" 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 name="Program" type="sif:ProgramType" />
      <xs:element name="Prices">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Price" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Value" type="sif:MonetaryAmountType">
                    <xs:annotation>
                      <xs:documentation>The price value</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="MealStatus" type="sif:MealStatusType" />
                  <xs:element name="MealType" type="sif:MealTypeType" />
                  <xs:element name="GradeLevels" type="sif:GradeLevelsType" />
                </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: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" />


  <!--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 name="EarnedStatus" type="sif:EarnedStatusType" />
      <xs:element name="LastBreakfastDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>Last breakfast served date</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LastLunchDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>Last lunch served date</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Amounts">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Amount" 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: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" />


  <!--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" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>GUID that identifies the school/site of account transaction</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Program" type="sif:ProgramType" />
      <xs:element name="TransactionDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date of transaction</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TransactionTime" type="xs:time">
        <xs:annotation>
          <xs:documentation>Time of transaction.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TransactionTypes">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="TransactionType" 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">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="MealStatus" minOccurs="0" nillable="true" type="sif:MealStatusType" />
            <xs:element name="EarnedStatus" minOccurs="0" nillable="true" type="sif:EarnedStatusType" />
          </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="StudentPersonalRefId" />
                <xs:enumeration value="StaffPersonalRefId" />
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
        </xs:complexType>
      </xs:element>
      <xs:element name="Amount" 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">
        <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: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" />


  <!--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" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>GUID that identifies food service transaction</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Amounts">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Amount" 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: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" />


  <!--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" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>GUID that identifies food service transaction</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TransactionPayMethods">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="TransactionPayMethod" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Amounts">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="Amount" 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: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" />


  <!--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" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>School for which the sales object applies</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Date" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date on which the sales occurred.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Program" type="sif:ProgramType" />
      <xs:element name="SalesAmounts">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SalesAmount" 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: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" />


  <!--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" 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" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date of sales</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Program" type="sif:ProgramType" />
      <xs:element name="ItemQuantities">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="ItemQuantity" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Value" type="xs:decimal">
                    <xs:annotation>
                      <xs:documentation>The value of item quantity</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="MealType" type="sif:MealTypeType" />
                  <xs:element name="GradeLevels" type="sif:GradeLevelsType" />
                  <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: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" />


  <!--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" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>GUID that identifies the school for this menu plan</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="GradeLevels" type="sif:GradeLevelsType" />
      <xs:element name="MenuPlanDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date of menu plan</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Program" type="sif:ProgramType" />
      <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" type="xs:string">
        <xs:annotation>
          <xs:documentation>Feeding figure projected</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="MenuPlanQuantities">
        <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="xs:decimal">
                    <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: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" />


  <!--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" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>School for which the sales object applies</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Date" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date on which the sales occurred.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Program" type="sif:ProgramType" />
      <xs:element name="SaleQuantities">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SaleQuantity" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Value" type="xs:decimal">
                    <xs:annotation>
                      <xs:documentation>The quantity sold.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="MealStatus" type="sif:MealStatusType" />
                  <xs:element name="SaleUnit" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>Unit of Sale</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="ChargeToChild" 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: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" />


  <!--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" 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">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="PurchaseQuantity" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="MealType" type="sif:MealTypeType" />
                  <xs:element name="Value" 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: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" />


  <!--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 name="Program" type="sif:ProgramType" />
      <xs:element name="Counts">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Count" 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: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" />


  <!--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" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>School for which the sales object applies</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Date" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date on which the sales occurred.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Program" type="sif:ProgramType" />
      <xs:element name="Counts">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Count" 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: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" />


  <!--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 name="Program" type="sif:ProgramType" />
      <xs:element name="Counts">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Count" 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: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" />


  <!--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" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>School for which the sales object applies</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Date" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date on which the sales occurred.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Program" type="sif:ProgramType" />
      <xs:element name="Counts">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Count" 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: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" />


  <!--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">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="StudentDemographicRecordRefId" 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" 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: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" type="xs:date">
        <xs:annotation>
          <xs:documentation>The date this record was prepared.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StudentPersonalData">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="LocalId" 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="LegalName">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="LastName" type="sif:LastNameType" />
                  <xs:element name="FirstName" type="sif:FirstNameType" />
                  <xs:element name="MiddleName" minOccurs="0" nillable="true" type="sif:MiddleNameType" />
                </xs:sequence>
              </xs:complexType>
            </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: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:element>
            <xs:element name="PhoneNumberList" minOccurs="0" nillable="true" type="sif:PhoneNumberListType" />
            <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">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Name" type="sif:NameType" />
                  <xs:element name="PhoneNumberList" minOccurs="0" nillable="true" type="sif:PhoneNumberListType" />
                  <xs:element name="AddressList" minOccurs="0" nillable="true" type="sif:AddressListType" />
                </xs:sequence>
              </xs:complexType>
            </xs:element>
            <xs:element name="ParentGuardian2">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Name" type="sif:NameType" />
                  <xs:element name="PhoneNumberList" minOccurs="0" nillable="true" type="sif:PhoneNumberListType" />
                  <xs:element name="AddressList" minOccurs="0" nillable="true" type="sif:AddressListType" />
                </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: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" />


  <!--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" type="xs:date">
        <xs:annotation>
          <xs:documentation>The date this record was prepared.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StudentSchoolEnrollmentData">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="GradeLevel" type="sif:GradeLevelType" />
            <xs:element name="Advisor" minOccurs="0" nillable="true">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="StaffPersonalData">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="Name" type="sif:NameType" />
                        <xs:element name="Title" minOccurs="0" nillable="true" type="xs:normalizedString" />
                        <xs:element name="AddressList" minOccurs="0" nillable="true" type="sif:AddressListType" />
                        <xs:element name="PhoneNumberList" minOccurs="0" nillable="true" type="sif:PhoneNumberListType" />
                      </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">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="Name" type="sif:NameType" />
                        <xs:element name="Title" minOccurs="0" nillable="true" type="xs:normalizedString" />
                        <xs:element name="AddressList" minOccurs="0" nillable="true" type="sif:AddressListType" />
                        <xs:element name="PhoneNumberList" minOccurs="0" nillable="true" type="sif:PhoneNumberListType" />
                      </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="xs:date">
        <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">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SchoolAttended" 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 name="LEAName" type="sif:LEANameType" />
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="SchoolInfoData">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="LocalId" 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 name="SchoolName" type="sif:SchoolNameType" />
                        <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:element name="PhoneNumberList" minOccurs="0" nillable="true" type="sif:PhoneNumberListType" />
                        <xs:element name="GradeLevels" 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" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="Name" 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" maxOccurs="unbounded">
                                      <xs:complexType>
                                        <xs:sequence>
                                          <xs:element name="Code" 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: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:complexType>
                                    </xs:element>
                                  </xs:sequence>
                                </xs:complexType>
                              </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">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="StudentSchoolEnrollmentData" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SchoolYear" type="sif:SchoolYearType" />
                  <xs:element name="EntryDate" type="sif:EntryDateType" />
                  <xs:element name="ExitDate" minOccurs="0" nillable="true" type="sif:ExitDateType">
                    <xs:annotation>
                      <xs:documentation>Note: Mandatory if student exited school.</xs:documentation>
                    </xs:annotation>
                  </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">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SchoolYear" minOccurs="0" nillable="true" type="sif:SchoolYearType" />
                  <xs:element name="StartDate" minOccurs="0" nillable="true" type="xs:date" />
                  <xs:element name="EndDate" minOccurs="0" nillable="true" type="xs:date" />
                  <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">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Course" 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">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="CourseCode" 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" 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="xs:date">
                          <xs:annotation>
                            <xs:documentation>Date course section started.</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                        <xs:element name="EndDate" minOccurs="0" nillable="true" type="xs:date">
                          <xs:annotation>
                            <xs:documentation>Date course section ended, or will end.</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                        <xs:element name="MarkingPeriod">
                          <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="xs:date" />
                                    <xs:element name="EndDate" minOccurs="0" nillable="true" type="xs:date" />
                                    <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" 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" 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">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Term" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="TermInfoData">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SchoolYear" minOccurs="0" nillable="true" type="sif:SchoolYearType" />
                        <xs:element name="StartDate" type="xs:date" />
                        <xs:element name="EndDate" type="xs:date" />
                        <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">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="Course" 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">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="CourseCode" 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" 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="xs:date">
                                <xs:annotation>
                                  <xs:documentation>Date course section started.</xs:documentation>
                                </xs:annotation>
                              </xs:element>
                              <xs:element name="EndDate" minOccurs="0" nillable="true" type="xs:date">
                                <xs:annotation>
                                  <xs:documentation>Date course section ended.</xs:documentation>
                                </xs:annotation>
                              </xs:element>
                              <xs:element name="MarkingPeriods">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="MarkingPeriod" 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="xs:date" />
                                                <xs:element name="EndDate" minOccurs="0" nillable="true" type="xs:date" />
                                                <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" 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" type="xs:decimal">
                                            <xs:annotation>
                                              <xs:documentation>Number of course credits attempted.</xs:documentation>
                                            </xs:annotation>
                                          </xs:element>
                                          <xs:element name="CourseCreditsEarned" 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: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">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="TermPerformance" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="TermInfoData">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SchoolYear" minOccurs="0" nillable="true" type="sif:SchoolYearType" />
                        <xs:element name="StartDate" minOccurs="0" nillable="true" type="xs:date" />
                        <xs:element name="EndDate" type="xs:date" />
                        <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" type="sif:GradeLevelType">
                    <xs:annotation>
                      <xs:documentation>Student's grade level at time.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="CreditsAttempted" type="xs:decimal">
                    <xs:annotation>
                      <xs:documentation>Number of credits attempted.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="CreditsEarned" type="xs:decimal">
                    <xs:annotation>
                      <xs:documentation>Number of credits earned.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="GPACreditsAttempted" type="xs:decimal">
                    <xs:annotation>
                      <xs:documentation>Number of GPA credits attempted.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="GPACreditsEarned" type="xs:decimal">
                    <xs:annotation>
                      <xs:documentation>Number of GPA credits earned.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="GPAGradePoints" type="xs:decimal">
                    <xs:annotation>
                      <xs:documentation>Number of GPA points received.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="GPA" 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" type="xs:decimal">
                    <xs:annotation>
                      <xs:documentation>Number of days absent.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="DaysPresent" 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">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="TotalCreditsAttempted" type="xs:decimal">
              <xs:annotation>
                <xs:documentation>Total credits attempted during academic career.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="TotalCreditsEarned" type="xs:decimal">
              <xs:annotation>
                <xs:documentation>Total credits earned during academic career.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="CumulativeGPACreditsEarned" 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" 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" 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" type="xs:unsignedInt">
              <xs:annotation>
                <xs:documentation>Student's rank in graduating class.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="ClassTotalNumber" 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="xs:date">
              <xs:annotation>
                <xs:documentation>Date class ranking was determined.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="ProjectedGraduationDate" type="xs:date">
              <xs:annotation>
                <xs:documentation>Projected graduation date.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="GraduationDate" minOccurs="0" nillable="true" type="xs:date">
              <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:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="AssessmentPerformanceHistory" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Assessment" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Name" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>Textual description of assessment.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="AdministrationDate" type="xs:date">
                    <xs:annotation>
                      <xs:documentation>Date the assessment was administered.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="Form" minOccurs="0" nillable="true" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>Form, version or edition of the test.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="Level" minOccurs="0" nillable="true" type="xs:string">
                    <xs:annotation>
                      <xs:documentation>Free-form text description of the level of the test.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="StudentGradeLevelWhenAssessed" type="sif:GradeLevelType">
                    <xs:annotation>
                      <xs:documentation>Student's grade level when assessed.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="SubtestCategory" minOccurs="0" nillable="true" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>The subtest or subject category of the assessment.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="TestScoreType" type="sif:NCES0056AssessmentReportingMethodType">
                    <xs:annotation>
                      <xs:documentation>Type of test score.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="TestScore" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>Test score.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="AdditionalGraduationRequirementPerformanceHistory" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Requirement" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Name" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>Textual description of the requirement.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="Method" minOccurs="0" nillable="true" type="xs:string">
                    <xs:annotation>
                      <xs:documentation>The method by which the requirement was met.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="Status">
                    <xs:annotation>
                      <xs:documentation>Student's status with regard to the requirement.</xs:documentation>
                    </xs:annotation>
                    <xs:simpleType>
                      <xs:restriction base="xs:token">
                        <xs:enumeration value="Met" />
                        <xs:enumeration value="Not Met" />
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                  <xs:element name="StatusDeterminationDate" type="xs:date">
                    <xs:annotation>
                      <xs:documentation>Date the student's status was determined.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="ActivityAwardHistory" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="ActivityAward" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Name" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>The title that identifies a particular co-curricular or extra-curricular activity.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="InvolvementCode" minOccurs="0" nillable="true" type="sif:NCES0679ActivityInvolvementCodeType">
                    <xs:annotation>
                      <xs:documentation>The code used to identify the co-curricular or extra-curricular activity in which the individual is involved.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="InvolvementBeginningDate" minOccurs="0" nillable="true" type="xs:date">
                    <xs:annotation>
                      <xs:documentation>The month, day, and year on which the individual began to participate in the activity.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="InvolvementEndingDate" minOccurs="0" nillable="true" type="xs:date">
                    <xs:annotation>
                      <xs:documentation>The month, day, and year on which the individual ceased to participate in the activity.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="InvolvementAmount" minOccurs="0" nillable="true" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>An indication of the degree to which the individual is involved in the activity (e.g., number of hours per week).</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="HonorsInformationCode" minOccurs="0" nillable="true" type="sif:NCES0674HonorsInformationCodeType">
                    <xs:annotation>
                      <xs:documentation>A designation of the type of academic distinctions or other honors earned by or awarded to the student.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="HonorsDescription" minOccurs="0" nillable="true" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>A textual description of the distinction or honor.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="DiplomaCredentialHonorsCode" minOccurs="0" nillable="true" type="sif:NCES0684DiplomaCredentialLevelAndHonorsType">
                    <xs:annotation>
                      <xs:documentation>The nature of recognition given the student for the successful completion of work in high school.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="DiplomaCredentialHonorsDescription" minOccurs="0" nillable="true" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>A textual description of the recognition.</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: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="StudentAcademicRecord" type="sif:StudentAcademicRecordType" />


  <!--StudentSpecialEducationRecord-->

  <xs:complexType name="StudentSpecialEducationRecordType">
    <xs:annotation>
      <xs:documentation>Conveys a student's special education program information for student record exchange.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="ReportingDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>The date this record was prepared.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LEAInfoData">
        <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 name="LEAName" type="sif:LEANameType" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SchoolInfoData">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="LocalId" 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 name="SchoolName" type="sif:SchoolNameType" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="StudentParticipationData">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="ProgramType" type="sif:ProgramTypeType" />
            <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 name="LEAName" type="sif:LEANameType" />
                </xs:sequence>
              </xs:complexType>
            </xs:element>
            <xs:element name="SchoolInfoData">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="LocalId" 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 name="SchoolName" type="sif:SchoolNameType" />
                  <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:element name="PhoneNumberList" minOccurs="0" nillable="true" type="sif:PhoneNumberListType" />
                </xs:sequence>
              </xs:complexType>
            </xs:element>
            <xs:element name="ReferralDate" minOccurs="0" nillable="true" type="xs:date" />
            <xs:element name="ProgramStatus" minOccurs="0" nillable="true" type="sif:ProgramStatusType" />
            <xs:element name="EvaluationDate" minOccurs="0" nillable="true" type="xs:date" />
            <xs:element name="ReevaluationDate" minOccurs="0" nillable="true" type="xs:date" />
            <xs:element name="ExceptionalityCategories" minOccurs="0" nillable="true" type="sif:ExceptionalityCategoriesType" />
            <xs:element name="ProgramPlanDate" minOccurs="0" nillable="true" type="xs:date" />
            <xs:element name="ProgramPlanEffectiveDate" minOccurs="0" nillable="true" type="xs:date" />
            <xs:element name="PlannedAssessmentParticipation" minOccurs="0" nillable="true" type="sif:PlannedAssessmentParticipationType" />
          </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: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="StudentSpecialEducationRecord" type="sif:StudentSpecialEducationRecordType" />


  <!--StudentRecordPackage-->

  <xs:complexType name="StudentRecordPackageType">
    <xs:annotation>
      <xs:documentation>Wraps content or a record not defined by SIF but that is part of a student's records.</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="sif:AbstractContentPackageType">
        <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:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:element name="StudentRecordPackage" type="sif:StudentRecordPackageType" />


  <!--GradeBookWorkingGroup-->


  <!--MarkValueInfo-->

  <xs:complexType name="MarkValueInfoType">
    <xs:annotation>
      <xs:documentation>This object defines the types of values allowed for a mark and the domain for each mark value.  At least one of the Percentage, Numeric, Letter or Narrative nodes must be used to create a valid MarkValueInfo.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SchoolYear" type="sif:SchoolYearType">
        <xs:annotation>
          <xs:documentation>The year that this  MarkValueInfo applies to.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Name" 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">
        <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:attribute name="IsAccepted" use="required" type="xs:boolean">
            <xs:annotation>
              <xs:documentation>Indicates whether a percent Mark is accepted and is used in Change events to unambiguously signal whether support for the Mark has changed, especially ended.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:complexType>
      </xs:element>
      <xs:element name="Numeric">
        <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:attribute name="IsAccepted" use="required" type="xs:boolean">
            <xs:annotation>
              <xs:documentation>Indicates whether a raw numeric score is accepted and is used in Change events to unambiguously signal whether support for the score has changed, especially ended.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:complexType>
      </xs:element>
      <xs:element name="Letter">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="ValidMark" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Code" 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: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:complexType>
            </xs:element>
          </xs:sequence>
          <xs:attribute name="IsAccepted" use="required" type="xs:boolean">
            <xs:annotation>
              <xs:documentation>Indicates whether a letter Mark is accepted and is used in Change events to unambiguously signal whether support for the Mark has changed, especially ended.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:complexType>
      </xs:element>
      <xs:element name="Narrative">
        <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:attribute name="IsAccepted" use="required" type="xs:boolean">
            <xs:annotation>
              <xs:documentation>Indicates whether a narrative is accepted and is used in Change events to unambiguously signal whether support for a narrative has changed, especially ended.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </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:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) that uniquely identifies this MarkValueInfo entity.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="SchoolInfoRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) that uniquely identifies the School that these Mark Values apply to.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="MarkValueInfo" type="sif:MarkValueInfoType" />


  <!--MarkInfo-->

  <xs:complexType name="MarkInfoType">
    <xs:annotation>
      <xs:documentation>
								This object defines each mark that can be recorded and associates it with a MarkValueInfo object that lists the types of values and valid values for each type.  It also
								places the definition in the context of a school and a school year.
							</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SchoolYear" type="sif:SchoolYearType">
        <xs:annotation>
          <xs:documentation>The year that this  MarkInfo applies to.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Description" type="xs:string">
        <xs:annotation>
          <xs:documentation>Textual description of the type of Mark (e.g. "Marking Period Grade", "Comment 1", "Comment 2", "Conduct", "Effort", "WorkHabits").</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:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) that uniquely identifies this Grading Mark entity.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="MarkValueInfoRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) that uniquely identifies the MarkValueInfo.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="SchoolInfoRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) that uniquely identifies the School that this Mark applies to.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="MarkInfo" type="sif:MarkInfoType" />


  <!--SectionMarkInfo-->

  <xs:complexType name="SectionMarkInfoType">
    <xs:annotation>
      <xs:documentation>This object defines the marking periods (TermInfo) that marks (StudentSectionMarks) are recorded in for a particular section (SectionInfo) and lists the types of marks (MarkTypeInfo) that are valid for that marking period (TermInfo).</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="TermMarkLists">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="MarkInfoList" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="MarkInfoRefId" maxOccurs="unbounded" type="sif:IdRefType">
                    <xs:annotation>
                      <xs:documentation>The ID (GUID) that identifies a mark that this class uses for grading.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="TermInfoRefId" use="required" type="sif:IdRefType">
                  <xs:annotation>
                    <xs:documentation>The ID (GUID) that identifies the marking period that the following marks are recorded in.</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:sequence>
    <xs:attribute name="SectionInfoRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) that uniquely identifies the SectionInfo object that this item refers to.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="SchoolInfoRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) that uniquely identifies the School that these Mark Values apply to.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="SectionMarkInfo" type="sif:SectionMarkInfoType" />


  <!--StudentSectionMarks-->

  <xs:complexType name="StudentSectionMarksType">
    <xs:annotation>
      <xs:documentation>This object contains the marks entered for a student in a class section for a specific marking period.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="IsFinal" type="xs:boolean">
        <xs:annotation>
          <xs:documentation>Indicates if the grades are "Final" from the perspective of the teacher or school.  Does not mean that change events will not occur for this item.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="MarkList">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Mark" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Percentage" minOccurs="0" nillable="true">
                    <xs:simpleType>
                      <xs:restriction base="xs:decimal">
                        <xs:annotation>
                          <xs:documentation>The percent score for this mark (0.00 - 100.00).</xs:documentation>
                        </xs:annotation>
                        <xs:minInclusive value="0" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                        <xs:maxInclusive value="100" 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="Numeric" minOccurs="0" nillable="true" type="xs:decimal">
                    <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="MarkInfoRefId" use="required" type="sif:IdRefType">
                  <xs:annotation>
                    <xs:documentation>The ID (GUID) that identifies a mark that was given for this student.</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:sequence>
    <xs:attribute name="StudentPersonalRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) that uniquely identifies the StudentPersonal object that this item refers to.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="SectionInfoRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) that uniquely identifies the SectionInfo object that this item refers to.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="TermInfoRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) that identifies the marking period that the following marks are recorded in.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="SchoolInfoRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) that uniquely identifies the School that these Mark Values apply to.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="StudentSectionMarks" type="sif:StudentSectionMarksType" />


  <!--GradingCategory-->

  <xs:complexType name="GradingCategoryType">
    <xs:annotation>
      <xs:documentation>This object provides information about a particular grading category to provide grouping and type information for assignments.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Description" type="xs:string">
        <xs:annotation>
          <xs:documentation>The name/short description of the category.</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:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>GUID that identifies a grading category.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="SectionInfoRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The GUID for the SectionInfo object that this category is used for grading in.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="TermInfoRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The GUID for the TermInfo object that defines the marking period that the category was created in.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="SchoolInfoRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) that uniquely identifies the School that these Mark Values apply to.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="GradingCategory" type="sif:GradingCategoryType" />


  <!--GradingAssignment-->

  <xs:complexType name="GradingAssignmentType">
    <xs:annotation>
      <xs:documentation>This object provides information about a particular assignment, allows applications to synchronize each other's assignment tables, gathers the definition for a GradingAssignmentScore object, etc.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Description" type="xs:string">
        <xs:annotation>
          <xs:documentation>The text-based description of the assignment.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PointsPossible" type="xs:unsignedInt">
        <xs:annotation>
          <xs:documentation>The points possible on the assignment.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CreateDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Creation date of the assignment.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DueDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date the assignment is due.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Weight" minOccurs="0" nillable="true" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>The weight of the assignment.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DetailedDescription" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:annotation>
            <xs:documentation>
								This element defines the assignment.  
								If the Type attribute is URL, this is the location of the document that describes the assignment.  
								If Type is PDF, this element will contain the Base64 encoding of the entire document.
							</xs:documentation>
          </xs:annotation>
          <xs:simpleContent>
            <xs:extension base="sif:URIOrBinaryType">
              <xs:attribute name="Type" use="required">
                <xs:annotation>
                  <xs:documentation>The type of information that is contained in the DetailedDescription element.</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="URL" />
                    <xs:enumeration value="PDF" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </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:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>A GUID that identifies GradingAssignment.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="SectionInfoRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The GUID for the SectionInfo object.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="TermInfoRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The GUID for the TermInfo object that defines the marking period that the assignment was created in.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="SchoolInfoRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The ID (GUID) that uniquely identifies the School that these Mark Values apply to.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="GradingCategoryRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The GUID for the GradingCategory that this assignment is part of.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="GradingAssignment" type="sif:GradingAssignmentType" />


  <!--GradingAssignmentScore-->

  <xs:complexType name="GradingAssignmentScoreType">
    <xs:annotation>
      <xs:documentation>This object provides score information about a particular assignment.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="ScorePoints" minOccurs="0" nillable="true" type="xs:unsignedInt">
        <xs:annotation>
          <xs:documentation>The score represented as points.  Conditionally required that one or more of ScorePoints, ScorePercent or ScoreLetter must be filled in.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ScorePercent" minOccurs="0" nillable="true" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>The score represented as a percent.  Conditionally required that one or more of ScorePoints, ScorePercent or ScoreLetter must be filled in.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ScoreLetter" minOccurs="0" nillable="true" type="xs:string">
        <xs:annotation>
          <xs:documentation>The score represented as a letter grade.  Conditionally required that one or more of ScorePoints, ScorePercent or ScoreLetter must be filled in.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ScoreDescription" minOccurs="0" nillable="true" type="xs:string">
        <xs:annotation>
          <xs:documentation>Text description of the score.</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:sequence>
    <xs:attribute name="StudentPersonalRefId" use="required" type="sif:IdRefType" />
    <xs:attribute name="SectionInfoRefId" use="required" type="sif:IdRefType" />
    <xs:attribute name="SchoolInfoRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The GUID that specifies the school this score was recorded at.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="GradingAssignmentRefId" use="required" type="sif:IdRefType" />
  </xs:complexType>

  <xs:element name="GradingAssignmentScore" type="sif:GradingAssignmentScoreType" />


  <!--StudentPeriodAttendance-->

  <xs:complexType name="StudentPeriodAttendanceType">
    <xs:annotation>
      <xs:documentation>
								This object provides attendance for a student in the context of a SectionInfo object.
								This object is used by all agents in a zone that provide period attendance,
								but don't have the logic to determine whether or not they have sufficient rights to override attendance from another user or system.
								Agents that represent a system that can validate attendance based on, among other things, its source, should subscribe to
								StudentPeriodAttendance events to collect "suggested" attendance changes from the zone,
								and should then publish "accepted" attendance changes as OfficialStudentPeriodAttendance events.
								A rejected change would result in an event that reverts the system that generated the rejected event back to its previous state
								or to some other state that represents the correct "official" attendance.
							</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="TimetablePeriod" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The period within which attendance is being reported, e.g. "4D".  Conditional on the SectionInfo object having MeetingTime elements.  If one or more are defined for the Section, this element is required.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TimeIn" minOccurs="0" nillable="true" type="xs:time">
        <xs:annotation>
          <xs:documentation>The time the student entered or returned to this class.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TimeOut" minOccurs="0" nillable="true" type="xs:time">
        <xs:annotation>
          <xs:documentation>The time the student left this class.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AttendanceCode">
        <xs:annotation>
          <xs:documentation>The local attendance code.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:token">
              <xs:attribute name="AttendanceCodeInfoRefId" use="required" type="sif:IdRefType" />
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="AuditInfo">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="CreationUser">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="UserId" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>Unique identifier of the user that created the attendance record.  This will depend on the user and the source.  The preferred identifier would be a RefId for a StaffPersonal, StudentContact, or StudentPersonal Object.  However, the user may not be associated with any of these SIF objects.  In that case a unique ID given by the source should be used.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="Type" use="required">
                  <xs:annotation>
                    <xs:documentation>The role of the staff member for that created this attendance record.</xs:documentation>
                  </xs:annotation>
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:enumeration value="Office Staff" />
                      <xs:enumeration value="School Admin" />
                      <xs:enumeration value="Parent" />
                      <xs:enumeration value="Nurse" />
                      <xs:enumeration value="Teacher" />
                      <xs:enumeration value="Other" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
            <xs:element name="CreationDateTime" type="xs:dateTime">
              <xs:annotation>
                <xs:documentation>The date and time of this attendance record was created.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="AttendanceComment" minOccurs="0" nillable="true" type="xs:string">
        <xs:annotation>
          <xs:documentation>This element contains the comments that are relevant to this attendance record.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType" />
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType" />
    <xs:attribute name="StudentPersonalRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The GUID of the student that this attendance applies to.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="SectionInfoRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The GUID of the section that this attendance applies to.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="SchoolInfoRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The school where the attendance was recorded.  Somewhat redundant, needed for requests.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="Date" use="required" type="xs:date">
      <xs:annotation>
        <xs:documentation>The date of the attendance event.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="StudentPeriodAttendance" type="sif:StudentPeriodAttendanceType" />


  <!--OfficialStudentPeriodAttendance-->

  <xs:complexType name="OfficialStudentPeriodAttendanceType">
    <xs:complexContent>
      <xs:annotation>
        <xs:documentation>This object provides attendance for a student in the  context of a SectionInfo object.  It is used to represent the final/official attendance that has been assigned to a student.  Only one agent in a zone should generate events for this object.  That agent is responsible for receiving and validating all StudentPeriodAttendance events and 
for generating a corresponding OfficialStudentPeriodAttendance event once any unofficial events have been processed.</xs:documentation>
      </xs:annotation>
      <xs:extension base="sif:StudentPeriodAttendanceType">
        <xs:annotation>
          <xs:documentation>This object provides attendance for a student in the  context of a SectionInfo object.  It is used to represent the final/official attendance that has been assigned to a student.  Only one agent in a zone should generate events for this object.  That agent is responsible for receiving and validating all StudentPeriodAttendance events and 
for generating a corresponding OfficialStudentPeriodAttendance event once any unofficial events have been processed.</xs:documentation>
        </xs:annotation>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:element name="OfficialStudentPeriodAttendance" type="sif:OfficialStudentPeriodAttendanceType" />


  <!--HumanResourcesFinancialsWorkingGroup-->


  <!--Billing-->

  <xs:complexType name="BillingType">
    <xs:annotation>
      <xs:documentation>This object contains an amount to be billed to an outside entity.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="BilledEntity">
        <xs:complexType>
          <xs:annotation>
            <xs:documentation>ID of the entity being billed for this billing activity (e.g., student, employee, organization).</xs:documentation>
          </xs:annotation>
          <xs:simpleContent>
            <xs:extension base="sif:IdRefType">
              <xs:attribute name="SIF_RefObject" use="required">
                <xs:annotation>
                  <xs:documentation>
								SIF object referenced by SIF_RefId.
							</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="StudentPersonal" />
                    <xs:enumeration value="StaffPersonal" />
                    <xs:enumeration value="VendorInfo" />
                    <xs:enumeration value="Purchasing" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="BillingDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date of the transaction.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TransactionDescription" type="xs:string">
        <xs:annotation>
          <xs:documentation>Description of the transaction.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="BilledAmount" type="sif:MonetaryAmountType">
        <xs:annotation>
          <xs:documentation>Amount to be billed.</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:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>GUID for this transaction. The application that owns this object is responsible for generating this unique ID.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="Billing" type="sif:BillingType" />


  <!--Payment-->

  <xs:complexType name="PaymentType">
    <xs:annotation>
      <xs:documentation>This object complements the Billing object, and contains information about the payment of a Billing object.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="ReceivedDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date payment was received.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ReceivedAmount" type="sif:MonetaryAmountType">
        <xs:annotation>
          <xs:documentation>Amount received.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ReceivedTransactionId" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Memo transaction ID from other vendor software.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TransactionDescription" minOccurs="0" nillable="true" type="xs:string">
        <xs:annotation>
          <xs:documentation>Description of the transaction.</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:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>GUID for this transaction. The application that owns this object is responsible for generating this unique ID.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="BillingRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>A pointer back to the Billing object.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="Payment" type="sif:PaymentType" />


  <!--EmployeeAssignment-->

  <xs:complexType name="EmployeeAssignmentType">
    <xs:annotation>
      <xs:documentation>
								This object defines information related to an employee assignment as it pertains to the human resource needed to track employee assignment for employee reporting and financial funding tracking.
								The staff assignment record will hold more detail of the actual assignment.
								There are multiple records for each assignment and/or location.
							</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Description" type="xs:string">
        <xs:annotation>
          <xs:documentation>Short assignment description</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LocationInfoRefId" minOccurs="0" nillable="true" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>
								This is an optional element so the placement of the employee within the agency can be tracked as needed.
								The GUID references the LocationInfo object.
							</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="JobStartDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>This is the date from which the staff assignment is valid (inclusive).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="JobEndDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>This is the date through which the staff assignment is valid (inclusive).  Present if the JobStartDate is entered and a JobEndDate is available.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="JobFTE" minOccurs="0" nillable="true">
        <xs:simpleType>
          <xs:restriction base="xs:decimal">
            <xs:annotation>
              <xs:documentation>Full-time job equivalent ratio for this assignment. (Format is x.xx; an employee who is full-time and who spends 50% of their time on this assignment would be represented as 0.50)</xs:documentation>
            </xs:annotation>
            <xs:minInclusive value="0" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:maxInclusive value="1" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:fractionDigits value="2" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="JobClassification" minOccurs="0" nillable="true" type="sif:NCES0557JobClassificationType">
        <xs:annotation>
          <xs:documentation>The specific group of duties or responsibilities of position.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ProgramType" minOccurs="0" nillable="true" type="sif:NCES0229ProgramTypeType">
        <xs:annotation>
          <xs:documentation>The type of instructional or non-instructional program.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="FundingSource" minOccurs="0" nillable="true" type="sif:NCES0222ProgramFundingSourceType">
        <xs:annotation>
          <xs:documentation>Provider of funds for the program or service.</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:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The GUID that uniquely identifies a particular HR staff assignment.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="EmployeePersonalRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>This GUID referencing the parent EmployeePersonal object</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="EmployeeAssignment" type="sif:EmployeeAssignmentType" />


  <!--EmployeeContract-->

  <xs:complexType name="EmployeeContractType">
    <xs:annotation>
      <xs:documentation>This object contains HR contract information related to employees.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="BaseSalary" type="sif:MonetaryAmountType">
        <xs:annotation>
          <xs:documentation>Base salary of employee for this contact</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ContractStartDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>Contractual start date.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ContractEndDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>Contractual ending date.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ContractTerm" minOccurs="0" nillable="true" type="sif:NCES0468ContractualTermType">
        <xs:annotation>
          <xs:documentation>Contractual Term in school years</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ContractDays" minOccurs="0" nillable="true" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>Number of days in service for contract total</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AssignmentDays" minOccurs="0" nillable="true" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>Number of days per year employee is expected to work in this assignment</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:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The GUID of the employee contract information.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="EmployeePersonalRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The GUID that refers to the EmployeePersonal object.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="EmployeeContract" type="sif:EmployeeContractType" />


  <!--EmploymentRecord-->

  <xs:complexType name="EmploymentRecordType">
    <xs:sequence>
      <xs:element name="Active" minOccurs="0" nillable="true" type="xs:boolean">
        <xs:annotation>
          <xs:documentation>Staff is currently active and/or employed.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="FullTimeStatus" minOccurs="0" nillable="true" type="sif:NCES0476FullTimeStatusType">
        <xs:annotation>
          <xs:documentation>Full-time status of employee.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="HireDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date the employee was hired.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TerminationDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date the employee resigned.  Present if a HireDate is entered and a TerminationDate is available.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TotalYearsExperience" minOccurs="0" nillable="true" type="xs:unsignedInt">
        <xs:annotation>
          <xs:documentation>Total number of years of prior experience.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PositionTitle" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Employee's current position title.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PositionNumber" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Employee's level or category assigned by employer.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SeniorityDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date employee has seniority.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TenureDate" minOccurs="0" nillable="true" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date employee is tenured.</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:sequence>
    <xs:attribute name="SIF_RefId" use="optional" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The GUID can either refer to the EmployeePersonal or StaffPersonal object.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="SIF_RefObject" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="EmployeePersonal" />
          <xs:enumeration value="StaffPersonal" />
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="EmploymentRecord" type="sif:EmploymentRecordType" />


  <!--EmployeePersonal-->

  <xs:complexType name="EmployeePersonalType">
    <xs:annotation>
      <xs:documentation>This object contains basic HR information for employees.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="OtherIdList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="OtherId" minOccurs="0" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation>This field can hold a SSN, state or locally assigned ID.</xs:documentation>
              </xs:annotation>
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:normalizedString">
                    <xs:attribute name="Type" use="required">
                      <xs:simpleType>
                        <xs:restriction base="xs:token">
                          <xs:enumeration value="SSN" />
                          <xs:enumeration value="State" />
                          <xs:enumeration value="Local" />
                          <xs:enumeration value="Other" />
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:attribute>
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Name" type="sif:NameType">
        <xs:annotation>
          <xs:documentation>Name of employee.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Demographics" minOccurs="0" nillable="true" type="sif:DemographicsType">
        <xs:annotation>
          <xs:documentation>This element contains information related to employee demographics.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AddressList" minOccurs="0" nillable="true" type="sif:AddressListType">
        <xs:annotation>
          <xs:documentation>The employee's address(es).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PhoneNumberList" minOccurs="0" nillable="true" type="sif:PhoneNumberListType">
        <xs:annotation>
          <xs:documentation>The employee's phone number(s).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EmailList" minOccurs="0" nillable="true" type="sif:EmailListType">
        <xs:annotation>
          <xs:documentation>The employee's e-mail address(es).</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:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The GUID that uniquely identifies this employee.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="EmployeePersonal" type="sif:EmployeePersonalType" />


  <!--EmployeePicture-->

  <xs:complexType name="EmployeePictureType">
    <xs:annotation>
      <xs:documentation>This object contains information about an employee's picture.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="PictureSource">
        <xs:complexType>
          <xs:annotation>
            <xs:documentation>
								This element defines the picture. If the Type attribute is URL, this is the location of the picture in [JPEG] format; if Type is JPEG, this is the [JPEG] image data encoded using the Base64 Content-Transfer-Encoding defined in Section 6.8 of [RFC 2045].
							</xs:documentation>
          </xs:annotation>
          <xs:simpleContent>
            <xs:extension base="sif:URIOrBinaryType">
              <xs:attribute name="Type" use="required">
                <xs:annotation>
                  <xs:documentation>The way the picture is specified.</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="URL" />
                    <xs:enumeration value="JPEG" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType" />
    </xs:sequence>
    <xs:attribute name="EmployeePersonalRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>This is the GUID of the Employee whose picture this is.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="EmployeePicture" type="sif:EmployeePictureType" />


  <!--FinancialAnnual-->

  <xs:complexType name="FinancialAnnualType">
    <xs:annotation>
      <xs:documentation>
								This object contains information about account code annual financial totals, summarized by major and/or minor
								account code breaks.
							</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="ReportDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date on which snapshot was generated.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StateProvinceId" type="sif:StateProvinceIdType">
        <xs:annotation>
          <xs:documentation>State assigned reporting ID for district or agency</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="FiscalYear" type="xs:gYear">
        <xs:annotation>
          <xs:documentation>Fiscal year of summary account</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AnnualItems">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="AnnualItem" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="AccountType">
                    <xs:annotation>
                      <xs:documentation>Classification of budgetary account code summary</xs:documentation>
                    </xs:annotation>
                    <xs:simpleType>
                      <xs:restriction base="xs:token">
                        <xs:enumeration value="Revenue" />
                        <xs:enumeration value="Expenditure" />
                        <xs:enumeration value="Other" />
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                  <xs:element name="FundType">
                    <xs:annotation>
                      <xs:documentation>Is the account a general or special account code designation?</xs:documentation>
                    </xs:annotation>
                    <xs:simpleType>
                      <xs:restriction base="xs:token">
                        <xs:enumeration value="General" />
                        <xs:enumeration value="Special" />
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                  <xs:element name="StateProvinceId" minOccurs="0" nillable="true" type="sif:StateProvinceIdType">
                    <xs:annotation>
                      <xs:documentation>State-assigned ID for the relative area in which the expenditure/revenue was used.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="ExpenditureArea" minOccurs="0" nillable="true">
                    <xs:annotation>
                      <xs:documentation>Relative area in which the expenditure was used.</xs:documentation>
                    </xs:annotation>
                    <xs:simpleType>
                      <xs:restriction base="xs:token">
                        <xs:enumeration value="Elementary" />
                        <xs:enumeration value="Secondary" />
                        <xs:enumeration value="Federal" />
                        <xs:enumeration value="Other" />
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                  <xs:element name="Function" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>Function break in account code for summarization.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="Object" minOccurs="0" nillable="true" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>Object break in account code for summarization.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="InstructionalProgram" minOccurs="0" nillable="true" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>Instructional program break in account code for summarization</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="Amount" type="xs:decimal">
                    <xs:annotation>
                      <xs:documentation>Summarized amount.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="SpecialAmountType" minOccurs="0" nillable="true">
                    <xs:annotation>
                      <xs:documentation>With regard to regional/local education service agencies report of "special" account code information, the account code summarization can be classified as:</xs:documentation>
                    </xs:annotation>
                    <xs:simpleType>
                      <xs:restriction base="xs:token">
                        <xs:enumeration value="1">
                          <xs:annotation>
                            <xs:documentation>Special Education</xs:documentation>
                          </xs:annotation>
                        </xs:enumeration>
                        <xs:enumeration value="2">
                          <xs:annotation>
                            <xs:documentation>Transportation</xs:documentation>
                          </xs:annotation>
                        </xs:enumeration>
                        <xs:enumeration value="3">
                          <xs:annotation>
                            <xs:documentation>Early Intervention</xs:documentation>
                          </xs:annotation>
                        </xs:enumeration>
                        <xs:enumeration value="4">
                          <xs:annotation>
                            <xs:documentation>Institutionalized Children</xs:documentation>
                          </xs:annotation>
                        </xs:enumeration>
                        <xs:enumeration value="5">
                          <xs:annotation>
                            <xs:documentation>Other</xs:documentation>
                          </xs:annotation>
                        </xs:enumeration>
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                  <xs:element name="GLAmountType" minOccurs="0" nillable="true">
                    <xs:annotation>
                      <xs:documentation>General Ledger Amount Type.  With regard to an account code grouping classified as a General Ledger account:</xs:documentation>
                    </xs:annotation>
                    <xs:simpleType>
                      <xs:restriction base="xs:token">
                        <xs:enumeration value="1">
                          <xs:annotation>
                            <xs:documentation>Administration</xs:documentation>
                          </xs:annotation>
                        </xs:enumeration>
                        <xs:enumeration value="2">
                          <xs:annotation>
                            <xs:documentation>Curriculum Development and Improvement</xs:documentation>
                          </xs:annotation>
                        </xs:enumeration>
                        <xs:enumeration value="3">
                          <xs:annotation>
                            <xs:documentation>Education Planning</xs:documentation>
                          </xs:annotation>
                        </xs:enumeration>
                        <xs:enumeration value="4">
                          <xs:annotation>
                            <xs:documentation>Instructional Materials</xs:documentation>
                          </xs:annotation>
                        </xs:enumeration>
                        <xs:enumeration value="5">
                          <xs:annotation>
                            <xs:documentation>Management</xs:documentation>
                          </xs:annotation>
                        </xs:enumeration>
                        <xs:enumeration value="6">
                          <xs:annotation>
                            <xs:documentation>Continuing Education</xs:documentation>
                          </xs:annotation>
                        </xs:enumeration>
                        <xs:enumeration value="7">
                          <xs:annotation>
                            <xs:documentation>Pupil Personnel</xs:documentation>
                          </xs:annotation>
                        </xs:enumeration>
                        <xs:enumeration value="8">
                          <xs:annotation>
                            <xs:documentation>State and Federal Liaison</xs:documentation>
                          </xs:annotation>
                        </xs:enumeration>
                        <xs:enumeration value="9">
                          <xs:annotation>
                            <xs:documentation>Federal</xs:documentation>
                          </xs:annotation>
                        </xs:enumeration>
                        <xs:enumeration value="10">
                          <xs:annotation>
                            <xs:documentation>Medical Assistance</xs:documentation>
                          </xs:annotation>
                        </xs:enumeration>
                        <xs:enumeration value="11">
                          <xs:annotation>
                            <xs:documentation>Auxiliary services of non-profit private and parochial schools</xs:documentation>
                          </xs:annotation>
                        </xs:enumeration>
                        <xs:enumeration value="12">
                          <xs:annotation>
                            <xs:documentation>Other</xs:documentation>
                          </xs:annotation>
                        </xs:enumeration>
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="FinancialAnnual" type="sif:FinancialAnnualType" />


  <!--FinancialBudget-->

  <xs:complexType name="FinancialBudgetType">
    <xs:annotation>
      <xs:documentation>
								This object contains information about account code budget totals, summarized by major and/or minor account code
								breaks. It is a snapshot object used to allow a district to report summarized financial budgetary
								information to their state as required.
							</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="ReportDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date on which snapshot was generated.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StateProvinceId" type="sif:StateProvinceIdType">
        <xs:annotation>
          <xs:documentation>State-assigned identifier for this location</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="FiscalYear" type="xs:gYear">
        <xs:annotation>
          <xs:documentation>Fiscal Year of summary account</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="BudgetAccounts">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="BudgetAccount" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="AccountClass">
                    <xs:annotation>
                      <xs:documentation>Classification of budgetary account code summary</xs:documentation>
                    </xs:annotation>
                    <xs:simpleType>
                      <xs:restriction base="xs:token">
                        <xs:enumeration value="Revenue" />
                        <xs:enumeration value="Expenditure" />
                        <xs:enumeration value="Other" />
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:element>
                  <xs:element name="FundBreakdown" minOccurs="0" nillable="true" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>Fund breakdown of account code for summarization.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="FunctionBreakdown" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>Function breakdown of account code for summarization.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="ObjectBreakdown" minOccurs="0" nillable="true" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>Object breakdown of account code for summarization.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="BudgetAmount" type="xs:unsignedInt">
                    <xs:annotation>
                      <xs:documentation>Summarized, positive amount without cents for breakdowns</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:sequence>
  </xs:complexType>

  <xs:element name="FinancialBudget" type="sif:FinancialBudgetType" />


  <!--TimeWorked-->

  <xs:complexType name="TimeWorkedType">
    <xs:annotation>
      <xs:documentation>This object contains information about the time worked by an employee on a specific job.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="EmployeePersonalRefId" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>References associated EmployeePersonal object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LocationInfoRefId" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>Site where employee actually worked.  References LocationInfo object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="JobFunction" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Code" type="sif:NCES0568FunctionTypeType">
              <xs:annotation>
                <xs:documentation>Code representing the type of job function.</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="RegularHours" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>Regular hours worked.  Enter 0 if no hours worked.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="OvertimeHours" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>Overtime hours worked.  Enter 0 if no overtime hours worked.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PayPeriod" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Pay period hours were worked in.</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:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>GUID for this object. The application that owns this object is responsible for generating this unique ID.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="TimeWorked" type="sif:TimeWorkedType" />


  <!--VendorInfo-->

  <xs:complexType name="VendorInfoType">
    <xs:annotation>
      <xs:documentation>This object contains basic vendor information.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Name" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Name of the vendor.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ContactInfo" minOccurs="0" nillable="true" type="sif:ContactInfoType">
        <xs:annotation>
          <xs:documentation>Contact information.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CustomerId" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Account number or other ID.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EmployeePersonalRefId" minOccurs="0" nillable="true" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>
								When the vendor and employee are the same, it may be appropriate to link the EmployeePersonal records to
								the VendorInfo when tracking expense and tuition reimbursement.  This is the GUID of the associated EmployeePersonal object.
							</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Send1099" minOccurs="0" nillable="true" type="xs:boolean">
        <xs:annotation>
          <xs:documentation>Send 1099 to this vendor.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="FederalTaxId" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>Taxpayer identification number/Federal tax ID for this vendor.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:normalizedString">
              <xs:attribute name="Code" use="required">
                <xs:annotation>
                  <xs:documentation>
								The type tax ID that this is. TIN based on IRS Publication 1915 [IRSTIN].
							</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="EIN" />
                    <xs:enumeration value="SSNO" />
                    <xs:enumeration value="ITIN" />
                    <xs:enumeration value="ATIN" />
                    <xs:enumeration value="OTHER" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </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:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>Vendor ID.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="VendorInfo" type="sif:VendorInfoType" />


  <!--W4-->

  <xs:complexType name="W4Type">
    <xs:annotation>
      <xs:documentation>
								This object contains the information completed on a W4 tax form. (Please note that this object is defined to
								represent the current deductions allowances for the employee; this is not intended to circumvent or replace IRS
								reporting standards but to faciliatate movement of W4 data from system to system within the LEA.)
							</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="W4Date" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date W4 was completed.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="MaritalStatusRate">
        <xs:annotation>
          <xs:documentation>This denotes the current martial status of the employee</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Married" />
            <xs:enumeration value="Single" />
            <xs:enumeration value="MarriedSingleRate" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="FedAllowancesNumber" type="xs:unsignedInt">
        <xs:annotation>
          <xs:documentation>Number of federal allowances.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StateAllowancesNumber" minOccurs="0" nillable="true" type="xs:unsignedInt">
        <xs:annotation>
          <xs:documentation>Number of state allowances.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StateProvince" type="sif:StateProvinceType">
        <xs:annotation>
          <xs:documentation>State of residence.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Exempt" type="xs:boolean">
        <xs:annotation>
          <xs:documentation>Is this employee exempt from federal and state exemptions?</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:sequence>
    <xs:attribute name="EmployeePersonalRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>This is the GUID that points to the employee represented in the EmployeePersonal object.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="W4" type="sif:W4Type" />


  <!--EmployeeWage-->

  <xs:complexType name="EmployeeWageType">
    <xs:annotation>
      <xs:documentation>This object contains HR/payroll employee information used to define how to pay an employee per pay cycle.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="PayRates">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="PayRate" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Amount" type="sif:MonetaryAmountType">
                    <xs:annotation>
                      <xs:documentation>Pay amount.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="Percentage" type="xs:decimal">
                    <xs:annotation>
                      <xs:documentation>Percentage of pay this represents.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="Type" use="required">
                  <xs:annotation>
                    <xs:documentation>Type of pay</xs:documentation>
                  </xs:annotation>
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:enumeration value="P">
                        <xs:annotation>
                          <xs:documentation>Per pay</xs:documentation>
                        </xs:annotation>
                      </xs:enumeration>
                      <xs:enumeration value="H">
                        <xs:annotation>
                          <xs:documentation>Hourly</xs:documentation>
                        </xs:annotation>
                      </xs:enumeration>
                      <xs:enumeration value="D">
                        <xs:annotation>
                          <xs:documentation>Per diem</xs:documentation>
                        </xs:annotation>
                      </xs:enumeration>
                      <xs:enumeration value="X">
                        <xs:annotation>
                          <xs:documentation>Extra pay</xs:documentation>
                        </xs:annotation>
                      </xs:enumeration>
                    </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:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The GUID of the employee's pay information.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="EmployeePersonalRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The GUID that refers to the EmployeePersonal object.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="EmployeeWage" type="sif:EmployeeWageType" />


  <!--LocationInfo-->

  <xs:complexType name="LocationInfoType">
    <xs:annotation>
      <xs:documentation>LocationInfo represents a location in a district.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SiteCategory" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Specific site category.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Name" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Text name of the location</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Description" minOccurs="0" nillable="true" type="xs:string">
        <xs:annotation>
          <xs:documentation>Description about the location.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LocalId" type="sif:LocalIdType">
        <xs:annotation>
          <xs:documentation>The locally-assigned identifier for this location.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="IdentificationInfoList" minOccurs="0" nillable="true" type="sif:IdentificationInfoListType" />
      <xs:element name="StateProvinceId" minOccurs="0" nillable="true" type="sif:StateProvinceIdType">
        <xs:annotation>
          <xs:documentation>The state-assigned identifier for this location.</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 location.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LEAInfoRefId" minOccurs="0" nillable="true" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>The ID (GUID) that identifies the district.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="OtherLEAs" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="LEAInfoRefId" minOccurs="0" maxOccurs="unbounded" type="sif:IdRefType">
              <xs:annotation>
                <xs:documentation>The ID (GUID) of an other related education agency, such as a regional service agency.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="ParentLocationInfo" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:annotation>
            <xs:documentation>A LocationInfo instance could be related to another LocationInfo. This element will help create that relation.</xs:documentation>
          </xs:annotation>
          <xs:simpleContent>
            <xs:extension base="sif:IdRefType">
              <xs:attribute name="SIF_RefObject" use="required">
                <xs:annotation>
                  <xs:documentation>The name of the object referenced.</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="LocationInfo" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="SchoolInfoRefId" minOccurs="0" nillable="true" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>The RefId of a corresponding SchoolInfo object.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AddressList" minOccurs="0" nillable="true" type="sif:AddressListType">
        <xs:annotation>
          <xs:documentation>This element has the LocationInfo address information.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PhoneNumberList" minOccurs="0" nillable="true" type="sif:PhoneNumberListType">
        <xs:annotation>
          <xs:documentation>The location's phone numbers.</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:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The SIF unique identifier for the location.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="LocationType" use="required">
      <xs:annotation>
        <xs:documentation>Defines whether the location is a school or a non-school location.</xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="School" />
          <xs:enumeration value="NonSchool" />
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="LocationInfo" type="sif:LocationInfoType" />


  <!--Purchasing-->

  <xs:complexType name="PurchasingType">
    <xs:annotation>
      <xs:documentation>This object provides information down to the line item level for requisitions and purchase orders.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="FormType">
        <xs:annotation>
          <xs:documentation>Type of purchasing document.</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="PO">
              <xs:annotation>
                <xs:documentation>Purchase order</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
            <xs:enumeration value="REQ">
              <xs:annotation>
                <xs:documentation>Requisition</xs:documentation>
              </xs:annotation>
            </xs:enumeration>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="FormNumber" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Requisition or PO number.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="FiscalYearRefId" minOccurs="0" nillable="true" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>Reference to fiscal year for the transaction.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="VendorInfoRefId" minOccurs="0" nillable="true" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>This object references the VendorInfo object and should be considered mandatory when FormType="PO"</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LocationInfoRefId" minOccurs="0" nillable="true" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>The building ID for this purchasing activity.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EmployeePersonalRefId" minOccurs="0" nillable="true" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>The employee ID for the originator of this purchasing activity.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PurchasingItems">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="PurchasingItem" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="ItemNumber" minOccurs="0" nillable="true" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>Vendor item number.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="ItemDescription" type="xs:string">
                    <xs:annotation>
                      <xs:documentation>Description of the item.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="Quantity" minOccurs="0" nillable="true" type="xs:normalizedString">
                    <xs:annotation>
                      <xs:documentation>Quantity ordered.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="UnitCost" minOccurs="0" nillable="true" type="sif:MonetaryAmountType">
                    <xs:annotation>
                      <xs:documentation>Unit cost of the item.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="ExpenseAccounts" minOccurs="0" nillable="true">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="ExpenseAccount" minOccurs="0" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="AccountCode" type="xs:token">
                                <xs:annotation>
                                  <xs:documentation>Account code charged to this item.</xs:documentation>
                                </xs:annotation>
                              </xs:element>
                              <xs:element name="Amount" type="sif:MonetaryAmountType">
                                <xs:annotation>
                                  <xs:documentation>Amount charged to this account.</xs:documentation>
                                </xs:annotation>
                              </xs:element>
                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType" />
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>Transaction GUID for this purchasing activity. The application that owns this object and is responsible for generating this unique ID.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="Purchasing" type="sif:PurchasingType" />


  <!--AccountingPeriod-->

  <xs:complexType name="AccountingPeriodType">
    <xs:annotation>
      <xs:documentation>This object defines an accounting period within a fiscal year.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Name" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Name of the accounting period.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Description" minOccurs="0" nillable="true" type="xs:string" />
      <xs:element name="FiscalYearRefId" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>Fiscal year to which this accounting period belongs.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StartDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>Start date of the accounting period.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EndDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>End date of the accounting period.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType" />
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>GUID that identifies this accounting period.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="AccountingPeriod" type="sif:AccountingPeriodType" />


  <!--FinancialAccount-->

  <xs:complexType name="FinancialAccountType">
    <xs:annotation>
      <xs:documentation>This object communicates information about a financial account.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="AccountNumber" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Account number used for ledger.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Name" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Name of the account.</xs:documentation>
        </xs:annotation>
      </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="FinancialClassRefId" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>Financial class of the account.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CreationDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>Account creation date.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CreationTime" type="xs:time">
        <xs:annotation>
          <xs:documentation>Account creation time.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType" />
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>GUID that identifies this financial account.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="FinancialAccount" type="sif:FinancialAccountType" />


  <!--FinancialAccountAccountingPeriodLocationInfo-->

  <xs:complexType name="FinancialAccountAccountingPeriodLocationInfoType">
    <xs:annotation>
      <xs:documentation>This object relates financial account to an accounting period and a location.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="FinancialAccountRefId" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>Financial account reference.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AccountingPeriodRefId" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>Accounting period reference.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LocationInfoRefId" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>LocationInfo reference.</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: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="FinancialAccountAccountingPeriodLocationInfo" type="sif:FinancialAccountAccountingPeriodLocationInfoType" />


  <!--FinancialClass-->

  <xs:complexType name="FinancialClassType">
    <xs:annotation>
      <xs:documentation>This object communicates financial class information. Financial classes are used to categorize financial accounts.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Name" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Name of the financial class.</xs:documentation>
        </xs:annotation>
      </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="ClassType">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Asset" />
            <xs:enumeration value="Liability" />
            <xs:enumeration value="Revenue" />
            <xs:enumeration value="Expense" />
          </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:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>GUID that identifies this financial class.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="FinancialClass" type="sif:FinancialClassType" />


  <!--FinancialIncomeStatement-->

  <xs:complexType name="FinancialIncomeStatementType">
    <xs:annotation>
      <xs:documentation>This object communicates the income statement details for a location and an accounting period.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="GenerationDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>Generation date.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="GenerationTime" type="xs:time">
        <xs:annotation>
          <xs:documentation>Generation time.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LocationInfoRefId" type="sif:IdRefType">
        <xs:annotation>
          <xs:documentation>LocationInfo reference.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Period">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="StartDate" type="xs:date">
              <xs:annotation>
                <xs:documentation>Start date.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="EndDate" type="xs:date">
              <xs:annotation>
                <xs:documentation>End date.</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Amounts">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Amount" maxOccurs="unbounded">
              <xs:complexType>
                <xs:annotation>
                  <xs:documentation>Amount in the account.</xs:documentation>
                </xs:annotation>
                <xs:simpleContent>
                  <xs:extension base="sif:MonetaryAmountType">
                    <xs:attribute name="FinancialAccountAccountingPeriodLocationInfoRefId" use="required" type="sif:IdRefType">
                      <xs:annotation>
                        <xs:documentation>FinancialAccountAccountingPeriodLocationInfo reference.</xs:documentation>
                      </xs:annotation>
                    </xs:attribute>
                    <xs:attribute name="FinancialClassRefId" use="required" type="sif:IdRefType">
                      <xs:annotation>
                        <xs:documentation>Class of the financial account.</xs:documentation>
                      </xs:annotation>
                    </xs:attribute>
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Program" minOccurs="0" nillable="true" type="sif:ProgramType" />
      <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:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>GUID that identifies this income statement.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="FinancialIncomeStatement" type="sif:FinancialIncomeStatementType" />


  <!--FinancialTransaction-->

  <xs:complexType name="FinancialTransactionType">
    <xs:annotation>
      <xs:documentation>This object communicates a financial transaction. A transaction can be for the daily food sales revenue account.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="TransactionDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>Transaction date.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TransactionTime" type="xs:time">
        <xs:annotation>
          <xs:documentation>Transaction time.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Amounts">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Amount" maxOccurs="unbounded">
              <xs:complexType>
                <xs:annotation>
                  <xs:documentation>Monetary amount of the transaction.</xs:documentation>
                </xs:annotation>
                <xs:simpleContent>
                  <xs:extension base="sif:MonetaryAmountType">
                    <xs:attribute name="FinancialAccountAccountingPeriodLocationInfoRefId" use="required" type="sif:IdRefType">
                      <xs:annotation>
                        <xs:documentation>Account.</xs:documentation>
                      </xs:annotation>
                    </xs:attribute>
                    <xs:attribute name="Type" use="required">
                      <xs:simpleType>
                        <xs:restriction base="xs:token">
                          <xs:enumeration value="Debit" />
                          <xs:enumeration value="Credit" />
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:attribute>
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Program" minOccurs="0" nillable="true" type="sif:ProgramType" />
      <xs:element name="Description" minOccurs="0" nillable="true" type="xs:string" />
      <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:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>GUID that identifies this financial transaction.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="FinancialTransaction" type="sif:FinancialTransactionType" />


  <!--FiscalYear-->

  <xs:complexType name="FiscalYearType">
    <xs:annotation>
      <xs:documentation>This object defines a fiscal year.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Description" minOccurs="0" nillable="true" type="xs:string">
        <xs:annotation>
          <xs:documentation>A description of the fiscal year.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StartDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>Start date of the fiscal year.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EndDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>End date of the fiscal year.</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: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="FiscalYear" type="sif:FiscalYearType" />


  <!--ProfessionalDevelopmentWorkingGroup-->


  <!--ActivityProvider-->

  <xs:complexType name="ActivityProviderType">
    <xs:annotation>
      <xs:documentation>This object contains information about educational providers of professional education courses and activities.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="LocalId" type="sif:LocalIdType">
        <xs:annotation>
          <xs:documentation>Local code used to represent this provider</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StateProvinceId" minOccurs="0" nillable="true" type="sif:StateProvinceIdType">
        <xs:annotation>
          <xs:documentation>State assigned provider number</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Name" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Name of the provider.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Address" minOccurs="0" nillable="true" type="sif:AddressType">
        <xs:annotation>
          <xs:documentation>This element contains information related to provider's address information.</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:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>GUID for this object. The application that owns this object is responsible for generating this unique ID.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="ActivityProvider" type="sif:ActivityProviderType" />


  <!--EmployeeCredit-->

  <xs:complexType name="EmployeeCreditType">
    <xs:annotation>
      <xs:documentation>This object contains information about courses and activities taken by employees.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="EndDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date in which the course or activity was completed and awarded credit.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Earned">
        <xs:annotation>
          <xs:documentation>The number of units earned</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:decimal">
              <xs:attribute name="Type" use="required">
                <xs:annotation>
                  <xs:documentation>The unit description</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="Hours" />
                    <xs:enumeration value="Credits" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </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:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>This is the GUID for this object.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="EmployeePersonalRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>References EmployeePersonal object.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="ProfessionalDevelopmentActivitiesRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>References the ProfessionalDevelopmentActivities object</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="EmployeeCredit" type="sif:EmployeeCreditType" />


  <!--EmployeeRecertification-->

  <xs:complexType name="EmployeeRecertificationType">
    <xs:annotation>
      <xs:documentation>
								This object contains information about employee continuing professional course and activity credits and hours taken
								by employees for recertification purposes. It is used as a vertical reporting snapshot-type object to transmit
								information regarding professional continuing education courses and activities completed by employees to maintain
								their current educational certification(s) within a given state.
							</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SSN" type="sif:SSNType">
        <xs:annotation>
          <xs:documentation>Employee Social Security Number</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Name" type="sif:NameType">
        <xs:annotation>
          <xs:documentation>Name of employee.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Demographics" minOccurs="0" nillable="true" type="sif:DemographicsType">
        <xs:annotation>
          <xs:documentation>This element contains information related to employee demographics.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ActivityName" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Name of the course or activity</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ActivityType">
        <xs:annotation>
          <xs:documentation>Type of course or activity</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Course" />
            <xs:enumeration value="Activity" />
            <xs:enumeration value="Other" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="ActivityHours" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>Total activity hours/total clock hours</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Earned">
        <xs:annotation>
          <xs:documentation>Hours attended or credits earned by the employee</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:decimal">
              <xs:attribute name="Type" use="required">
                <xs:annotation>
                  <xs:documentation>Number of hours or credits.</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="Hours" />
                    <xs:enumeration value="Credits" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="DateFrom" type="xs:date">
        <xs:annotation>
          <xs:documentation>Start date of the course or activity</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DateTo" type="xs:date">
        <xs:annotation>
          <xs:documentation>Ending date of the course or activity</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:sequence>
  </xs:complexType>

  <xs:element name="EmployeeRecertification" type="sif:EmployeeRecertificationType" />


  <!--EmployeeCredential-->

  <xs:complexType name="EmployeeCredentialType">
    <xs:annotation>
      <xs:documentation>
								This object contains HR, certification and teaching assignment information for elementary and secondary
								professional personnel for state reporting. It is a snapshot object used for vertical reporting of data related to K-12
								elementary and secondary professional employees.
							</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="ReportDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>Date that report snapshot was generated</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SchoolYear" 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:element name="StateProvinceId" type="sif:StateProvinceIdType">
        <xs:annotation>
          <xs:documentation>State assigned reporting unit number</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SSN" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Employee social security number</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Name" type="sif:NameType">
        <xs:annotation>
          <xs:documentation>Name of employee.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Demographics" minOccurs="0" nillable="true" type="sif:DemographicsType">
        <xs:annotation>
          <xs:documentation>This element contains information related to employee demographics.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Race" type="sif:NCES0849RaceType">
        <xs:annotation>
          <xs:documentation>Primary employee's race</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Hispanic" minOccurs="0" nillable="true">
        <xs:annotation>
          <xs:documentation>Is this employee Hispanic or Latino?</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="Certifications">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Certification" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Description" type="xs:string">
                    <xs:annotation>
                      <xs:documentation>Certification description as defined by state</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="AreaAuthorized" minOccurs="0" nillable="true" type="sif:NCES0421TeachingFieldOrAreaAuthorizedType">
                    <xs:annotation>
                      <xs:documentation>Area in which employee has certification</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Salary" type="sif:MonetaryAmountType">
        <xs:annotation>
          <xs:documentation>Employee's salary</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Status" type="sif:NCES0613EmploymentStatusType">
        <xs:annotation>
          <xs:documentation>Employee professional position status</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Leave">
        <xs:annotation>
          <xs:documentation>Is this employee on leave this year?</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="TotalYears" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>Total number of years employee has been in a professional position</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="UnitYears" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>Total number of years at current LEA</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Education" type="sif:NCES0395TeachingCredentialBasisType">
        <xs:annotation>
          <xs:documentation>Highest level of education attained by employee.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TeachingCredentialType" minOccurs="0" maxOccurs="unbounded" type="sif:NCES0394TeachingCredentialTypeType">
        <xs:annotation>
          <xs:documentation>Category in which teacher is authorized to teach</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TerminationCode" minOccurs="0" nillable="true" type="sif:NCES0434EmploymentSeparationReasonType">
        <xs:annotation>
          <xs:documentation>If appropriate, employment separation reason</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="BackgroundChecks" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="BackgroundCheck" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Type" type="sif:NCES0401BackgroundCheckTypeType">
                    <xs:annotation>
                      <xs:documentation>Background check type</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="Date" type="xs:date">
                    <xs:annotation>
                      <xs:documentation>Date on which background type was checked</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="Description" minOccurs="0" nillable="true" type="xs:string">
                    <xs:annotation>
                      <xs:documentation>Description of background check performed</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Assignments">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Assignment" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SchoolInfoRefId" type="sif:IdRefType">
                    <xs:annotation>
                      <xs:documentation>References SchoolInfo object to determine school in which this assignment pertains.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="GradeLevels" type="sif:GradeLevelsType">
                    <xs:annotation>
                      <xs:documentation>Grade which is assigned to this employee (e.g. 12)</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="JobFunction" minOccurs="0" nillable="true">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="Code" type="sif:NCES0568FunctionTypeType">
                          <xs:annotation>
                            <xs:documentation>Code representing the type of job function.</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                        <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="FTE" minOccurs="0" nillable="true" type="xs:decimal">
                    <xs:annotation>
                      <xs:documentation>Full-time equivalent for this school</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="EmployeeCredential" type="sif:EmployeeCredentialType" />


  <!--ProfessionalDevelopmentActivities-->

  <xs:complexType name="ProfessionalDevelopmentActivitiesType">
    <xs:annotation>
      <xs:documentation>
								This object contains information about courses and activities for which employees can earn credits or hours to
								maintain their certification.
							</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="LocalId" type="sif:LocalIdType">
        <xs:annotation>
          <xs:documentation>Locally assigned number or provider referenced course number used to represent the course or activity</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StartDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>The starting date of the course or activity</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EndDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>The ending date of the course or activity</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Description" type="xs:string">
        <xs:annotation>
          <xs:documentation>The description of the course or activity</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ClockHours" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>The actual number of hours required for the course or activity</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Credits" minOccurs="0" nillable="true" type="xs:decimal">
        <xs:annotation>
          <xs:documentation>Number of credits that can be earned by completing the course or activity.</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:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>GUID for this object.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="ActivityProviderRefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>References the ActivityProvider object</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="ProfessionalDevelopmentActivities" type="sif:ProfessionalDevelopmentActivitiesType" />


  <!--SpecialProgramsWorkingGroup-->


  <!--StudentParticipation-->

  <xs:complexType name="StudentParticipationType">
    <xs:annotation>
      <xs:documentation>This object contains information pertaining to student eligibility for and participation in an individualized special program such as special education, ESL, Section 504, etc.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="StudentParticipationAsOfDate" type="xs:date">
        <xs:annotation>
          <xs:documentation>
								Effective date (NOT the entry date) of this StudentParticipation instance for the identified student and program.
								Each time there is a change to the student's program participation profile, a new instance of this object is to be generated with
								the appropriate StudentParticipationAsOfDate and a new RefId.
							</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ProgramType" type="sif:ProgramTypeType" />
      <xs:element name="ProgramFundingSources" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="ProgramFundingSource" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Code">
                    <xs:annotation>
                      <xs:documentation>Funding source for the program, may be more than one.</xs:documentation>
                    </xs:annotation>
                    <xs:simpleType>
                      <xs:union>
                        <xs:annotation>
                          <xs:documentation>Funding source for the program, may be more than one.</xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                          <xs:restriction base="sif:NCES0222ProgramFundingSourceType">
                            <xs:enumeration value="0797" />
                            <xs:enumeration value="0617" />
                            <xs:enumeration value="0622" />
                            <xs:enumeration value="0654" />
                            <xs:enumeration value="9999" />
                          </xs:restriction>
                        </xs:simpleType>
                        <xs:annotation>
                          <xs:documentation>Funding source for the program, may be more than one.</xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                          <xs:restriction base="xs:token">
                            <xs:enumeration value="S001">
                              <xs:annotation>
                                <xs:documentation>Education for the Disadvantaged, ESEA I-A</xs:documentation>
                              </xs:annotation>
                            </xs:enumeration>
                            <xs:enumeration value="S002">
                              <xs:annotation>
                                <xs:documentation>English Language Acquisition, Language Enhancement and Academic Achievement, ESEA III-A</xs:documentation>
                              </xs:annotation>
                            </xs:enumeration>
                            <xs:enumeration value="S003">
                              <xs:annotation>
                                <xs:documentation>Foreign Language Assistance, ESEA V-D</xs:documentation>
                              </xs:annotation>
                            </xs:enumeration>
                            <xs:enumeration value="S004">
                              <xs:annotation>
                                <xs:documentation>Gifted and Talented, Javits, ESEA V-D</xs:documentation>
                              </xs:annotation>
                            </xs:enumeration>
                            <xs:enumeration value="S005">
                            