<!--SIF Implementation Specification UK 1.1-4 (September 18, 2009)-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" targetNamespace="http://www.sifinfo.org/uk/infrastructure/2.x" xmlns:sif="http://www.sifinfo.org/uk/infrastructure/2.x" elementFormDefault="qualified">
  <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="imports/xml/xml.xsd" />
  <xs:simpleType name="ObjectNameType">
    <xs:restriction>
      <xs:simpleType>
        <xs:restriction base="xs:NCName">
          <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
        </xs:restriction>
      </xs:simpleType>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="MonetaryAmountType">
    <xs:simpleContent>
      <xs:extension base="sif:XSDecimalOrEmpty">
        <xs:attribute name="Currency" use="optional" type="sif:ISO4217CurrencyNamesAndCodeElementsType" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="URIOrBinaryType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:anyURI" />
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:base64Binary" />
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>

  <xs:simpleType name="GUIDType">
    <xs:restriction>
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:pattern value="[0-9A-F]{32}" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
        </xs:restriction>
      </xs:simpleType>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="MsgIdType">
    <xs:restriction base="sif:GUIDType" />
  </xs:simpleType>

  <xs:simpleType name="RefIdType">
    <xs:restriction base="sif:GUIDType" />
  </xs:simpleType>

  <xs:simpleType name="IdRefType">
    <xs:restriction base="sif:RefIdType" />
  </xs:simpleType>

  <xs:simpleType name="VersionType">
    <xs:restriction>
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:maxLength value="12" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          <xs:pattern value="[0-9]+[.][0-9]+(r[0-9]+)?" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
        </xs:restriction>
      </xs:simpleType>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="VersionWithWildcardsType">
    <xs:restriction>
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:maxLength value="12" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          <xs:pattern value="\*|([0-9]+[.]\*)|([0-9]+[.][0-9]+r\*)|([0-9]+[.][0-9]+(r[0-9]+)?)" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
        </xs:restriction>
      </xs:simpleType>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="DefinedProtocolsType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="HTTPS" />
      <xs:enumeration value="HTTP" />
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="ExtendedContentType">
    <xs:complexContent mixed="true" xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:restriction base="xs:anyType">
        <xs:sequence>
          <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SelectedContentType">
    <xs:complexContent mixed="true" xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:restriction base="xs:anyType">
        <xs:sequence>
          <xs:any processContents="skip" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SIF_LogEntryExtendedContentType">
    <xs:complexContent mixed="true" xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:restriction base="xs:anyType">
        <xs:sequence>
          <xs:any processContents="skip" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
      </xs:restriction>
    </xs:complexContent>
  </xs:complexType>

  <xs:simpleType name="SIF_ProvideObjectNamesType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="AssessmentLearnerSet" />
      <xs:enumeration value="AssessmentResponseComponent" />
      <xs:enumeration value="AssessmentResponseComponentGroup" />
      <xs:enumeration value="AssessmentResultComponent" />
      <xs:enumeration value="AssessmentResultComponentGroup" />
      <xs:enumeration value="AssessmentResultGradeSet" />
      <xs:enumeration value="AssessmentSession" />
      <xs:enumeration value="ContactPersonal" />
      <xs:enumeration value="Identity" />
      <xs:enumeration value="LAInfo" />
      <xs:enumeration value="LearnerAssessmentResponseSet" />
      <xs:enumeration value="LearnerAssessmentResult" />
      <xs:enumeration value="LearnerAttendance" />
      <xs:enumeration value="LearnerAttendanceSummary" />
      <xs:enumeration value="LearnerContact" />
      <xs:enumeration value="LearnerExclusion" />
      <xs:enumeration value="LearnerGroupEnrolment" />
      <xs:enumeration value="LearnerPersonal" />
      <xs:enumeration value="LearnerSchoolEnrolment" />
      <xs:enumeration value="LearnerSpecialNeeds" />
      <xs:enumeration value="PersonPicture" />
      <xs:enumeration value="SchoolGroup" />
      <xs:enumeration value="SchoolGroupType" />
      <xs:enumeration value="SchoolInfo" />
      <xs:enumeration value="SIF_LogEntry" />
      <xs:enumeration value="TermInfo" />
      <xs:enumeration value="WorkforcePersonal" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="SIF_SubscribeObjectNamesType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="AssessmentLearnerSet" />
      <xs:enumeration value="AssessmentSession" />
      <xs:enumeration value="ContactPersonal" />
      <xs:enumeration value="Identity" />
      <xs:enumeration value="LAInfo" />
      <xs:enumeration value="LearnerAssessmentResponseSet" />
      <xs:enumeration value="LearnerAssessmentResult" />
      <xs:enumeration value="LearnerAttendance" />
      <xs:enumeration value="LearnerAttendanceSummary" />
      <xs:enumeration value="LearnerContact" />
      <xs:enumeration value="LearnerExclusion" />
      <xs:enumeration value="LearnerGroupEnrolment" />
      <xs:enumeration value="LearnerPersonal" />
      <xs:enumeration value="LearnerSchoolEnrolment" />
      <xs:enumeration value="LearnerSpecialNeeds" />
      <xs:enumeration value="PersonPicture" />
      <xs:enumeration value="SchoolGroup" />
      <xs:enumeration value="SchoolGroupType" />
      <xs:enumeration value="SchoolInfo" />
      <xs:enumeration value="SIF_AgentACL" />
      <xs:enumeration value="SIF_LogEntry" />
      <xs:enumeration value="SIF_ZoneStatus" />
      <xs:enumeration value="TermInfo" />
      <xs:enumeration value="WorkforcePersonal" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="SIF_RequestObjectNamesType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="AssessmentLearnerSet" />
      <xs:enumeration value="AssessmentResponseComponent" />
      <xs:enumeration value="AssessmentResponseComponentGroup" />
      <xs:enumeration value="AssessmentResultComponent" />
      <xs:enumeration value="AssessmentResultComponentGroup" />
      <xs:enumeration value="AssessmentResultGradeSet" />
      <xs:enumeration value="AssessmentSession" />
      <xs:enumeration value="ContactPersonal" />
      <xs:enumeration value="Identity" />
      <xs:enumeration value="LAInfo" />
      <xs:enumeration value="LearnerAssessmentResponseSet" />
      <xs:enumeration value="LearnerAssessmentResult" />
      <xs:enumeration value="LearnerAttendance" />
      <xs:enumeration value="LearnerAttendanceSummary" />
      <xs:enumeration value="LearnerContact" />
      <xs:enumeration value="LearnerExclusion" />
      <xs:enumeration value="LearnerGroupEnrolment" />
      <xs:enumeration value="LearnerPersonal" />
      <xs:enumeration value="LearnerSchoolEnrolment" />
      <xs:enumeration value="LearnerSpecialNeeds" />
      <xs:enumeration value="PersonPicture" />
      <xs:enumeration value="SchoolGroup" />
      <xs:enumeration value="SchoolGroupType" />
      <xs:enumeration value="SchoolInfo" />
      <xs:enumeration value="SIF_AgentACL" />
      <xs:enumeration value="SIF_LogEntry" />
      <xs:enumeration value="SIF_ZoneStatus" />
      <xs:enumeration value="TermInfo" />
      <xs:enumeration value="WorkforcePersonal" />
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="SIF_ResponseObjectType">
    <xs:choice>
      <xs:element ref="sif:AssessmentLearnerSet" />
      <xs:element ref="sif:AssessmentResponseComponent" />
      <xs:element ref="sif:AssessmentResponseComponentGroup" />
      <xs:element ref="sif:AssessmentResultComponent" />
      <xs:element ref="sif:AssessmentResultComponentGroup" />
      <xs:element ref="sif:AssessmentResultGradeSet" />
      <xs:element ref="sif:AssessmentSession" />
      <xs:element ref="sif:ContactPersonal" />
      <xs:element ref="sif:Identity" />
      <xs:element ref="sif:LAInfo" />
      <xs:element ref="sif:LearnerAssessmentResponseSet" />
      <xs:element ref="sif:LearnerAssessmentResult" />
      <xs:element ref="sif:LearnerAttendance" />
      <xs:element ref="sif:LearnerAttendanceSummary" />
      <xs:element ref="sif:LearnerContact" />
      <xs:element ref="sif:LearnerExclusion" />
      <xs:element ref="sif:LearnerGroupEnrolment" />
      <xs:element ref="sif:LearnerPersonal" />
      <xs:element ref="sif:LearnerSchoolEnrolment" />
      <xs:element ref="sif:LearnerSpecialNeeds" />
      <xs:element ref="sif:PersonPicture" />
      <xs:element ref="sif:SchoolGroup" />
      <xs:element ref="sif:SchoolGroupType" />
      <xs:element ref="sif:SchoolInfo" />
      <xs:element ref="sif:SIF_AgentACL" />
      <xs:element ref="sif:SIF_LogEntry" />
      <xs:element ref="sif:SIF_ZoneStatus" />
      <xs:element ref="sif:TermInfo" />
      <xs:element ref="sif:WorkforcePersonal" />
    </xs:choice>
  </xs:complexType>

  <xs:complexType name="SIF_ResponseObjectsType">
    <xs:choice minOccurs="0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:sequence>
        <xs:element ref="sif:AssessmentLearnerSet" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:AssessmentResponseComponent" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:AssessmentResponseComponentGroup" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:AssessmentResultComponent" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:AssessmentResultComponentGroup" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:AssessmentResultGradeSet" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:AssessmentSession" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:ContactPersonal" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:Identity" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:LAInfo" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:LearnerAssessmentResponseSet" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:LearnerAssessmentResult" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:LearnerAttendance" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:LearnerAttendanceSummary" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:LearnerContact" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:LearnerExclusion" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:LearnerGroupEnrolment" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:LearnerPersonal" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:LearnerSchoolEnrolment" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:LearnerSpecialNeeds" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:PersonPicture" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:SchoolGroup" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:SchoolGroupType" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:SchoolInfo" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:SIF_AgentACL" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:SIF_LogEntry" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:SIF_ZoneStatus" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:TermInfo" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:WorkforcePersonal" maxOccurs="unbounded" />
      </xs:sequence>
    </xs:choice>
  </xs:complexType>

  <xs:complexType name="SIF_EventObjectType">
    <xs:choice>
      <xs:element ref="sif:AssessmentLearnerSet" />
      <xs:element ref="sif:AssessmentSession" />
      <xs:element ref="sif:ContactPersonal" />
      <xs:element ref="sif:Identity" />
      <xs:element ref="sif:LAInfo" />
      <xs:element ref="sif:LearnerAssessmentResponseSet" />
      <xs:element ref="sif:LearnerAssessmentResult" />
      <xs:element ref="sif:LearnerAttendance" />
      <xs:element ref="sif:LearnerAttendanceSummary" />
      <xs:element ref="sif:LearnerContact" />
      <xs:element ref="sif:LearnerExclusion" />
      <xs:element ref="sif:LearnerGroupEnrolment" />
      <xs:element ref="sif:LearnerPersonal" />
      <xs:element ref="sif:LearnerSchoolEnrolment" />
      <xs:element ref="sif:LearnerSpecialNeeds" />
      <xs:element ref="sif:PersonPicture" />
      <xs:element ref="sif:SchoolGroup" />
      <xs:element ref="sif:SchoolGroupType" />
      <xs:element ref="sif:SchoolInfo" />
      <xs:element ref="sif:SIF_AgentACL" />
      <xs:element ref="sif:SIF_LogEntry" />
      <xs:element ref="sif:SIF_ZoneStatus" />
      <xs:element ref="sif:TermInfo" />
      <xs:element ref="sif:WorkforcePersonal" />
    </xs:choice>
  </xs:complexType>

  <xs:complexType name="SIF_ExampleObjectType" />

  <xs:complexType name="SIF_HeaderDataModelType">
    <xs:sequence>
      <xs:element name="SIF_MsgId" minOccurs="0" type="sif:MsgIdType" />
      <xs:element name="SIF_Timestamp" minOccurs="0" type="xs:dateTime" />
      <xs:element name="SIF_Security" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_SecureChannel" minOccurs="0">
              <xs:complexType>
                <xs:sequence>
                  <xs:element ref="sif:SIF_AuthenticationLevel" minOccurs="0" />
                  <xs:element ref="sif:SIF_EncryptionLevel" minOccurs="0" />
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_SourceId" 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 name="SIF_DestinationId" minOccurs="0" nillable="true">
        <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_Contexts" minOccurs="0" nillable="true" type="sif:SIF_ContextsType" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="SIF_ErrorDataModelType">
    <xs:sequence>
      <xs:element name="SIF_Category" minOccurs="0" type="sif:InfrastructureErrorCategoryType" />
      <xs:element name="SIF_Code" minOccurs="0">
        <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" 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_ExtendedDesc" minOccurs="0" nillable="true" type="xs:string" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="SIF_QueryDataModelType">
    <xs:sequence>
      <xs:element name="SIF_QueryObject" minOccurs="0">
        <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:element name="SIF_ConditionGroup" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Conditions" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_Condition" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Element" minOccurs="0" type="xs:normalizedString" />
                        <xs:element name="SIF_Operator" minOccurs="0">
                          <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" minOccurs="0" 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" minOccurs="0" nillable="true" type="sif:SIF_ExampleObjectType" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="SIF_ExtendedQueryDataModelType">
    <xs:sequence>
      <xs:element name="SIF_DestinationProvider" minOccurs="0" nillable="true" type="sif:SIF_RequestObjectNamesType" />
      <xs:element name="SIF_Select" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Element" minOccurs="0" 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" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Join" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_JoinOn" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_LeftElement" minOccurs="0">
                          <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" minOccurs="0">
                          <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" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_ConditionGroup" minOccurs="0">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="SIF_Conditions" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SIF_Condition" minOccurs="0" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="SIF_Element" minOccurs="0">
                                <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" minOccurs="0">
                                <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" minOccurs="0" 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" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Element" minOccurs="0" 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:complexType name="SIF_ExtendedQueryResultsDataModelType">
    <xs:sequence>
      <xs:element name="SIF_ColumnHeaders" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Element" minOccurs="0" 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" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="R" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="C" minOccurs="0" maxOccurs="unbounded" type="sif:SelectedContentType" />
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <!--IdRefTypeOrEmpty-->

<xs:simpleType name="IdRefTypeOrEmpty">
  <xs:union>
    <xs:simpleType>
      <xs:restriction base="sif:IdRefType" />
    </xs:simpleType>
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:length value="0" />
      </xs:restriction>
    </xs:simpleType>
  </xs:union>
</xs:simpleType>

<!--UKSENTypeTypeOrEmpty-->

<xs:simpleType name="UKSENTypeTypeOrEmpty">
  <xs:union>
    <xs:simpleType>
      <xs:restriction base="sif:UKSENTypeType" />
    </xs:simpleType>
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:length value="0" />
      </xs:restriction>
    </xs:simpleType>
  </xs:union>
</xs:simpleType>

<!--XSBase64BinaryOrEmpty-->

<xs:simpleType name="XSBase64BinaryOrEmpty">
  <xs:union>
    <xs:simpleType>
      <xs:restriction base="xs:base64Binary" />
    </xs:simpleType>
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:length value="0" />
      </xs:restriction>
    </xs:simpleType>
  </xs:union>
</xs:simpleType>

<!--URIOrBinaryTypeOrEmpty-->

<xs:simpleType name="URIOrBinaryTypeOrEmpty">
  <xs:union>
    <xs:simpleType>
      <xs:restriction base="sif:URIOrBinaryType" />
    </xs:simpleType>
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:length value="0" />
      </xs:restriction>
    </xs:simpleType>
  </xs:union>
</xs:simpleType>

<!--XSDecimalOrEmpty-->

<xs:simpleType name="XSDecimalOrEmpty">
  <xs:union>
    <xs:simpleType>
      <xs:restriction base="xs:decimal" />
    </xs:simpleType>
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:length value="0" />
      </xs:restriction>
    </xs:simpleType>
  </xs:union>
</xs:simpleType>

</xs:schema>