<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
  elementFormDefault="qualified"
  targetNamespace="http://www.snb.ch/MMX/envelope"
  xmlns:mmx_env="http://www.snb.ch/MMX/envelope"
  xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning"
  vc:minVersion="1.1">

  <xs:complexType name="LocalizedText">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="lang" use="required">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="en"/>
              <xs:enumeration value="de"/>
              <xs:enumeration value="fr"/>
              <xs:enumeration value="it"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:element name="ExternalMessage">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Header">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="ExtMessageID" type="xs:integer"/>
              <xs:element name="ContentType">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:enumeration value="RepoAnnouncement"/>
                    <xs:enumeration value="BillsMMDRCAnnouncement"/>
                    <xs:enumeration value="FederalBondsAnnouncement"/>
                    <xs:enumeration value="AdHocCommunication"/>
                    <xs:enumeration value="RepoCalendar"/>
                    <xs:enumeration value="BillsMMDRCCalendar"/>
                    <xs:enumeration value="RepoResults"/>
                    <xs:enumeration value="BillsMMDRCResults"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="PublicationType">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:enumeration value="SNB_BILLS_ANNOUNCEMENT"/>
                    <xs:enumeration value="MMDRC_ANNOUNCEMENT"/>
                    <xs:enumeration value="CHF_REPO_ANNOUNCEMENT"/>
                    <xs:enumeration value="USD_REPO_ANNOUNCEMENT"/>
                    <xs:enumeration value="FEDERAL_BONDS_ANNOUNCEMENT"/>
                    <xs:enumeration value="AD_HOC_COMMUNICATION"/>
                    <xs:enumeration value="CHF_REPO_CALENDAR"/>
                    <xs:enumeration value="USD_REPO_CALENDAR"/>
                    <xs:enumeration value="SNB_BILLS_CALENDAR"/>
                    <xs:enumeration value="CHF_REPO_RESULTS"/>
                    <xs:enumeration value="USD_REPO_RESULTS"/>
                    <xs:enumeration value="SNB_BILLS_RESULTS"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>              
              <xs:element name="PublicationTitle" type="mmx_env:LocalizedText" minOccurs="4" maxOccurs="4"/>
              <xs:element name="PublicationDateTime" type="xs:dateTime"/>
            </xs:sequence>
          </xs:complexType>
          <xs:unique name="UniquePublicationTitleLanguage">
            <xs:selector xpath="mmx_env:PublicationTitle"/>
            <xs:field xpath="@lang"/>
          </xs:unique>
        </xs:element>
        <xs:element name="Body">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Content">
                <xs:complexType mixed="true">
                  <xs:sequence>
                    <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
      <xs:attribute name="schemaVersion" use="required">
        <!-- Restrict the version attribute to a list of valid versions -->
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="1.2"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
</xs:schema>
