<!--SIF Implementation Specification 2.3-7 (March 23, 2009)-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" targetNamespace="http://www.sifinfo.org/infrastructure/2.x" xmlns:sif="http://www.sifinfo.org/infrastructure/2.x" elementFormDefault="qualified">
  <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="imports/xml/xml.xsd" />
  <xs:include schemaLocation="CommonTypes.xsd" />
  <xs:include schemaLocation="CommonElements.xsd" />
  <xs:include schemaLocation="Infrastructure/SIF_ZoneStatus.xsd" />
  <xs:include schemaLocation="Infrastructure/SIF_AgentACL.xsd" />
  <xs:include schemaLocation="DataModel/CommonElements.xsd" />
  <xs:include schemaLocation="DataModel/SEAInfo.xsd" />
  <xs:include schemaLocation="DataModel/StudentLEARelationship.xsd" />
  <xs:include schemaLocation="DataWarehouse/AggregateStatisticInfo.xsd" />
  <xs:include schemaLocation="DataWarehouse/AggregateCharacteristicInfo.xsd" />
  <xs:include schemaLocation="DataWarehouse/AggregateStatisticFact.xsd" />
  <xs:include schemaLocation="FoodServices/StudentMeal.xsd" />
  <xs:include schemaLocation="FoodServices/FoodserviceItem.xsd" />
  <xs:include schemaLocation="FoodServices/FoodserviceItemUnit.xsd" />
  <xs:include schemaLocation="FoodServices/FoodserviceItemPortion.xsd" />
  <xs:include schemaLocation="FoodServices/FoodserviceReimbursementRates.xsd" />
  <xs:include schemaLocation="FoodServices/FoodserviceMealPrices.xsd" />
  <xs:include schemaLocation="FoodServices/StaffMeal.xsd" />
  <xs:include schemaLocation="FoodServices/FoodserviceTransaction.xsd" />
  <xs:include schemaLocation="FoodServices/FoodserviceTransactionDetails.xsd" />
  <xs:include schemaLocation="FoodServices/FoodserviceTransactionPayMethod.xsd" />
  <xs:include schemaLocation="FoodServices/FoodserviceSales.xsd" />
  <xs:include schemaLocation="FoodServices/FoodserviceItemSales.xsd" />
  <xs:include schemaLocation="FoodServices/FoodserviceMenuPlan.xsd" />
  <xs:include schemaLocation="FoodServices/FoodserviceMilkSales.xsd" />
  <xs:include schemaLocation="FoodServices/FoodservicePurchaseTransaction.xsd" />
  <xs:include schemaLocation="FoodServices/FoodserviceStaffEnrollmentCount.xsd" />
  <xs:include schemaLocation="FoodServices/FoodserviceStaffMealCounts.xsd" />
  <xs:include schemaLocation="FoodServices/FoodserviceStudentEnrollmentCount.xsd" />
  <xs:include schemaLocation="FoodServices/FoodserviceStudentMealCounts.xsd" />
  <xs:include schemaLocation="StudentRecordExchange/StudentRecordExchange.xsd" />
  <xs:include schemaLocation="StudentRecordExchange/StudentDemographicRecord.xsd" />
  <xs:include schemaLocation="StudentRecordExchange/StudentAcademicRecord.xsd" />
  <xs:include schemaLocation="StudentRecordExchange/StudentSpecialEducationRecord.xsd" />
  <xs:include schemaLocation="StudentRecordExchange/StudentRecordPackage.xsd" />
  <xs:include schemaLocation="GradeBook/MarkValueInfo.xsd" />
  <xs:include schemaLocation="GradeBook/MarkInfo.xsd" />
  <xs:include schemaLocation="GradeBook/SectionMarkInfo.xsd" />
  <xs:include schemaLocation="GradeBook/StudentSectionMarks.xsd" />
  <xs:include schemaLocation="GradeBook/GradingCategory.xsd" />
  <xs:include schemaLocation="GradeBook/GradingAssignment.xsd" />
  <xs:include schemaLocation="GradeBook/GradingAssignmentScore.xsd" />
  <xs:include schemaLocation="GradeBook/StudentPeriodAttendance.xsd" />
  <xs:include schemaLocation="GradeBook/OfficialStudentPeriodAttendance.xsd" />
  <xs:include schemaLocation="GradeBook/StudentGrade.xsd" />
  <xs:include schemaLocation="HumanResourcesFinancials/Billing.xsd" />
  <xs:include schemaLocation="HumanResourcesFinancials/Payment.xsd" />
  <xs:include schemaLocation="HumanResourcesFinancials/EmployeeAssignment.xsd" />
  <xs:include schemaLocation="HumanResourcesFinancials/EmployeeContract.xsd" />
  <xs:include schemaLocation="HumanResourcesFinancials/EmploymentRecord.xsd" />
  <xs:include schemaLocation="HumanResourcesFinancials/EmployeePersonal.xsd" />
  <xs:include schemaLocation="HumanResourcesFinancials/EmployeePicture.xsd" />
  <xs:include schemaLocation="HumanResourcesFinancials/FinancialAnnual.xsd" />
  <xs:include schemaLocation="HumanResourcesFinancials/FinancialBudget.xsd" />
  <xs:include schemaLocation="HumanResourcesFinancials/TimeWorked.xsd" />
  <xs:include schemaLocation="HumanResourcesFinancials/VendorInfo.xsd" />
  <xs:include schemaLocation="HumanResourcesFinancials/W4.xsd" />
  <xs:include schemaLocation="HumanResourcesFinancials/EmployeeWage.xsd" />
  <xs:include schemaLocation="HumanResourcesFinancials/LocationInfo.xsd" />
  <xs:include schemaLocation="HumanResourcesFinancials/Purchasing.xsd" />
  <xs:include schemaLocation="HumanResourcesFinancials/AccountingPeriod.xsd" />
  <xs:include schemaLocation="HumanResourcesFinancials/FinancialAccount.xsd" />
  <xs:include schemaLocation="HumanResourcesFinancials/FinancialAccountAccountingPeriodLocationInfo.xsd" />
  <xs:include schemaLocation="HumanResourcesFinancials/FinancialClass.xsd" />
  <xs:include schemaLocation="HumanResourcesFinancials/FinancialIncomeStatement.xsd" />
  <xs:include schemaLocation="HumanResourcesFinancials/FinancialTransaction.xsd" />
  <xs:include schemaLocation="HumanResourcesFinancials/FiscalYear.xsd" />
  <xs:include schemaLocation="ProfessionalDevelopment/ActivityProvider.xsd" />
  <xs:include schemaLocation="ProfessionalDevelopment/EmployeeCredit.xsd" />
  <xs:include schemaLocation="ProfessionalDevelopment/EmployeeRecertification.xsd" />
  <xs:include schemaLocation="ProfessionalDevelopment/EmployeeCredential.xsd" />
  <xs:include schemaLocation="ProfessionalDevelopment/ProfessionalDevelopmentActivities.xsd" />
  <xs:include schemaLocation="ProfessionalDevelopment/ProfessionalDevelopmentProgram.xsd" />
  <xs:include schemaLocation="ProfessionalDevelopment/ProfessionalDevelopmentRegistration.xsd" />
  <xs:include schemaLocation="SpecialPrograms/StudentParticipation.xsd" />
  <xs:include schemaLocation="SpecialPrograms/StudentPlacement.xsd" />
  <xs:include schemaLocation="SpecialPrograms/TestAccommodation.xsd" />
  <xs:include schemaLocation="Assessment/Assessment.xsd" />
  <xs:include schemaLocation="Assessment/AssessmentItem.xsd" />
  <xs:include schemaLocation="Assessment/ItemCharacteristics.xsd" />
  <xs:include schemaLocation="Assessment/AssessmentSubTest.xsd" />
  <xs:include schemaLocation="Assessment/AssessmentAdministration.xsd" />
  <xs:include schemaLocation="Assessment/AssessmentForm.xsd" />
  <xs:include schemaLocation="Assessment/AssessmentRegistration.xsd" />
  <xs:include schemaLocation="Assessment/StudentResponseSet.xsd" />
  <xs:include schemaLocation="Assessment/StudentScoreSet.xsd" />
  <xs:include schemaLocation="Assessment/AssessmentPackage.xsd" />
  <xs:include schemaLocation="InstructionalServices/LearningStandardDocument.xsd" />
  <xs:include schemaLocation="InstructionalServices/LearningStandardItem.xsd" />
  <xs:include schemaLocation="InstructionalServices/CurriculumStructure.xsd" />
  <xs:include schemaLocation="InstructionalServices/Lesson.xsd" />
  <xs:include schemaLocation="InstructionalServices/Activity.xsd" />
  <xs:include schemaLocation="InstructionalServices/Assignment.xsd" />
  <xs:include schemaLocation="InstructionalServices/LearningResource.xsd" />
  <xs:include schemaLocation="InstructionalServices/LearningResourcePackage.xsd" />
  <xs:include schemaLocation="LibraryAutomation/LibraryPatronStatus.xsd" />
  <xs:include schemaLocation="StudentInformationSystems/StudentActivityInfo.xsd" />
  <xs:include schemaLocation="StudentInformationSystems/StudentActivityParticipation.xsd" />
  <xs:include schemaLocation="StudentInformationSystems/DisciplineIncident.xsd" />
  <xs:include schemaLocation="StudentInformationSystems/CalendarSummary.xsd" />
  <xs:include schemaLocation="StudentInformationSystems/CalendarDate.xsd" />
  <xs:include schemaLocation="StudentInformationSystems/StudentAttendanceSummary.xsd" />
  <xs:include schemaLocation="StudentInformationSystems/AttendanceCodeInfo.xsd" />
  <xs:include schemaLocation="StudentInformationSystems/RoomInfo.xsd" />
  <xs:include schemaLocation="StudentInformationSystems/RoomType.xsd" />
  <xs:include schemaLocation="StudentInformationSystems/SchoolCourseInfo.xsd" />
  <xs:include schemaLocation="StudentInformationSystems/SchoolInfo.xsd" />
  <xs:include schemaLocation="StudentInformationSystems/SectionInfo.xsd" />
  <xs:include schemaLocation="StudentInformationSystems/StaffPersonal.xsd" />
  <xs:include schemaLocation="StudentInformationSystems/StudentContact.xsd" />
  <xs:include schemaLocation="StudentInformationSystems/StudentDailyAttendance.xsd" />
  <xs:include schemaLocation="StudentInformationSystems/StudentPersonal.xsd" />
  <xs:include schemaLocation="StudentInformationSystems/StudentPicture.xsd" />
  <xs:include schemaLocation="StudentInformationSystems/StudentSchoolEnrollment.xsd" />
  <xs:include schemaLocation="StudentInformationSystems/StudentSectionEnrollment.xsd" />
  <xs:include schemaLocation="StudentInformationSystems/TermInfo.xsd" />
  <xs:include schemaLocation="StudentInformationSystems/StudentSnapshot.xsd" />
  <xs:include schemaLocation="StudentInformationSystems/LEAInfo.xsd" />
  <xs:include schemaLocation="StudentInformationSystems/StaffAssignment.xsd" />
  <xs:include schemaLocation="TransportationAndGeographicInformation/BusEquipment.xsd" />
  <xs:include schemaLocation="TransportationAndGeographicInformation/BusInfo.xsd" />
  <xs:include schemaLocation="TransportationAndGeographicInformation/BusRouteDetail.xsd" />
  <xs:include schemaLocation="TransportationAndGeographicInformation/BusRouteInfo.xsd" />
  <xs:include schemaLocation="TransportationAndGeographicInformation/BusStopInfo.xsd" />
  <xs:include schemaLocation="TransportationAndGeographicInformation/StudentTransportInfo.xsd" />
  <xs:include schemaLocation="TransportationAndGeographicInformation/BusPositionInfo.xsd" />
  <xs:include schemaLocation="VerticalReporting/ReportManifest.xsd" />
  <xs:include schemaLocation="VerticalReporting/ReportAuthorityInfo.xsd" />
  <xs:include schemaLocation="VerticalReporting/SIF_ReportObject.xsd" />
  <xs:include schemaLocation="VerticalReporting/StudentLocator.xsd" />
  <xs:include schemaLocation="Infrastructure/SIF_LogEntry.xsd" />
  <xs:include schemaLocation="Infrastructure/Authentication.xsd" />
  <xs:include schemaLocation="ExternalCodeSets/ISO.xsd" />
  <xs:include schemaLocation="ExternalCodeSets/SCED.xsd" />
  <xs:include schemaLocation="ExternalCodeSets/USPS.xsd" />
  <xs:include schemaLocation="ExternalCodeSets/NISO.xsd" />
  <xs:include schemaLocation="ExternalCodeSets/EDEN.xsd" />
  <xs:include schemaLocation="ExternalCodeSets/NCES.xsd" />
  <xs:include schemaLocation="ExternalCodeSets/CanadaPost.xsd" />
  <xs:include schemaLocation="ExternalCodeSets/SAFETY.xsd" />
  <xs:include schemaLocation="ExternalCodeSets/CNDB.xsd" />
  <xs:include schemaLocation="CodeSets/Infrastructure.xsd" />
  <xs:include schemaLocation="CodeSets/SIF_LogEntry.xsd" />
  <xs:include schemaLocation="CodeSets/LearningStandardItem.xsd" />
  <xs:include schemaLocation="CodeSets/StudentPlacement.xsd" />
  <xs:include schemaLocation="CodeSets/TestAccommodation.xsd" />
  <xs:complexType name="SIF_MessageType">
    <xs:choice>
      <xs:element ref="sif:SIF_Ack" />
      <xs:element ref="sif:SIF_Event" />
      <xs:element ref="sif:SIF_Provide" />
      <xs:element ref="sif:SIF_Provision" />
      <xs:element ref="sif:SIF_Register" />
      <xs:element ref="sif:SIF_Request" />
      <xs:element ref="sif:SIF_Response" />
      <xs:element ref="sif:SIF_Subscribe" />
      <xs:element ref="sif:SIF_SystemControl" />
      <xs:element ref="sif:SIF_Unprovide" />
      <xs:element ref="sif:SIF_Unregister" />
      <xs:element ref="sif:SIF_Unsubscribe" />
    </xs:choice>
    <!--<xs:attribute name="xmlns" use="optional" type="xs:anyURI" />-->
    <xs:attribute name="Version" use="required" type="sif:VersionType" />
  </xs:complexType>

  <xs:element name="SIF_Message" type="sif:SIF_MessageType" />

  <xs:complexType name="SIF_HeaderType">
    <xs:sequence>
      <xs:element name="SIF_MsgId" type="sif:MsgIdType" />
      <xs:element name="SIF_Timestamp" type="xs:dateTime" />
      <xs:element name="SIF_Security" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_SecureChannel">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_AuthenticationLevel" />
                  <xs:element ref="sif:SIF_EncryptionLevel" />
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_SourceId">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SIF_DestinationId" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Header" type="sif:SIF_HeaderType" />

  <xs:simpleType name="SIF_EncryptionLevelType">
    <xs:restriction base="xs:unsignedInt">
      <xs:enumeration value="0" />
      <xs:enumeration value="1" />
      <xs:enumeration value="2" />
      <xs:enumeration value="3" />
      <xs:enumeration value="4" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="SIF_EncryptionLevel" type="sif:SIF_EncryptionLevelType" />

  <xs:simpleType name="SIF_AuthenticationLevelType">
    <xs:restriction base="xs:unsignedInt">
      <xs:enumeration value="0" />
      <xs:enumeration value="1" />
      <xs:enumeration value="2" />
      <xs:enumeration value="3" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="SIF_AuthenticationLevel" type="sif:SIF_AuthenticationLevelType" />

  <xs:complexType name="SIF_ContextsType">
    <xs:sequence>
      <xs:element ref="sif:SIF_Context" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Contexts" type="sif:SIF_ContextsType" />

  <xs:simpleType name="SIF_ContextType">
    <xs:restriction>
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
        </xs:restriction>
      </xs:simpleType>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="SIF_Context" type="sif:SIF_ContextType" />

  <xs:complexType name="SIF_ProtocolType">
    <xs:sequence>
      <xs:element name="SIF_URL" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="xs:anyURI">
            <xs:maxLength value="256" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SIF_Property" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Name">
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
            <xs:element name="SIF_Value">
              <xs:simpleType>
                <xs:restriction base="xs:string">
                  <xs:maxLength value="256" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="Type" use="required">
      <xs:simpleType>
        <xs:union>
          <xs:simpleType>
            <xs:restriction base="sif:DefinedProtocolsType" />
          </xs:simpleType>
          <xs:simpleType>
            <xs:restriction base="xs:token" />
          </xs:simpleType>
        </xs:union>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="Secure" use="required">
      <xs: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" />

  <xs:complexType name="SIF_StatusType">
    <xs:sequence>
      <xs:element name="SIF_Code" type="sif:InfrastructureStatusCodeType" />
      <xs:element name="SIF_Desc" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:maxLength value="1024" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SIF_Data" minOccurs="0">
        <xs:complexType>
          <xs:choice>
            <xs:element ref="sif:SIF_Message" />
            <xs:element name="SIF_AgentACL" type="sif:SIF_AgentACLInfrastructureType" />
            <xs:element name="SIF_ZoneStatus" type="sif:SIF_ZoneStatusInfrastructureType" />
          </xs:choice>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Status" type="sif:SIF_StatusType" />

  <xs:complexType name="SIF_ErrorType">
    <xs:sequence>
      <xs:element name="SIF_Category" type="sif:InfrastructureErrorCategoryType" />
      <xs:element name="SIF_Code">
        <xs:simpleType>
          <xs:union>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureXMLValidationErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureEncryptionErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureAuthenticationErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureAccessAndPermissionErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureRegistrationErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureProvisionErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureSubscriptionErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureRequestAndResponseErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureEventReportingAndProcessingErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureTransportErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureSystemErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureGenericMessageHandlingErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="xs:token" />
            </xs:simpleType>
          </xs:union>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SIF_Desc">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:maxLength value="1024" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SIF_ExtendedDesc" minOccurs="0" type="xs:string" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Error" type="sif:SIF_ErrorType" />

  <xs:complexType name="SIF_QueryType">
    <xs:sequence>
      <xs:element name="SIF_QueryObject">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Element" minOccurs="0" maxOccurs="unbounded" type="xs:normalizedString" />
          </xs:sequence>
          <xs:attribute name="ObjectName" use="required" type="sif:SIF_RequestObjectNamesType" />
        </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:element name="SIF_Operator">
                            <xs:simpleType>
                              <xs:restriction base="xs:token">
                                <xs:enumeration value="EQ" />
                                <xs:enumeration value="LT" />
                                <xs:enumeration value="GT" />
                                <xs:enumeration value="LE" />
                                <xs:enumeration value="GE" />
                                <xs:enumeration value="NE" />
                              </xs:restriction>
                            </xs:simpleType>
                          </xs:element>
                          <xs:element name="SIF_Value" type="xs:string" />
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="Type" use="required">
                    <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:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="And" />
                  <xs:enumeration value="Or" />
                  <xs:enumeration value="None" />
                </xs:restriction>
              </xs:simpleType>
            </xs:attribute>
          </xs:complexType>
        </xs:element>
        <xs:element name="SIF_Example" type="sif:SIF_ExampleObjectType" />
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Query" type="sif:SIF_QueryType" />

  <xs:complexType name="SIF_ExtendedQueryType">
    <xs:sequence>
      <xs:element name="SIF_DestinationProvider" minOccurs="0" type="sif:SIF_RequestObjectNamesType" />
      <xs:element name="SIF_Select">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Element" maxOccurs="unbounded">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:normalizedString">
                    <xs:attribute name="Alias" use="optional">
                      <xs:simpleType>
                        <xs:restriction base="xs:normalizedString">
                          <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:attribute>
                    <xs:attribute name="ObjectName" use="required" type="sif:SIF_RequestObjectNamesType" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
          <xs:attribute name="Distinct" use="required" type="xs:boolean" />
          <xs:attribute name="RowCount" use="required">
            <xs:simpleType>
              <xs:union>
                <xs:simpleType>
                  <xs:restriction base="xs:positiveInteger" />
                </xs:simpleType>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="All" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:union>
            </xs:simpleType>
          </xs:attribute>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_From">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Join" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_JoinOn" maxOccurs="unbounded">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_LeftElement">
                          <xs:complexType>
                            <xs:simpleContent>
                              <xs:extension base="xs:normalizedString">
                                <xs:attribute name="ObjectName" use="required" type="sif:SIF_RequestObjectNamesType" />
                              </xs:extension>
                            </xs:simpleContent>
                          </xs:complexType>
                        </xs:element>
                        <xs:element name="SIF_RightElement">
                          <xs:complexType>
                            <xs:simpleContent>
                              <xs:extension base="xs:normalizedString">
                                <xs:attribute name="ObjectName" use="required" type="sif:SIF_RequestObjectNamesType" />
                              </xs:extension>
                            </xs:simpleContent>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="Type" use="required">
                  <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: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:complexType>
                                  <xs:simpleContent>
                                    <xs:extension base="xs:normalizedString">
                                      <xs:attribute name="ObjectName" use="required" type="sif:SIF_RequestObjectNamesType" />
                                    </xs:extension>
                                  </xs:simpleContent>
                                </xs:complexType>
                              </xs:element>
                              <xs:element name="SIF_Operator">
                                <xs:simpleType>
                                  <xs:restriction base="xs:token">
                                    <xs:enumeration value="EQ" />
                                    <xs:enumeration value="LT" />
                                    <xs:enumeration value="GT" />
                                    <xs:enumeration value="LE" />
                                    <xs:enumeration value="GE" />
                                    <xs:enumeration value="NE" />
                                  </xs:restriction>
                                </xs:simpleType>
                              </xs:element>
                              <xs:element name="SIF_Value" type="xs:string" />
                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                      <xs:attribute name="Type" use="required">
                        <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: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:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:normalizedString">
                    <xs:attribute name="ObjectName" use="required" type="sif:SIF_RequestObjectNamesType" />
                    <xs:attribute name="Ordering" use="required">
                      <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" />

  <xs:complexType name="SIF_ExtendedQueryResultsType">
    <xs:sequence>
      <xs:element name="SIF_ColumnHeaders">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Element" maxOccurs="unbounded">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:normalizedString">
                    <xs:attribute name="ObjectName" use="required" type="sif:SIF_RequestObjectNamesType" />
                    <xs:attribute name="Alias" use="optional">
                      <xs:simpleType>
                        <xs:restriction base="xs:normalizedString">
                          <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:attribute>
                    <!--<xs:attribute ref="xsi:type" use="optional" />-->
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Rows">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="R" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="C" maxOccurs="unbounded" type="sif:SelectedContentType" />
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_ExtendedQueryResults" type="sif:SIF_ExtendedQueryResultsType" />

  <xs:complexType name="SIF_AckType">
    <xs:sequence>
      <xs:element ref="sif:SIF_Header" />
      <xs:element name="SIF_OriginalSourceId" nillable="true" type="xs:token" />
      <xs:element name="SIF_OriginalMsgId" nillable="true" type="sif:MsgIdType" />
      <xs:choice>
        <xs:element ref="sif:SIF_Status" />
        <xs:element ref="sif:SIF_Error" />
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Ack" type="sif:SIF_AckType" />

  <xs:complexType name="SIF_EventType">
    <xs:sequence>
      <xs:element ref="sif:SIF_Header" />
      <xs:element name="SIF_ObjectData">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_EventObject">
              <xs:complexType>
                <xs:complexContent>
                  <xs:extension base="sif:SIF_EventObjectType">
                    <xs:attribute name="ObjectName" use="required" type="sif:SIF_SubscribeObjectNamesType" />
                    <xs:attribute name="Action" use="required">
                      <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" />

  <xs:complexType name="SIF_ProvideType">
    <xs:sequence>
      <xs:element ref="sif:SIF_Header" />
      <xs:element name="SIF_Object" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_ExtendedQuerySupport" minOccurs="0" type="xs:boolean" />
            <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
          </xs:sequence>
          <xs:attribute name="ObjectName" use="required" type="sif:SIF_ProvideObjectNamesType" />
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Provide" type="sif:SIF_ProvideType" />

  <xs:complexType name="SIF_ProvisionType">
    <xs:sequence>
      <xs:element ref="sif:SIF_Header" />
      <xs:element name="SIF_ProvideObjects">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_ExtendedQuerySupport" minOccurs="0" type="xs:boolean" />
                  <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
                </xs:sequence>
                <xs:attribute name="ObjectName" use="required" type="sif:SIF_ProvideObjectNamesType" />
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_SubscribeObjects">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
                </xs:sequence>
                <xs:attribute name="ObjectName" use="required" type="sif:SIF_SubscribeObjectNamesType" />
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_PublishAddObjects">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
                </xs:sequence>
                <xs:attribute name="ObjectName" use="required" type="sif:SIF_SubscribeObjectNamesType" />
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_PublishChangeObjects">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
                </xs:sequence>
                <xs:attribute name="ObjectName" use="required" type="sif:SIF_SubscribeObjectNamesType" />
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_PublishDeleteObjects">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Object" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
                </xs:sequence>
                <xs:attribute name="ObjectName" use="required" type="sif:SIF_SubscribeObjectNamesType" />
              </xs: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:element ref="sif:SIF_Contexts" minOccurs="0" />
                </xs:sequence>
                <xs:attribute name="ObjectName" use="required" type="sif:SIF_RequestObjectNamesType" />
              </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:element ref="sif:SIF_Contexts" minOccurs="0" />
                </xs:sequence>
                <xs:attribute name="ObjectName" use="required" type="sif:SIF_RequestObjectNamesType" />
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Provision" type="sif:SIF_ProvisionType" />

  <xs:complexType name="SIF_RegisterType">
    <xs:sequence>
      <xs:element ref="sif:SIF_Header" />
      <xs:element name="SIF_Name">
        <xs:simpleType>
          <xs:restriction base="xs:normalizedString">
            <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SIF_Version" maxOccurs="unbounded" type="sif:VersionWithWildcardsType" />
      <xs:element name="SIF_MaxBufferSize" type="xs:unsignedInt" />
      <xs:element name="SIF_Mode">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Push" />
            <xs:enumeration value="Pull" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element ref="sif:SIF_Protocol" minOccurs="0" />
      <xs:element name="SIF_NodeVendor" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="xs:normalizedString">
            <xs:maxLength value="256" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SIF_NodeVersion" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="xs:normalizedString">
            <xs:maxLength value="32" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SIF_Application" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Vendor">
              <xs:simpleType>
                <xs:restriction base="xs:normalizedString">
                  <xs:maxLength value="256" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
            <xs:element name="SIF_Product">
              <xs:simpleType>
                <xs:restriction base="xs:normalizedString">
                  <xs:maxLength value="256" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
            <xs:element name="SIF_Version">
              <xs:simpleType>
                <xs:restriction base="xs:normalizedString">
                  <xs:maxLength value="32" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Icon" minOccurs="0" type="xs:anyURI" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Register" type="sif:SIF_RegisterType" />

  <xs:complexType name="SIF_RequestType">
    <xs:sequence>
      <xs:element ref="sif:SIF_Header" />
      <xs:element name="SIF_Version" maxOccurs="unbounded" type="sif:VersionWithWildcardsType" />
      <xs:element name="SIF_MaxBufferSize" type="xs:unsignedInt" />
      <xs:choice>
        <xs:element ref="sif:SIF_Query" />
        <xs:element ref="sif:SIF_ExtendedQuery" />
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Request" type="sif:SIF_RequestType" />

  <xs:complexType name="SIF_ResponseType">
    <xs:sequence>
      <xs:element ref="sif:SIF_Header" />
      <xs:element name="SIF_RequestMsgId" type="sif:MsgIdType" />
      <xs:element name="SIF_PacketNumber" type="xs:positiveInteger" />
      <xs:element name="SIF_MorePackets">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Yes" />
            <xs:enumeration value="No" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:choice>
        <xs:element ref="sif:SIF_Error" />
        <xs:element name="SIF_ObjectData" type="sif:SIF_ResponseObjectsType" />
        <xs:element ref="sif:SIF_ExtendedQueryResults" />
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Response" type="sif:SIF_ResponseType" />

  <xs:complexType name="SIF_SubscribeType">
    <xs:sequence>
      <xs:element ref="sif:SIF_Header" />
      <xs:element name="SIF_Object" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
          </xs:sequence>
          <xs:attribute name="ObjectName" use="required" type="sif:SIF_SubscribeObjectNamesType" />
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Subscribe" type="sif:SIF_SubscribeType" />

  <xs:complexType name="SIF_SystemControlType">
    <xs:sequence>
      <xs:element ref="sif:SIF_Header" />
      <xs:element name="SIF_SystemControlData">
        <xs:complexType>
          <xs:choice>
            <xs:element ref="sif:SIF_Ping" />
            <xs:element ref="sif:SIF_Sleep" />
            <xs:element ref="sif:SIF_Wakeup" />
            <xs:element ref="sif:SIF_GetMessage" />
            <xs:element ref="sif:SIF_GetZoneStatus" />
            <xs:element ref="sif:SIF_GetAgentACL" />
            <xs:element ref="sif:SIF_CancelRequests" />
          </xs:choice>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_SystemControl" type="sif:SIF_SystemControlType" />

  <xs:complexType name="SIF_PingType" />

  <xs:element name="SIF_Ping" type="sif:SIF_PingType" />

  <xs:complexType name="SIF_SleepType" />

  <xs:element name="SIF_Sleep" type="sif:SIF_SleepType" />

  <xs:complexType name="SIF_WakeupType" />

  <xs:element name="SIF_Wakeup" type="sif:SIF_WakeupType" />

  <xs:complexType name="SIF_GetMessageType" />

  <xs:element name="SIF_GetMessage" type="sif:SIF_GetMessageType" />

  <xs:complexType name="SIF_GetZoneStatusType" />

  <xs:element name="SIF_GetZoneStatus" type="sif:SIF_GetZoneStatusType" />

  <xs:complexType name="SIF_GetAgentACLType" />

  <xs:element name="SIF_GetAgentACL" type="sif:SIF_GetAgentACLType" />

  <xs:complexType name="SIF_CancelRequestsType">
    <xs:sequence>
      <xs:element name="SIF_NotificationType">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Standard" />
            <xs:enumeration value="None" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SIF_RequestMsgIds">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_RequestMsgId" maxOccurs="unbounded" type="sif:MsgIdType" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_CancelRequests" type="sif:SIF_CancelRequestsType" />

  <xs:complexType name="SIF_UnprovideType">
    <xs:sequence>
      <xs:element ref="sif:SIF_Header" />
      <xs:element name="SIF_Object" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
          </xs:sequence>
          <xs:attribute name="ObjectName" use="required" type="sif:SIF_ProvideObjectNamesType" />
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Unprovide" type="sif:SIF_UnprovideType" />

  <xs:complexType name="SIF_UnregisterType">
    <xs:sequence>
      <xs:element ref="sif:SIF_Header" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Unregister" type="sif:SIF_UnregisterType" />

  <xs:complexType name="SIF_UnsubscribeType">
    <xs:sequence>
      <xs:element ref="sif:SIF_Header" />
      <xs:element name="SIF_Object" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="sif:SIF_Contexts" minOccurs="0" />
          </xs:sequence>
          <xs:attribute name="ObjectName" use="required" type="sif:SIF_SubscribeObjectNamesType" />
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_Unsubscribe" type="sif:SIF_UnsubscribeType" />

</xs:schema>