<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="urn:iso:std:iso:20022:tech:xsd:camt.053.001.02"
           targetNamespace="urn:iso:std:iso:20022:tech:xsd:camt.053.001.02"
           elementFormDefault="qualified">

  <xs:element name="Document" type="Document"/>

  <xs:complexType name="Document">
    <xs:sequence>
      <xs:element name="BkToCstmrStmt" type="BankToCustomerStatementV02"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="BankToCustomerStatementV02">
    <xs:sequence>
      <xs:element name="GrpHdr" type="GroupHeader42"/>
      <xs:element name="Stmt" type="AccountStatement2" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="GroupHeader42">
    <xs:sequence>
      <xs:element name="MsgId" type="Max35Text"/>
      <xs:element name="CreDtTm" type="ISODateTime"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="AccountStatement2">
    <xs:sequence>
      <xs:element name="Id" type="Max35Text"/>
      <xs:element name="ElctrncSeqNb" type="Number" minOccurs="0"/>
      <xs:element name="Acct" type="CashAccount20"/>
      <xs:element name="Bal" type="CashBalance3" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="Ntry" type="ReportEntry2" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="CashAccount20">
    <xs:sequence>
      <xs:element name="Id" type="AccountIdentification4Choice"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="AccountIdentification4Choice">
    <xs:choice>
      <xs:element name="IBAN" type="IBAN2007Identifier"/>
      <xs:element name="Othr" type="GenericAccountIdentification1"/>
    </xs:choice>
  </xs:complexType>

  <xs:complexType name="CashBalance3">
    <xs:sequence>
      <xs:element name="Tp" type="BalanceType12"/>
      <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/>
      <xs:element name="CdtDbtInd" type="CreditDebitCode"/>
      <xs:element name="Dt" type="DateAndDateTimeChoice"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="BalanceType12">
    <xs:sequence>
      <xs:element name="CdOrPrtry" type="BalanceType5Choice"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="BalanceType5Choice">
    <xs:choice>
      <xs:element name="Cd" type="ExternalBalanceType1Code"/>
      <xs:element name="Prtry" type="Max35Text"/>
    </xs:choice>
  </xs:complexType>

  <xs:complexType name="ReportEntry2">
    <xs:sequence>
      <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/>
      <xs:element name="CdtDbtInd" type="CreditDebitCode"/>
      <xs:element name="Sts" type="EntryStatus2Code"/>
      <xs:element name="BookgDt" type="DateAndDateTimeChoice" minOccurs="0"/>
      <xs:element name="ValDt" type="DateAndDateTimeChoice" minOccurs="0"/>
      <xs:element name="NtryRef" type="Max35Text" minOccurs="0"/>
      <xs:element name="NtryDtls" type="EntryDetails1" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="EntryDetails1">
    <xs:sequence>
      <xs:element name="TxDtls" type="EntryTransaction2" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="EntryTransaction2">
    <xs:sequence>
      <xs:element name="RmtInf" type="RemittanceInformation5" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="RemittanceInformation5">
    <xs:sequence>
      <xs:element name="Ustrd" type="Max140Text" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ActiveOrHistoricCurrencyAndAmount">
    <xs:simpleContent>
      <xs:extension base="ActiveOrHistoricCurrencyAndAmount_SimpleType">
        <xs:attribute name="Ccy" type="ActiveOrHistoricCurrencyCode" use="required"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="DateAndDateTimeChoice">
    <xs:choice>
      <xs:element name="Dt" type="ISODate"/>
      <xs:element name="DtTm" type="ISODateTime"/>
    </xs:choice>
  </xs:complexType>

  <xs:complexType name="GenericAccountIdentification1">
    <xs:sequence>
      <xs:element name="Id" type="Max34Text"/>
    </xs:sequence>
  </xs:complexType>

  <!-- Simple types -->
  <xs:simpleType name="Max35Text">
    <xs:restriction base="xs:string">
      <xs:minLength value="1"/>
      <xs:maxLength value="35"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="Max34Text">
    <xs:restriction base="xs:string">
      <xs:minLength value="1"/>
      <xs:maxLength value="34"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="Max140Text">
    <xs:restriction base="xs:string">
      <xs:minLength value="1"/>
      <xs:maxLength value="140"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="ISODateTime">
    <xs:restriction base="xs:dateTime"/>
  </xs:simpleType>

  <xs:simpleType name="ISODate">
    <xs:restriction base="xs:date"/>
  </xs:simpleType>

  <xs:simpleType name="Number">
    <xs:restriction base="xs:decimal">
      <xs:fractionDigits value="0"/>
      <xs:totalDigits value="18"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="ActiveOrHistoricCurrencyAndAmount_SimpleType">
    <xs:restriction base="xs:decimal">
      <xs:fractionDigits value="5"/>
      <xs:totalDigits value="18"/>
      <xs:minInclusive value="0"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="ActiveOrHistoricCurrencyCode">
    <xs:restriction base="xs:string">
      <xs:pattern value="[A-Z]{3,3}"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="IBAN2007Identifier">
    <xs:restriction base="xs:string">
      <xs:pattern value="[A-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="CreditDebitCode">
    <xs:restriction base="xs:string">
      <xs:enumeration value="CRDT"/>
      <xs:enumeration value="DBIT"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="EntryStatus2Code">
    <xs:restriction base="xs:string">
      <xs:enumeration value="BOOK"/>
      <xs:enumeration value="PDNG"/>
      <xs:enumeration value="INFO"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="ExternalBalanceType1Code">
    <xs:restriction base="xs:string">
      <xs:minLength value="1"/>
      <xs:maxLength value="4"/>
    </xs:restriction>
  </xs:simpleType>

</xs:schema>
