<!--
		SIF Implementation Specification (Australia) 1.1 (December 23, 2010) Infrastructure Version: 2.4-16
	-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" targetNamespace="http://www.sifinfo.org/au/infrastructure/2.x" xmlns:sif="http://www.sifinfo.org/au/infrastructure/2.x" elementFormDefault="qualified">
  <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="imports/xml/xml.xsd" />
  <xs:simpleType name="ObjectNameType">
    <xs:restriction>
      <xs:simpleType>
        <xs:restriction base="xs:NCName">
          <xs:annotation>
            <xs:documentation>An unenumerated SIF object name.</xs:documentation>
          </xs:annotation>
          <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
        </xs:restriction>
      </xs:simpleType>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="MonetaryAmountType">
    <xs:annotation>
      <xs:documentation>A monetary amount.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="sif:XSDecimalOrEmpty">
        <xs:attribute name="Currency" use="optional" type="sif:ISO4217CurrencyNamesAndCodeElementsType">
          <xs:annotation>
            <xs:documentation>Currency code.  Where omitted, defaults to implementation-defined local currency, typically </xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="URIOrBinaryType">
    <xs:annotation>
      <xs:documentation>Allows for a URL or a Base-64 encoding.</xs:documentation>
    </xs:annotation>
    <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:annotation>
            <xs:documentation>SIF format for a GUID.</xs:documentation>
          </xs:annotation>
          <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:annotation>
        <xs:documentation>A message identifier.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="RefIdType">
    <xs:restriction base="sif:GUIDType">
      <xs:annotation>
        <xs:documentation>An object or element identifier.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="IdRefType">
    <xs:restriction base="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>A reference to a RefId.</xs:documentation>
      </xs:annotation>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="VersionType">
    <xs:restriction>
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:annotation>
            <xs:documentation>A SIF version number.</xs:documentation>
          </xs:annotation>
          <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:annotation>
            <xs:documentation>A SIF version number, with wildcards for matching multiple versions.</xs:documentation>
          </xs:annotation>
          <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:annotation>
        <xs:documentation>The transport protocols defined in SIF.</xs:documentation>
      </xs:annotation>
      <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:complexType name="ReportPackageType">
    <xs:complexContent>
      <xs:extension base="sif:AbstractContentPackageType">
        <xs:annotation>
          <xs:documentation>
      This package has exactly the same structure as </xs:documentation>
        </xs:annotation>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="AbstractContentPackageType">
    <xs:annotation>
      <xs:documentation>
        An abstract type for derived content package types, elements and objects.  This structure may be used verbatim, optionally extending
        with additional attributes, or may be redefined to include only a subset of child elements and/or to add validation to XML
        contained in XMLData.  Only one instance of XMLData, TextData, BinaryData or
        Reference can occur in a single instance.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:choice>
        <xs:element name="XMLData" minOccurs="0" nillable="true">
          <xs:complexType>
<xs:sequence>
  <xs:any processContents="lax" xmlns:xs="http://www.w3.org/2001/XMLSchema"  minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="Description" use="optional" type="xs:token"><xs:annotation><xs:documentation>
          Contains an optional description of the content or a processing hint with regard to its structure (e.g. named standard, file layout or XSD).
          Contents may be mandated in instances of this type, or types that follow the AbstractContentPackageType pattern.
        </xs:documentation></xs:annotation></xs:attribute></xs:complexType>
        </xs:element>
        <xs:element name="TextData" minOccurs="0" nillable="true">
          <xs:annotation>
            <xs:documentation>Contains arbitrary text, encoded in UTF-8.</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:simpleContent>
              <xs:extension base="xs:string">
                <xs:attribute name="MIMEType" use="optional" type="xs:token">
                  <xs:annotation>
                    <xs:documentation>
          Optional MIME type to specifically indicate the text type.  Otherwise text/plain can be assumed.
        </xs:documentation>
                  </xs:annotation>
                </xs:attribute>
                <xs:attribute name="FileName" use="optional" type="xs:token">
                  <xs:annotation>
                    <xs:documentation>
          Optional file name to indicate the file from which the content originated, or to suggest a name to use when saving the content.
        </xs:documentation>
                  </xs:annotation>
                </xs:attribute>
                <xs:attribute name="Description" use="optional" type="xs:token">
                  <xs:annotation>
                    <xs:documentation>
          Contains an optional description of the content or a processing hint with regard to its structure (e.g. named standard, file layout or XSD).
          Contents may be mandated in instances of this type, or types that follow the AbstractContentPackageType pattern.
        </xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:extension>
            </xs:simpleContent>
          </xs:complexType>
        </xs:element>
        <xs:element name="BinaryData" minOccurs="0" nillable="true">
          <xs:annotation>
            <xs:documentation>Contains the base64Binary encoding of binary or text data not encoded in UTF-8.</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:simpleContent>
              <xs:extension base="sif:XSBase64BinaryOrEmpty">
                <xs:attribute name="MIMEType" use="required" type="xs:token">
                  <xs:annotation>
                    <xs:documentation>
          MIME type to indicate the content type.
        </xs:documentation>
                  </xs:annotation>
                </xs:attribute>
                <xs:attribute name="FileName" use="optional" type="xs:token">
                  <xs:annotation>
                    <xs:documentation>
          Optional file name to indicate the file from which the content originated, or to suggest a name to use when saving the content.
        </xs:documentation>
                  </xs:annotation>
                </xs:attribute>
                <xs:attribute name="Description" use="optional" type="xs:token">
                  <xs:annotation>
                    <xs:documentation>
          Contains an optional description of the content or a processing hint with regard to its structure (e.g. named standard, file layout or XSD).
          Contents may be mandated in instances of this type, or types that follow the AbstractContentPackageType pattern.
        </xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:extension>
            </xs:simpleContent>
          </xs:complexType>
        </xs:element>
        <xs:element name="Reference" minOccurs="0" nillable="true">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="URL" minOccurs="0" type="xs:anyURI">
                <xs:annotation>
                  <xs:documentation>Location of external content.</xs:documentation>
                </xs:annotation>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="MIMEType" use="required" type="xs:token">
              <xs:annotation>
                <xs:documentation>
          MIME type to indicate the content type to be expected when retrieving the external content.
        </xs:documentation>
              </xs:annotation>
            </xs:attribute>
            <xs:attribute name="Description" use="optional" type="xs:token">
              <xs:annotation>
                <xs:documentation>
          Contains an optional description of the content or a processing hint with regard to its structure (e.g. named standard, file layout or XSD).
          Contents may be mandated in instances of this type, or types that follow the AbstractContentPackageType pattern.
        </xs:documentation>
              </xs:annotation>
            </xs:attribute>
          </xs:complexType>
        </xs:element>
      </xs:choice>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType">
        <xs:unique name="SIF_ExtendedElementsKey50">
          <xs:selector xpath="./sif:SIF_ExtendedElement" />
          <xs:field xpath="@Name" />
        </xs:unique>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="RefId" use="required" type="sif:RefIdType">
      <xs:annotation>
        <xs:documentation>The GUID that uniquely identifies an instance of the package.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:complexType name="BaseNameType">
    <xs:annotation>
      <xs:documentation>
        Base type, without attributes, for Name elements, primarily to allow structure to be leveraged with different Type attribute values.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Title" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>A title or prefix associated with the name. If any of: Mr, Mrs, Ms, Miss, Rev, Fr, Dr, Prof, Hon, Sir, Lord, Lady - these must be as shown, otherwise free text. Note that title is not applicable to learners. </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="FamilyName" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Family name. That part of the person's name which is used to describe family, clan, tribal group, or marital association. Note that this element is required when known. However, it may not be possible to know the family name in which case you should add the available information to the FullName element. </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="GivenName" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Given name of the person. Note that this element is required if known. However, it may not be possible to know the given name in which case you should add the available information to the FullName element. </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="MiddleName" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>All other given or middle names, each separated with a single space character. </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="FamilyNameFirst" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
        <xs:annotation>
          <xs:documentation>An indicator used to identify the naming conventions used by some predominantly non-European, ethnic or language groups and related to the display nature of a name. </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PreferredFamilyName" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The family name preferred most by the person (as written). </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PreferredFamilyNameFirst" minOccurs="0" nillable="true" type="sif:AUCodeSetsYesOrNoCategoryType">
        <xs:annotation>
          <xs:documentation>An indicator used to identify the naming conventions used by some predominantly non-European, ethnic or language groups and related to the display nature of a name. </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PreferredGivenName" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>The given name preferred most by the person (as written). </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Suffix" minOccurs="0" nillable="true" type="xs:normalizedString">
        <xs:annotation>
          <xs:documentation>Textual suffix like PHD, JP, BSc. </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 for display purposes. If this is associated with a StudentPersonal,StaffPersonal or StudentContactPersonal record and the FamilyName and GivenName are not both specified, then this becomes mandatory. </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="NameOfRecordType">
    <xs:annotation>
      <xs:documentation>
        Extends BaseNameType to allow for one Type attribute value, indicating the name is the name of record;
        serves as the primary name in some SIF objects, including StudentPersonal.
      </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. Note that type “LGL” must be used here.
      </xs:documentation>
          </xs:annotation>
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="LGL">
                <xs:annotation>
                  <xs:documentation>Name of Record</xs:documentation>
                </xs:annotation>
              </xs:enumeration>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="OtherNameType">
    <xs:annotation>
      <xs:documentation>
        Extends BaseNameType to allow for Type attribute values excluding "name of record."  Used for other names to
        be included in addition to the name of record in objects.
      </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="sif:BaseNameType">
        <xs:attribute name="Type" use="required" type="sif:AUCodeSetsNameUsageTypeType">
          <xs:annotation>
            <xs:documentation>
        Code that specifies what type of name this is. Note that type “LGL” is NOT to be used here.
      </xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:simpleType name="PartialDateType">
    <xs:annotation>
      <xs:documentation>A year, with an optional month/day, or an optional month by itself.</xs:documentation>
    </xs:annotation>
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:date" />
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:gYearMonth" />
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:gYear" />
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>

  <xs:complexType name="AbstractContentElementType">
    <xs:annotation>
      <xs:documentation>AbstractContentPackageType used as an element rather than an object, omitting RefId, SIF_Metadata and SIF_ExtendedElements.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:choice>
        <xs:element name="XMLData" minOccurs="0" nillable="true">
          <xs:complexType>
<xs:sequence>
  <xs:any processContents="lax" xmlns:xs="http://www.w3.org/2001/XMLSchema"  minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="Description" use="optional" type="xs:token"><xs:annotation><xs:documentation>
          Contains an optional description of the content or a processing hint with regard to its structure (e.g. named standard, file layout or XSD).
          Contents may be mandated in instances of this type, or types that follow the AbstractContentPackageType pattern.
        </xs:documentation></xs:annotation></xs:attribute></xs:complexType>
        </xs:element>
        <xs:element name="TextData" minOccurs="0" nillable="true">
          <xs:annotation>
            <xs:documentation>Contains arbitrary text, encoded in UTF-8.</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:simpleContent>
              <xs:extension base="xs:string">
                <xs:attribute name="MIMEType" use="optional" type="xs:token">
                  <xs:annotation>
                    <xs:documentation>
          Optional MIME type to specifically indicate the text type.  Otherwise text/plain can be assumed.
        </xs:documentation>
                  </xs:annotation>
                </xs:attribute>
                <xs:attribute name="FileName" use="optional" type="xs:token">
                  <xs:annotation>
                    <xs:documentation>
          Optional file name to indicate the file from which the content originated, or to suggest a name to use when saving the content.
        </xs:documentation>
                  </xs:annotation>
                </xs:attribute>
                <xs:attribute name="Description" use="optional" type="xs:token">
                  <xs:annotation>
                    <xs:documentation>
          Contains an optional description of the content or a processing hint with regard to its structure (e.g. named standard, file layout or XSD).
          Contents may be mandated in instances of this type, or types that follow the AbstractContentPackageType pattern.
        </xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:extension>
            </xs:simpleContent>
          </xs:complexType>
        </xs:element>
        <xs:element name="BinaryData" minOccurs="0" nillable="true">
          <xs:annotation>
            <xs:documentation>Contains the base64Binary encoding of binary or text data not encoded in UTF-8.</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:simpleContent>
              <xs:extension base="sif:XSBase64BinaryOrEmpty">
                <xs:attribute name="MIMEType" use="required" type="xs:token">
                  <xs:annotation>
                    <xs:documentation>
          MIME type to indicate the content type.
        </xs:documentation>
                  </xs:annotation>
                </xs:attribute>
                <xs:attribute name="FileName" use="optional" type="xs:token">
                  <xs:annotation>
                    <xs:documentation>
          Optional file name to indicate the file from which the content originated, or to suggest a name to use when saving the content.
        </xs:documentation>
                  </xs:annotation>
                </xs:attribute>
                <xs:attribute name="Description" use="optional" type="xs:token">
                  <xs:annotation>
                    <xs:documentation>
          Contains an optional description of the content or a processing hint with regard to its structure (e.g. named standard, file layout or XSD).
          Contents may be mandated in instances of this type, or types that follow the AbstractContentPackageType pattern.
        </xs:documentation>
                  </xs:annotation>
                </xs:attribute>
              </xs:extension>
            </xs:simpleContent>
          </xs:complexType>
        </xs:element>
        <xs:element name="Reference" minOccurs="0" nillable="true">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="URL" minOccurs="0" type="xs:anyURI">
                <xs:annotation>
                  <xs:documentation>Location of external content.</xs:documentation>
                </xs:annotation>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="MIMEType" use="required" type="xs:token">
              <xs:annotation>
                <xs:documentation>
          MIME type to indicate the content type to be expected when retrieving the external content.
        </xs:documentation>
              </xs:annotation>
            </xs:attribute>
            <xs:attribute name="Description" use="optional" type="xs:token">
              <xs:annotation>
                <xs:documentation>
          Contains an optional description of the content or a processing hint with regard to its structure (e.g. named standard, file layout or XSD).
          Contents may be mandated in instances of this type, or types that follow the AbstractContentPackageType pattern.
        </xs:documentation>
              </xs:annotation>
            </xs:attribute>
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="SIF_ProvideObjectNamesType">
    <xs:restriction base="xs:token">
      <xs:annotation>
        <xs:documentation>The SIF object names that can be specified in a </xs:documentation>
      </xs:annotation>
      <xs:enumeration value="AggregateCharacteristicInfo" />
      <xs:enumeration value="AggregateStatisticFact" />
      <xs:enumeration value="AggregateStatisticInfo" />
      <xs:enumeration value="Assessment" />
      <xs:enumeration value="AssessmentAdministration" />
      <xs:enumeration value="AssessmentForm" />
      <xs:enumeration value="AssessmentItem" />
      <xs:enumeration value="AssessmentPackage" />
      <xs:enumeration value="AssessmentRegistration" />
      <xs:enumeration value="AssessmentSubTest" />
      <xs:enumeration value="CalendarDate" />
      <xs:enumeration value="CalendarSummary" />
      <xs:enumeration value="Identity" />
      <xs:enumeration value="LEAInfo" />
      <xs:enumeration value="LearningResource" />
      <xs:enumeration value="LearningResourcePackage" />
      <xs:enumeration value="LearningStandardDocument" />
      <xs:enumeration value="LearningStandardItem" />
      <xs:enumeration value="PersonPicture" />
      <xs:enumeration value="ReportAuthorityInfo" />
      <xs:enumeration value="ReportManifest" />
      <xs:enumeration value="RoomInfo" />
      <xs:enumeration value="SchoolCourseInfo" />
      <xs:enumeration value="SchoolInfo" />
      <xs:enumeration value="SchoolPrograms" />
      <xs:enumeration value="SessionInfo" />
      <xs:enumeration value="SIF_LogEntry" />
      <xs:enumeration value="SIF_ReportObject" />
      <xs:enumeration value="StaffAssignment" />
      <xs:enumeration value="StaffPersonal" />
      <xs:enumeration value="StudentActivityInfo" />
      <xs:enumeration value="StudentActivityParticipation" />
      <xs:enumeration value="StudentAttendanceSummary" />
      <xs:enumeration value="StudentContactPersonal" />
      <xs:enumeration value="StudentContactRelationship" />
      <xs:enumeration value="StudentDailyAttendance" />
      <xs:enumeration value="StudentParticipation" />
      <xs:enumeration value="StudentPeriodAttendance" />
      <xs:enumeration value="StudentPersonal" />
      <xs:enumeration value="StudentSchoolEnrollment" />
      <xs:enumeration value="StudentScoreSet" />
      <xs:enumeration value="StudentSDTN" />
      <xs:enumeration value="StudentSnapshot" />
      <xs:enumeration value="SummaryEnrollmentInfo" />
      <xs:enumeration value="SystemRole" />
      <xs:enumeration value="TeachingGroup" />
      <xs:enumeration value="TermInfo" />
      <xs:enumeration value="TimeTable" />
      <xs:enumeration value="TimeTableCell" />
      <xs:enumeration value="TimeTableSubject" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="SIF_SubscribeObjectNamesType">
    <xs:restriction base="xs:token">
      <xs:annotation>
        <xs:documentation>The SIF object names that can be specified in a </xs:documentation>
      </xs:annotation>
      <xs:enumeration value="AggregateCharacteristicInfo" />
      <xs:enumeration value="AggregateStatisticFact" />
      <xs:enumeration value="AggregateStatisticInfo" />
      <xs:enumeration value="AssessmentAdministration" />
      <xs:enumeration value="AssessmentRegistration" />
      <xs:enumeration value="CalendarDate" />
      <xs:enumeration value="CalendarSummary" />
      <xs:enumeration value="Identity" />
      <xs:enumeration value="LEAInfo" />
      <xs:enumeration value="LearningResource" />
      <xs:enumeration value="LearningStandardDocument" />
      <xs:enumeration value="LearningStandardItem" />
      <xs:enumeration value="PersonPicture" />
      <xs:enumeration value="ReportAuthorityInfo" />
      <xs:enumeration value="ReportManifest" />
      <xs:enumeration value="RoomInfo" />
      <xs:enumeration value="SchoolCourseInfo" />
      <xs:enumeration value="SchoolInfo" />
      <xs:enumeration value="SchoolPrograms" />
      <xs:enumeration value="SessionInfo" />
      <xs:enumeration value="SIF_AgentACL" />
      <xs:enumeration value="SIF_LogEntry" />
      <xs:enumeration value="SIF_ReportObject" />
      <xs:enumeration value="SIF_ZoneStatus" />
      <xs:enumeration value="StaffAssignment" />
      <xs:enumeration value="StaffPersonal" />
      <xs:enumeration value="StudentActivityInfo" />
      <xs:enumeration value="StudentActivityParticipation" />
      <xs:enumeration value="StudentContactPersonal" />
      <xs:enumeration value="StudentContactRelationship" />
      <xs:enumeration value="StudentDailyAttendance" />
      <xs:enumeration value="StudentParticipation" />
      <xs:enumeration value="StudentPeriodAttendance" />
      <xs:enumeration value="StudentPersonal" />
      <xs:enumeration value="StudentSchoolEnrollment" />
      <xs:enumeration value="StudentScoreSet" />
      <xs:enumeration value="StudentSDTN" />
      <xs:enumeration value="SummaryEnrollmentInfo" />
      <xs:enumeration value="SystemRole" />
      <xs:enumeration value="TeachingGroup" />
      <xs:enumeration value="TermInfo" />
      <xs:enumeration value="TimeTable" />
      <xs:enumeration value="TimeTableCell" />
      <xs:enumeration value="TimeTableSubject" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="SIF_RequestObjectNamesType">
    <xs:restriction base="xs:token">
      <xs:annotation>
        <xs:documentation>The SIF object names that can be specified in a </xs:documentation>
      </xs:annotation>
      <xs:enumeration value="AggregateCharacteristicInfo" />
      <xs:enumeration value="AggregateStatisticFact" />
      <xs:enumeration value="AggregateStatisticInfo" />
      <xs:enumeration value="Assessment" />
      <xs:enumeration value="AssessmentAdministration" />
      <xs:enumeration value="AssessmentForm" />
      <xs:enumeration value="AssessmentItem" />
      <xs:enumeration value="AssessmentPackage" />
      <xs:enumeration value="AssessmentRegistration" />
      <xs:enumeration value="AssessmentSubTest" />
      <xs:enumeration value="CalendarDate" />
      <xs:enumeration value="CalendarSummary" />
      <xs:enumeration value="Identity" />
      <xs:enumeration value="LEAInfo" />
      <xs:enumeration value="LearningResource" />
      <xs:enumeration value="LearningResourcePackage" />
      <xs:enumeration value="LearningStandardDocument" />
      <xs:enumeration value="LearningStandardItem" />
      <xs:enumeration value="PersonPicture" />
      <xs:enumeration value="ReportAuthorityInfo" />
      <xs:enumeration value="ReportManifest" />
      <xs:enumeration value="RoomInfo" />
      <xs:enumeration value="SchoolCourseInfo" />
      <xs:enumeration value="SchoolInfo" />
      <xs:enumeration value="SchoolPrograms" />
      <xs:enumeration value="SessionInfo" />
      <xs:enumeration value="SIF_AgentACL" />
      <xs:enumeration value="SIF_LogEntry" />
      <xs:enumeration value="SIF_ReportObject" />
      <xs:enumeration value="SIF_ZoneStatus" />
      <xs:enumeration value="StaffAssignment" />
      <xs:enumeration value="StaffPersonal" />
      <xs:enumeration value="StudentActivityInfo" />
      <xs:enumeration value="StudentActivityParticipation" />
      <xs:enumeration value="StudentAttendanceSummary" />
      <xs:enumeration value="StudentContactPersonal" />
      <xs:enumeration value="StudentContactRelationship" />
      <xs:enumeration value="StudentDailyAttendance" />
      <xs:enumeration value="StudentParticipation" />
      <xs:enumeration value="StudentPeriodAttendance" />
      <xs:enumeration value="StudentPersonal" />
      <xs:enumeration value="StudentSchoolEnrollment" />
      <xs:enumeration value="StudentScoreSet" />
      <xs:enumeration value="StudentSDTN" />
      <xs:enumeration value="StudentSnapshot" />
      <xs:enumeration value="SummaryEnrollmentInfo" />
      <xs:enumeration value="SystemRole" />
      <xs:enumeration value="TeachingGroup" />
      <xs:enumeration value="TermInfo" />
      <xs:enumeration value="TimeTable" />
      <xs:enumeration value="TimeTableCell" />
      <xs:enumeration value="TimeTableSubject" />
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="SIF_ResponseObjectType">
    <xs:annotation>
      <xs:documentation>The SIF objects that can be included in a </xs:documentation>
    </xs:annotation>
    <xs:choice>
      <xs:element ref="sif:AggregateCharacteristicInfo" />
      <xs:element ref="sif:AggregateStatisticFact" />
      <xs:element ref="sif:AggregateStatisticInfo" />
      <xs:element ref="sif:Assessment" />
      <xs:element ref="sif:AssessmentAdministration" />
      <xs:element ref="sif:AssessmentForm" />
      <xs:element ref="sif:AssessmentItem" />
      <xs:element ref="sif:AssessmentPackage" />
      <xs:element ref="sif:AssessmentRegistration" />
      <xs:element ref="sif:AssessmentSubTest" />
      <xs:element ref="sif:CalendarDate" />
      <xs:element ref="sif:CalendarSummary" />
      <xs:element ref="sif:Identity" />
      <xs:element ref="sif:LEAInfo" />
      <xs:element ref="sif:LearningResource" />
      <xs:element ref="sif:LearningResourcePackage" />
      <xs:element ref="sif:LearningStandardDocument" />
      <xs:element ref="sif:LearningStandardItem" />
      <xs:element ref="sif:PersonPicture" />
      <xs:element ref="sif:ReportAuthorityInfo" />
      <xs:element ref="sif:ReportManifest" />
      <xs:element ref="sif:RoomInfo" />
      <xs:element ref="sif:SchoolCourseInfo" />
      <xs:element ref="sif:SchoolInfo" />
      <xs:element ref="sif:SchoolPrograms" />
      <xs:element ref="sif:SessionInfo" />
      <xs:element ref="sif:SIF_AgentACL" />
      <xs:element ref="sif:SIF_LogEntry" />
      <xs:element ref="sif:SIF_ReportObject" />
      <xs:element ref="sif:SIF_ZoneStatus" />
      <xs:element ref="sif:StaffAssignment" />
      <xs:element ref="sif:StaffPersonal" />
      <xs:element ref="sif:StudentActivityInfo" />
      <xs:element ref="sif:StudentActivityParticipation" />
      <xs:element ref="sif:StudentAttendanceSummary" />
      <xs:element ref="sif:StudentContactPersonal" />
      <xs:element ref="sif:StudentContactRelationship" />
      <xs:element ref="sif:StudentDailyAttendance" />
      <xs:element ref="sif:StudentParticipation" />
      <xs:element ref="sif:StudentPeriodAttendance" />
      <xs:element ref="sif:StudentPersonal" />
      <xs:element ref="sif:StudentSchoolEnrollment" />
      <xs:element ref="sif:StudentScoreSet" />
      <xs:element ref="sif:StudentSDTN" />
      <xs:element ref="sif:StudentSnapshot" />
      <xs:element ref="sif:SummaryEnrollmentInfo" />
      <xs:element ref="sif:SystemRole" />
      <xs:element ref="sif:TeachingGroup" />
      <xs:element ref="sif:TermInfo" />
      <xs:element ref="sif:TimeTable" />
      <xs:element ref="sif:TimeTableCell" />
      <xs:element ref="sif:TimeTableSubject" />
    </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:AggregateCharacteristicInfo" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:AggregateStatisticFact" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:AggregateStatisticInfo" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:Assessment" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:AssessmentAdministration" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:AssessmentForm" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:AssessmentItem" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:AssessmentPackage" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:AssessmentRegistration" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:AssessmentSubTest" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:CalendarDate" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:CalendarSummary" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:Identity" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:LEAInfo" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:LearningResource" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:LearningResourcePackage" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:LearningStandardDocument" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:LearningStandardItem" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:PersonPicture" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:ReportAuthorityInfo" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:ReportManifest" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:RoomInfo" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:SchoolCourseInfo" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:SchoolInfo" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:SchoolPrograms" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:SessionInfo" 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_ReportObject" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:SIF_ZoneStatus" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:StaffAssignment" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:StaffPersonal" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:StudentActivityInfo" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:StudentActivityParticipation" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:StudentAttendanceSummary" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:StudentContactPersonal" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:StudentContactRelationship" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:StudentDailyAttendance" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:StudentParticipation" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:StudentPeriodAttendance" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:StudentPersonal" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:StudentSchoolEnrollment" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:StudentScoreSet" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:StudentSDTN" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:StudentSnapshot" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:SummaryEnrollmentInfo" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:SystemRole" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:TeachingGroup" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:TermInfo" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:TimeTable" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:TimeTableCell" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:sequence>
        <xs:element ref="sif:TimeTableSubject" maxOccurs="unbounded" />
      </xs:sequence>
    </xs:choice>
  </xs:complexType>

  <xs:complexType name="SIF_EventObjectType">
    <xs:annotation>
      <xs:documentation>The SIF objects that can be included in a </xs:documentation>
    </xs:annotation>
    <xs:choice>
      <xs:element ref="sif:AggregateCharacteristicInfo" />
      <xs:element ref="sif:AggregateStatisticFact" />
      <xs:element ref="sif:AggregateStatisticInfo" />
      <xs:element ref="sif:AssessmentAdministration" />
      <xs:element ref="sif:AssessmentRegistration" />
      <xs:element ref="sif:CalendarDate" />
      <xs:element ref="sif:CalendarSummary" />
      <xs:element ref="sif:Identity" />
      <xs:element ref="sif:LEAInfo" />
      <xs:element ref="sif:LearningResource" />
      <xs:element ref="sif:LearningStandardDocument" />
      <xs:element ref="sif:LearningStandardItem" />
      <xs:element ref="sif:PersonPicture" />
      <xs:element ref="sif:ReportAuthorityInfo" />
      <xs:element ref="sif:ReportManifest" />
      <xs:element ref="sif:RoomInfo" />
      <xs:element ref="sif:SchoolCourseInfo" />
      <xs:element ref="sif:SchoolInfo" />
      <xs:element ref="sif:SchoolPrograms" />
      <xs:element ref="sif:SessionInfo" />
      <xs:element ref="sif:SIF_AgentACL" />
      <xs:element ref="sif:SIF_LogEntry" />
      <xs:element ref="sif:SIF_ReportObject" />
      <xs:element ref="sif:SIF_ZoneStatus" />
      <xs:element ref="sif:StaffAssignment" />
      <xs:element ref="sif:StaffPersonal" />
      <xs:element ref="sif:StudentActivityInfo" />
      <xs:element ref="sif:StudentActivityParticipation" />
      <xs:element ref="sif:StudentContactPersonal" />
      <xs:element ref="sif:StudentContactRelationship" />
      <xs:element ref="sif:StudentDailyAttendance" />
      <xs:element ref="sif:StudentParticipation" />
      <xs:element ref="sif:StudentPeriodAttendance" />
      <xs:element ref="sif:StudentPersonal" />
      <xs:element ref="sif:StudentSchoolEnrollment" />
      <xs:element ref="sif:StudentScoreSet" />
      <xs:element ref="sif:StudentSDTN" />
      <xs:element ref="sif:SummaryEnrollmentInfo" />
      <xs:element ref="sif:SystemRole" />
      <xs:element ref="sif:TeachingGroup" />
      <xs:element ref="sif:TermInfo" />
      <xs:element ref="sif:TimeTable" />
      <xs:element ref="sif:TimeTableCell" />
      <xs:element ref="sif:TimeTableSubject" />
    </xs:choice>
  </xs:complexType>

  <xs:complexType name="SIF_ExampleObjectType">
    <xs:annotation>
      <xs:documentation>The SIF objects that can be included in </xs:documentation>
    </xs:annotation>
  </xs:complexType>

  <xs:complexType name="ReportDataObjectType">
    <xs:annotation>
      <xs:documentation>The SIF objects that can be included in </xs:documentation>
    </xs:annotation>
    <xs:choice>
      <xs:element ref="sif:AggregateCharacteristicInfo" />
      <xs:element ref="sif:AggregateStatisticFact" />
      <xs:element ref="sif:AggregateStatisticInfo" />
      <xs:element ref="sif:Assessment" />
      <xs:element ref="sif:AssessmentAdministration" />
      <xs:element ref="sif:AssessmentForm" />
      <xs:element ref="sif:AssessmentItem" />
      <xs:element ref="sif:AssessmentPackage" />
      <xs:element ref="sif:AssessmentRegistration" />
      <xs:element ref="sif:AssessmentSubTest" />
      <xs:element ref="sif:CalendarDate" />
      <xs:element ref="sif:CalendarSummary" />
      <xs:element ref="sif:Identity" />
      <xs:element ref="sif:LEAInfo" />
      <xs:element ref="sif:LearningResource" />
      <xs:element ref="sif:LearningResourcePackage" />
      <xs:element ref="sif:LearningStandardDocument" />
      <xs:element ref="sif:LearningStandardItem" />
      <xs:element ref="sif:PersonPicture" />
      <xs:element ref="sif:ReportAuthorityInfo" />
      <xs:element ref="sif:ReportManifest" />
      <xs:element ref="sif:RoomInfo" />
      <xs:element ref="sif:SchoolCourseInfo" />
      <xs:element ref="sif:SchoolInfo" />
      <xs:element ref="sif:SchoolPrograms" />
      <xs:element ref="sif:SessionInfo" />
      <xs:element ref="sif:SIF_AgentACL" />
      <xs:element ref="sif:SIF_LogEntry" />
      <xs:element ref="sif:SIF_ReportObject" />
      <xs:element ref="sif:SIF_ZoneStatus" />
      <xs:element ref="sif:StaffAssignment" />
      <xs:element ref="sif:StaffPersonal" />
      <xs:element ref="sif:StudentActivityInfo" />
      <xs:element ref="sif:StudentActivityParticipation" />
      <xs:element ref="sif:StudentAttendanceSummary" />
      <xs:element ref="sif:StudentContactPersonal" />
      <xs:element ref="sif:StudentContactRelationship" />
      <xs:element ref="sif:StudentDailyAttendance" />
      <xs:element ref="sif:StudentParticipation" />
      <xs:element ref="sif:StudentPeriodAttendance" />
      <xs:element ref="sif:StudentPersonal" />
      <xs:element ref="sif:StudentSchoolEnrollment" />
      <xs:element ref="sif:StudentScoreSet" />
      <xs:element ref="sif:StudentSDTN" />
      <xs:element ref="sif:StudentSnapshot" />
      <xs:element ref="sif:SummaryEnrollmentInfo" />
      <xs:element ref="sif:SystemRole" />
      <xs:element ref="sif:TeachingGroup" />
      <xs:element ref="sif:TermInfo" />
      <xs:element ref="sif:TimeTable" />
      <xs:element ref="sif:TimeTableCell" />
      <xs:element ref="sif:TimeTableSubject" />
      <xs:element name="ReportPackage" type="sif:ReportPackageType" />
    </xs:choice>
  </xs:complexType>

  <xs:complexType name="SIF_HeaderDataModelType">
    <xs:annotation>
      <xs:documentation>Header information associated with a message.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SIF_MsgId" minOccurs="0" 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" minOccurs="0" 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" 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:annotation>
              <xs:documentation>
            The SIF_SourceId is the ID of the originator of the message. Each source needs to have a zone unique case-sensitive identifier.
          </xs:documentation>
            </xs:annotation>
            <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SIF_DestinationId" minOccurs="0" nillable="true">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:annotation>
              <xs:documentation>This element represents the ID of the recipient of the message and may be present as follows:</xs:documentation>
            </xs:annotation>
            <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SIF_Contexts" minOccurs="0" nillable="true" 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:complexType name="SIF_ErrorDataModelType">
    <xs:annotation>
      <xs:documentation>This element is used to signal an unsuccessful response.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="SIF_Category" minOccurs="0" type="sif:InfrastructureErrorCategoryType" />
      <xs:element name="SIF_Code" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            See Error Codes.
          </xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:union>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureXMLValidationErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureEncryptionErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureAuthenticationErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureAccessAndPermissionErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureRegistrationErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureProvisionErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureSubscriptionErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureRequestAndResponseErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureEventReportingAndProcessingErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureTransportErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureSystemErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:InfrastructureGenericMessageHandlingErrorType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="xs:token" />
            </xs:simpleType>
          </xs:union>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SIF_Desc" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:annotation>
              <xs:documentation>A simple, easy to understand, description of the error. The primary consumer of this message is the application user. Example: "Unable to open database."</xs:documentation>
            </xs:annotation>
            <xs:maxLength value="1024" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SIF_ExtendedDesc" minOccurs="0" nillable="true" 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:complexType name="SIF_QueryDataModelType">
    <xs:annotation>
      <xs:documentation>SIF's default query mechanism.</xs:documentation>
    </xs:annotation>
    <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: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" 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: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" minOccurs="0">
                            <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" minOccurs="0" 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" minOccurs="0" nillable="true" type="sif:SIF_ExampleObjectType">
          <xs:annotation>
            <xs:documentation>
              An example SIF object that serves as a template for matching objects.  There is an implied EQ operator
              for every element/attribute value present and an implied And group of all resulting conditions.  Currently
              this is an experimental feature and limited to use with select objects; wider use may be considered in future
              versions of this specification.
            </xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="SIF_ExtendedQueryDataModelType">
    <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" nillable="true" 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" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Element" minOccurs="0" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation>
            Indicates the element/attribute to return as a column.  Contents can be left empty to return the whole object specified in ObjectName,
            or * can be designated to return all attributes and immediate child elements of the object specified in ObjectName, or
            SIF_Element Syntax
             can be specified, relative to the object specified in ObjectName.  Requested attributes
            are to be returned as the text value of the corresponding attribute, elements as a copy of the XML element itself including attributes if they exist.
          </xs:documentation>
              </xs:annotation>
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:normalizedString">
                    <xs:attribute name="Alias" use="optional">
                      <xs:simpleType>
                        <xs:restriction base="xs:normalizedString">
                          <xs:annotation>
                            <xs:documentation>Optional caption for the column.</xs:documentation>
                          </xs:annotation>
                          <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:attribute>
                    <xs:attribute name="ObjectName" use="required" type="sif:SIF_RequestObjectNamesType">
                      <xs:annotation>
                        <xs:documentation>The name of the object from which to retrieve element/attributes.</xs:documentation>
                      </xs:annotation>
                    </xs:attribute>
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
          <xs:attribute name="Distinct" use="required" type="xs:boolean">
            <xs:annotation>
              <xs:documentation>
            Specifies whether query results should return all rows (false) or just distinct ones (true).  Rows are distinct if
            at least one column differs between them.
          </xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="RowCount" use="required">
            <xs:annotation>
              <xs:documentation>
            The maximum number of rows to return.  If All, return all rows, otherwise return the top rows up to the maximum
            row count indicated.
          </xs:documentation>
            </xs:annotation>
            <xs:simpleType>
              <xs:union>
                <xs:simpleType>
                  <xs:restriction base="xs:positiveInteger" />
                </xs:simpleType>
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="All" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:union>
            </xs:simpleType>
          </xs:attribute>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_From" 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: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" minOccurs="0">
                          <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" 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:annotation>
                                  <xs:documentation>This is the element/attribute being queried.</xs:documentation>
                                </xs:annotation>
                                <xs:complexType>
                                  <xs:simpleContent>
                                    <xs:extension base="xs:normalizedString">
                                      <xs:attribute name="ObjectName" use="required" type="sif:SIF_RequestObjectNamesType">
                                        <xs:annotation>
                                          <xs:documentation>The name of the object containing the element/attribute.</xs:documentation>
                                        </xs:annotation>
                                      </xs:attribute>
                                    </xs:extension>
                                  </xs:simpleContent>
                                </xs:complexType>
                              </xs:element>
                              <xs:element name="SIF_Operator" minOccurs="0">
                                <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" minOccurs="0" 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" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Element" minOccurs="0" 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:complexType name="SIF_ExtendedQueryResultsDataModelType">
    <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" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SIF_Element" minOccurs="0" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation>
            The element/attribute specified for the column in SIF_ExtendedQuery.
          </xs:documentation>
              </xs:annotation>
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:normalizedString">
                    <xs:attribute name="ObjectName" use="required" type="sif:SIF_RequestObjectNamesType">
                      <xs:annotation>
                        <xs:documentation>The object in which the element/attribute occurs.</xs:documentation>
                      </xs:annotation>
                    </xs:attribute>
                    <xs:attribute name="Alias" use="optional">
                      <xs:simpleType>
                        <xs:restriction base="xs:normalizedString">
                          <xs:annotation>
                            <xs:documentation>
            The caption for the column, if specified in SIF_ExtendedQuery.
          </xs:documentation>
                          </xs:annotation>
                          <xs:maxLength value="64" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:attribute>
                    <!--<xs:attribute ref="xsi:type" use="optional" />-->
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="SIF_Rows" 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: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>

  <!--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>

<!--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>

<!--RefIdTypeOrEmpty-->

<xs:simpleType name="RefIdTypeOrEmpty">
  <xs:union>
    <xs:simpleType>
      <xs:restriction base="sif:RefIdType" />
    </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>

<!--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>

</xs:schema>