<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:cal_bills_mmdrc="http://www.snb.ch/MMX/BillsMMDRCCalendar"
    targetNamespace="http://www.snb.ch/MMX/BillsMMDRCCalendar"
    elementFormDefault="qualified"
    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="Document">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Publication">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="PublicationID" type="xs:NCName"/>
                            <xs:element name="Title" type="cal_bills_mmdrc:LocalizedText" minOccurs="4" maxOccurs="4"/>
                            <xs:element name="SequenceNr" type="xs:integer"/>
                            <xs:element name="RefSequenceNr" type="xs:integer" minOccurs="0" maxOccurs="1"/>
                            <xs:element name="Status">
                                <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                        <xs:enumeration value="NEW"/>
                                        <xs:enumeration value="UPDATE"/>
                                        <xs:enumeration value="CANCEL"/>
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                    <xs:unique name="UniqueTitleLanguage">
                        <xs:selector xpath="cal_bills_mmdrc:Title"/>
                        <xs:field xpath="@lang"/>
                    </xs:unique>
                </xs:element>
                <xs:element name="BillsMMDRCCalendar" minOccurs="1" maxOccurs="1">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="Note" type="cal_bills_mmdrc:LocalizedText" minOccurs="4" maxOccurs="4"/>
                            <xs:element name="Auctions">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="Auction" minOccurs="1" maxOccurs="unbounded">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element name="ISIN">
                                                        <xs:simpleType>
                                                            <xs:restriction base="xs:string">
                                                                <xs:pattern value="[A-Z]{2,2}[A-Z0-9]{9,9}[0-9]{1,1}"/>
                                                            </xs:restriction>
                                                        </xs:simpleType>
                                                    </xs:element>
                                                    <xs:element name="AuctionStart" type="xs:dateTime"/>
                                                    <xs:element name="AuctionClose" type="xs:dateTime"/>
                                                    <xs:element name="PaymentDate" type="xs:date"/>
                                                    <xs:element name="RedemptionDate" type="xs:date"/>
                                                    <xs:element name="Term">
                                                        <xs:complexType>
                                                            <xs:simpleContent>
                                                                <xs:extension base="xs:integer">
                                                                    <xs:attribute name="unit" use="required">
                                                                        <xs:simpleType>
                                                                            <xs:restriction base="xs:string">
                                                                                <xs:enumeration value="d"/>
                                                                            </xs:restriction>
                                                                        </xs:simpleType>
                                                                    </xs:attribute>
                                                                </xs:extension>
                                                            </xs:simpleContent>
                                                        </xs:complexType>
                                                    </xs:element>
                                                    <xs:element name="AdditionalInformation" type="xs:string" minOccurs="0" maxOccurs="1"/>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="FurtherInformation" type="xs:string" minOccurs="0" maxOccurs="1"/>
                        </xs:sequence>
                    </xs:complexType>
                    <xs:unique name="UniqueNoteLanguage">
                        <xs:selector xpath="cal_bills_mmdrc:Note"/>
                        <xs:field xpath="@lang"/>
                    </xs:unique>
                </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>
