Use of Hierarchical Data XML Stage

Post questions here relative to DataStage Enterprise/PX Edition for such areas as Parallel job design, Parallel datasets, BuildOps, Wrappers, etc.

Moderators: chulett, rschirm, roy

Post Reply
dsusercs
Premium Member
Premium Member
Posts: 6
Joined: Tue Jun 19, 2012 7:15 am

Use of Hierarchical Data XML Stage

Post by dsusercs »

Hi,

I'm not sure if I understand the Hierarchial Data XML stage right. I have gone through the Red Books and understand that a list can only be mapped with another list. I also see that a list can be created only when a link is created. My job design:

Hierarchial Data -> Merge -> Sequential file

I have an xml with multiple lists and if I have to create one link for each list, I have to create over 100 output links. Is this how the Hierarchial stage must be used?
eostic
Premium Member
Premium Member
Posts: 3838
Joined: Mon Oct 17, 2005 9:34 am

Post by eostic »

You dont necessarily need one link for every list (actually, it is generally one link per complete "path", where a path might have many nested lists) but it is the most typical.....because those independent paths are frequently coming from many different sources, such as multiple relational tables. You are then relating them according to the parentage that relates them together.....this is the nature of a hierarchy with independently repeating sets of information.

Ernie
Ernie Ostic

blogit!
<a href="https://dsrealtime.wordpress.com/2015/0 ... ere/">Open IGC is Here!</a>
eostic
Premium Member
Premium Member
Posts: 3838
Joined: Mon Oct 17, 2005 9:34 am

Post by eostic »

...misread your original email...I see you are "reading" the xml. ...and yes, you would aim for a single output link for each complete "path". ...and 100 output links? Perhaps...but that is normal....especially because typical "normalization" of such a hierarchy would mean having (say) 100 resulting relational tables...each with their own independent number of repeating "rows".

In reality, it is rare that any extraction scenarion needs "every node" of a particular xml document. What are the key tables that you are loading downstream?

One question --- how "big" is the xml document you are reading, and how many do you have in each run? 100's of megs? ...or 100's of gigs? This could be significant and dictate which Stage to use. Another question -- for the paths that you need to retrieve, are they always complete (node instances existing for each nested node down to the bottom)? That could also have a significant impact on which Stage(s) you choose.

Ernie
Ernie Ostic

blogit!
<a href="https://dsrealtime.wordpress.com/2015/0 ... ere/">Open IGC is Here!</a>
dsusercs
Premium Member
Premium Member
Posts: 6
Joined: Tue Jun 19, 2012 7:15 am

Post by dsusercs »

Hi eostic,

The goal now is to have the complete dump of the XML file for later business and reporting/data needs. But most of the tags are currently empty with a bunch of optional tags not being present at all, but may contain data later in the phase of the project.

About the size of the file, we now receive files @25MB and are told that production file will be multi-fold bigger. Currently using InputXMLPX stage and it takes about 30-40 minutes for 25MB file. I have now tried Hierarchial Data Stage with half of the file being read and it does it in a matter of minutes. I'm assuming that the performance stays this way for the complete file too.

Thought of simplifying the job with reduced links but seems that is not possible with Hierarchial Data Stage :(
eostic
Premium Member
Premium Member
Posts: 3838
Joined: Mon Oct 17, 2005 9:34 am

Post by eostic »

The Hierarchical Stage is many times faster as it uses a different methodology to more intelligently parse the xml.

Multiple output links? ...that's simply the nature of a hierarchy if you are putting the data into relational tables.

Of course, if you are just doing this to back up "chunks" of the xml, or not putting the data into relational, or don't need to parse "everything", you could leave whole nodes "as is" and just keep them in xml format, perhaps after parsing out the keys for other purposes (location, table, etc.).

...and check that you aren't creating un-necessary output links. You only need an output link for each "complete" nested path. Meaning...if you have company...with nested "departments"....with nested "employees"...and you always have employee nodes, then you just need one link for all three of those nodes, down to that employee level.

Ernie
Ernie Ostic

blogit!
<a href="https://dsrealtime.wordpress.com/2015/0 ... ere/">Open IGC is Here!</a>
dsusercs
Premium Member
Premium Member
Posts: 6
Joined: Tue Jun 19, 2012 7:15 am

Post by dsusercs »

Hi Ernie,

This is where the trick comes in, with Hierarchical Stage.

When XSD says, for e.g. if "departments" is maxOccurs="unbounded" minOccurs="0" then, departments get classified as a "list" even though it is a nested child of company. The moment it is defined as list, it needs a separate output link even though it is a child for company. We are also flattening this file in another job. This job uses tags from both "list"(maxOccurs="unbounded" minOccurs="0") and "non list"(maxOccurs="1" minOccurs="0") items and its becoming complex to have merge stage defining keys etc etc. I'm using merge because I have to frame a complete record using tags from both list and non list items. I feel this as over complicated. But as you said, we need to live with it.

If there are better ideas to compose a complete flattened records without using merge stage, you are most welcome to share it.
eostic
Premium Member
Premium Member
Posts: 3838
Joined: Mon Oct 17, 2005 9:34 am

Post by eostic »

"The moment it is defined as list, it needs a separate output link even though it is a child for company."

Not true. You can go "as many nested lists deep" on a single link as you want. ...meaning that "Company" and "Department" elements and attribute values can be placed on the same single link.

The user interface can make this confusing, especially when it doesn't like for you to try and map columns for different lists, saying something about a mis-match of the dimensions or even datatype, and not "unfocusing" the ok button.....but the trick is to, BEFORE DOING ANYTHING ELSE..... assign (map) the LOWEST LIST that you care about to the "list" represented by your output link name. THEN you can grab anything on the entire tree....3, 4, or 100 levels deep (in this case, "up") in that path.

One caveat that does throw it back to the need for separate links ---- "short paths". The above scenario works fine, except when a "real node" doesn't exist for one of those nested children. Then it behaves much like a classic SQL join --- if there aren't any children, you won't retrieve the parent.

So -- where your paths are known to be complete, which depends a lot on your schema, the transactional nature of your XML, etc., you can define and dive as deeply as you want, putting many, many lists onto the same link.

Ernie
Ernie Ostic

blogit!
<a href="https://dsrealtime.wordpress.com/2015/0 ... ere/">Open IGC is Here!</a>
dsusercs
Premium Member
Premium Member
Posts: 6
Joined: Tue Jun 19, 2012 7:15 am

Post by dsusercs »

Hi Ernie,

Not really. I have pasted the XSD below.

Have mapped the list <Document><BkToCstmrDbtCdtNtfctn><Ntfctn><Ntry><NtryDtls><TxDtls><RltdPties><UltmtDbtr><Id><OrgId><Othr> to O/P link.

When I try to map the column <Document><BkToCstmrDbtCdtNtfctn><Ntfctn><Ntry><NtryDtls><TxDtls><RltdRmtInf><RmtId> which is within the list <RltdRmtInf>, I get an error as

"CDIUI2820E The mapping is not applicable due to an invalid type conversion or difference in the source and target list dimensions."

Code: Select all

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--Generated by SWIFTStandards Workstation (build:R6.1.0.2) on 2009 Jan 08 17:30:53-->
<xs:schema xmlns="urn:iso:std:iso:20022:tech:xsd:camt.054.001.02" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="urn:iso:std:iso:20022:tech:xsd:camt.054.001.02">
    <xs:element name="Document" type="Document"/>
    <xs:complexType name="AccountIdentification4Choice">
        <xs:sequence>
            <xs:choice>
                <xs:element name="IBAN" type="IBAN2007Identifier"/>
                <xs:element name="Othr" type="GenericAccountIdentification1"/>
            </xs:choice>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="AccountInterest2">
        <xs:sequence>
            <xs:element maxOccurs="1" minOccurs="0" name="Tp" type="InterestType1Choice"/>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="Rate" type="Rate3"/>
            <xs:element maxOccurs="1" minOccurs="0" name="FrToDt" type="DateTimePeriodDetails"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Rsn" type="Max35Text"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="AccountNotification2">
        <xs:sequence>
            <xs:element name="Id" type="Max35Text"/>
            <xs:element maxOccurs="1" minOccurs="0" name="ElctrncSeqNb" type="Number"/>
            <xs:element maxOccurs="1" minOccurs="0" name="LglSeqNb" type="Number"/>
            <xs:element name="CreDtTm" type="ISODateTime"/>
            <xs:element maxOccurs="1" minOccurs="0" name="FrToDt" type="DateTimePeriodDetails"/>
            <xs:element maxOccurs="1" minOccurs="0" name="CpyDplctInd" type="CopyDuplicate1Code"/>
            <xs:element maxOccurs="1" minOccurs="0" name="RptgSrc" type="ReportingSource1Choice"/>
            <xs:element name="Acct" type="CashAccount20"/>
            <xs:element maxOccurs="1" minOccurs="0" name="RltdAcct" type="CashAccount16"/>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="Intrst" type="AccountInterest2"/>
            <xs:element maxOccurs="1" minOccurs="0" name="TxsSummry" type="TotalTransactions2"/>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="Ntry" type="ReportEntry2"/>
            <xs:element maxOccurs="1" minOccurs="0" name="AddtlNtfctnInf" type="Max500Text"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="AccountSchemeName1Choice">
        <xs:sequence>
            <xs:choice>
                <xs:element name="Cd" type="ExternalAccountIdentification1Code"/>
                <xs:element name="Prtry" type="Max35Text"/>
            </xs:choice>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="ActiveOrHistoricCurrencyAndAmount_SimpleType">
        <xs:restriction base="xs:decimal">
            <xs:minInclusive value="0"/>
            <xs:fractionDigits value="5"/>
            <xs:totalDigits value="18"/>
        </xs:restriction>
    </xs:simpleType>
    <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:simpleType name="ActiveOrHistoricCurrencyCode">
        <xs:restriction base="xs:string">
            <xs:pattern value="[A-Z]{3,3}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="AddressType2Code">
        <xs:restriction base="xs:string">
            <xs:enumeration value="ADDR"/>
            <xs:enumeration value="PBOX"/>
            <xs:enumeration value="HOME"/>
            <xs:enumeration value="BIZZ"/>
            <xs:enumeration value="MLTO"/>
            <xs:enumeration value="DLVY"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="AlternateSecurityIdentification2">
        <xs:sequence>
            <xs:element name="Tp" type="Max35Text"/>
            <xs:element name="Id" type="Max35Text"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="AmountAndCurrencyExchange3">
        <xs:sequence>
            <xs:element maxOccurs="1" minOccurs="0" name="InstdAmt" type="AmountAndCurrencyExchangeDetails3"/>
            <xs:element maxOccurs="1" minOccurs="0" name="TxAmt" type="AmountAndCurrencyExchangeDetails3"/>
            <xs:element maxOccurs="1" minOccurs="0" name="CntrValAmt" type="AmountAndCurrencyExchangeDetails3"/>
            <xs:element maxOccurs="1" minOccurs="0" name="AnncdPstngAmt" type="AmountAndCurrencyExchangeDetails3"/>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="PrtryAmt" type="AmountAndCurrencyExchangeDetails4"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="AmountAndCurrencyExchangeDetails3">
        <xs:sequence>
            <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/>
            <xs:element maxOccurs="1" minOccurs="0" name="CcyXchg" type="CurrencyExchange5"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="AmountAndCurrencyExchangeDetails4">
        <xs:sequence>
            <xs:element name="Tp" type="Max35Text"/>
            <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/>
            <xs:element maxOccurs="1" minOccurs="0" name="CcyXchg" type="CurrencyExchange5"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="AmountRangeBoundary1">
        <xs:sequence>
            <xs:element name="BdryAmt" type="ImpliedCurrencyAndAmount"/>
            <xs:element name="Incl" type="YesNoIndicator"/>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="AnyBICIdentifier">
        <xs:restriction base="xs:string">
            <xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="BICIdentifier">
        <xs:restriction base="xs:string">
            <xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="BankToCustomerDebitCreditNotificationV02">
        <xs:sequence>
            <xs:element name="GrpHdr" type="GroupHeader42"/>
            <xs:element maxOccurs="unbounded" minOccurs="1" name="Ntfctn" type="AccountNotification2"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="BankTransactionCodeStructure4">
        <xs:sequence>
            <xs:element maxOccurs="1" minOccurs="0" name="Domn" type="BankTransactionCodeStructure5"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Prtry" type="ProprietaryBankTransactionCodeStructure1"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="BankTransactionCodeStructure5">
        <xs:sequence>
            <xs:element name="Cd" type="ExternalBankTransactionDomain1Code"/>
            <xs:element name="Fmly" type="BankTransactionCodeStructure6"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="BankTransactionCodeStructure6">
        <xs:sequence>
            <xs:element name="Cd" type="ExternalBankTransactionFamily1Code"/>
            <xs:element name="SubFmlyCd" type="ExternalBankTransactionSubFamily1Code"/>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="BaseOneRate">
        <xs:restriction base="xs:decimal">
            <xs:fractionDigits value="10"/>
            <xs:totalDigits value="11"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="BatchInformation2">
        <xs:sequence>
            <xs:element maxOccurs="1" minOccurs="0" name="MsgId" type="Max35Text"/>
            <xs:element maxOccurs="1" minOccurs="0" name="PmtInfId" type="Max35Text"/>
            <xs:element maxOccurs="1" minOccurs="0" name="NbOfTxs" type="Max15NumericText"/>
            <xs:element maxOccurs="1" minOccurs="0" name="TtlAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
            <xs:element maxOccurs="1" minOccurs="0" name="CdtDbtInd" type="CreditDebitCode"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="BranchAndFinancialInstitutionIdentification4">
        <xs:sequence>
            <xs:element name="FinInstnId" type="FinancialInstitutionIdentification7"/>
            <xs:element maxOccurs="1" minOccurs="0" name="BrnchId" type="BranchData2"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="BranchData2">
        <xs:sequence>
            <xs:element maxOccurs="1" minOccurs="0" name="Id" type="Max35Text"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
            <xs:element maxOccurs="1" minOccurs="0" name="PstlAdr" type="PostalAddress6"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="CashAccount16">
        <xs:sequence>
            <xs:element name="Id" type="AccountIdentification4Choice"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Tp" type="CashAccountType2"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Ccy" type="ActiveOrHistoricCurrencyCode"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max70Text"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="CashAccount20">
        <xs:sequence>
            <xs:element name="Id" type="AccountIdentification4Choice"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Tp" type="CashAccountType2"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Ccy" type="ActiveOrHistoricCurrencyCode"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max70Text"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Ownr" type="PartyIdentification32"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Svcr" type="BranchAndFinancialInstitutionIdentification4"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="CashAccountType2">
        <xs:sequence>
            <xs:choice>
                <xs:element name="Cd" type="CashAccountType4Code"/>
                <xs:element name="Prtry" type="Max35Text"/>
            </xs:choice>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="CashAccountType4Code">
        <xs:restriction base="xs:string">
            <xs:enumeration value="CASH"/>
            <xs:enumeration value="CHAR"/>
            <xs:enumeration value="COMM"/>
            <xs:enumeration value="TAXE"/>
            <xs:enumeration value="CISH"/>
            <xs:enumeration value="TRAS"/>
            <xs:enumeration value="SACC"/>
            <xs:enumeration value="CACC"/>
            <xs:enumeration value="SVGS"/>
            <xs:enumeration value="ONDP"/>
            <xs:enumeration value="MGLD"/>
            <xs:enumeration value="NREX"/>
            <xs:enumeration value="MOMA"/>
            <xs:enumeration value="LOAN"/>
            <xs:enumeration value="SLRY"/>
            <xs:enumeration value="ODFT"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="CashBalanceAvailability2">
        <xs:sequence>
            <xs:element name="Dt" type="CashBalanceAvailabilityDate1"/>
            <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/>
            <xs:element name="CdtDbtInd" type="CreditDebitCode"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="CashBalanceAvailabilityDate1">
        <xs:sequence>
            <xs:choice>
                <xs:element name="NbOfDays" type="Max15PlusSignedNumericText"/>
                <xs:element name="ActlDt" type="ISODate"/>
            </xs:choice>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="ChargeBearerType1Code">
        <xs:restriction base="xs:string">
            <xs:enumeration value="DEBT"/>
            <xs:enumeration value="CRED"/>
            <xs:enumeration value="SHAR"/>
            <xs:enumeration value="SLEV"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="ChargeType1Code">
        <xs:restriction base="xs:string">
            <xs:enumeration value="BRKF"/>
            <xs:enumeration value="COMM"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="ChargeType2Choice">
        <xs:sequence>
            <xs:choice>
                <xs:element name="Cd" type="ChargeType1Code"/>
                <xs:element name="Prtry" type="GenericIdentification3"/>
            </xs:choice>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ChargesInformation6">
        <xs:sequence>
            <xs:element maxOccurs="1" minOccurs="0" name="TtlChrgsAndTaxAmt" type="ActiveOrHistoricCurrencyAndAmount"/>
            <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/>
            <xs:element maxOccurs="1" minOccurs="0" name="CdtDbtInd" type="CreditDebitCode"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Tp" type="ChargeType2Choice"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Rate" type="PercentageRate"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Br" type="ChargeBearerType1Code"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Pty" type="BranchAndFinancialInstitutionIdentification4"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Tax" type="TaxCharges2"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ClearingSystemIdentification2Choice">
        <xs:sequence>
            <xs:choice>
                <xs:element name="Cd" type="ExternalClearingSystemIdentification1Code"/>
                <xs:element name="Prtry" type="Max35Text"/>
            </xs:choice>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ClearingSystemMemberIdentification2">
        <xs:sequence>
            <xs:element maxOccurs="1" minOccurs="0" name="ClrSysId" type="ClearingSystemIdentification2Choice"/>
            <xs:element name="MmbId" type="Max35Text"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ContactDetails2">
        <xs:sequence>
            <xs:element maxOccurs="1" minOccurs="0" name="NmPrfx" type="NamePrefix1Code"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
            <xs:element maxOccurs="1" minOccurs="0" name="PhneNb" type="PhoneNumber"/>
            <xs:element maxOccurs="1" minOccurs="0" name="MobNb" type="PhoneNumber"/>
            <xs:element maxOccurs="1" minOccurs="0" name="FaxNb" type="PhoneNumber"/>
            <xs:element maxOccurs="1" minOccurs="0" name="EmailAdr" type="Max2048Text"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Othr" type="Max35Text"/>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="CopyDuplicate1Code">
        <xs:restriction base="xs:string">
            <xs:enumeration value="CODU"/>
            <xs:enumeration value="COPY"/>
            <xs:enumeration value="DUPL"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="CorporateAction1">
        <xs:sequence>
            <xs:element maxOccurs="1" minOccurs="0" name="Cd" type="Max35Text"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Nb" type="Max35Text"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Prtry" type="Max35Text"/>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="CountryCode">
        <xs:restriction base="xs:string">
            <xs:pattern value="[A-Z]{2,2}"/>
        </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:complexType name="CreditorReferenceInformation2">
        <xs:sequence>
            <xs:element maxOccurs="1" minOccurs="0" name="Tp" type="CreditorReferenceType2"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Ref" type="Max35Text"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="CreditorReferenceType1Choice">
        <xs:sequence>
            <xs:choice>
                <xs:element name="Cd" type="DocumentType3Code"/>
                <xs:element name="Prtry" type="Max35Text"/>
            </xs:choice>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="CreditorReferenceType2">
        <xs:sequence>
            <xs:element name="CdOrPrtry" type="CreditorReferenceType1Choice"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="CurrencyAndAmountRange2">
        <xs:sequence>
            <xs:element name="Amt" type="ImpliedCurrencyAmountRangeChoice"/>
            <xs:element maxOccurs="1" minOccurs="0" name="CdtDbtInd" type="CreditDebitCode"/>
            <xs:element name="Ccy" type="ActiveOrHistoricCurrencyCode"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="CurrencyExchange5">
        <xs:sequence>
            <xs:element name="SrcCcy" type="ActiveOrHistoricCurrencyCode"/>
            <xs:element maxOccurs="1" minOccurs="0" name="TrgtCcy" type="ActiveOrHistoricCurrencyCode"/>
            <xs:element maxOccurs="1" minOccurs="0" name="UnitCcy" type="ActiveOrHistoricCurrencyCode"/>
            <xs:element name="XchgRate" type="BaseOneRate"/>
            <xs:element maxOccurs="1" minOccurs="0" name="CtrctId" type="Max35Text"/>
            <xs:element maxOccurs="1" minOccurs="0" name="QtnDt" type="ISODateTime"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="DateAndDateTimeChoice">
        <xs:sequence>
            <xs:choice>
                <xs:element name="Dt" type="ISODate"/>
                <xs:element name="DtTm" type="ISODateTime"/>
            </xs:choice>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="DateAndPlaceOfBirth">
        <xs:sequence>
            <xs:element name="BirthDt" type="ISODate"/>
            <xs:element maxOccurs="1" minOccurs="0" name="PrvcOfBirth" type="Max35Text"/>
            <xs:element name="CityOfBirth" type="Max35Text"/>
            <xs:element name="CtryOfBirth" type="CountryCode"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="DatePeriodDetails">
        <xs:sequence>
            <xs:element name="FrDt" type="ISODate"/>
            <xs:element name="ToDt" type="ISODate"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="DateTimePeriodDetails">
        <xs:sequence>
            <xs:element name="FrDtTm" type="ISODateTime"/>
            <xs:element name="ToDtTm" type="ISODateTime"/>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="DecimalNumber">
        <xs:restriction base="xs:decimal">
            <xs:fractionDigits value="17"/>
            <xs:totalDigits value="18"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="Document">
        <xs:sequence>
            <xs:element name="BkToCstmrDbtCdtNtfctn" type="BankToCustomerDebitCreditNotificationV02"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="DocumentAdjustment1">
        <xs:sequence>
            <xs:element name="Amt" type="ActiveOrHistoricCurrencyAndAmount"/>
            <xs:element maxOccurs="1" minOccurs="0" name="CdtDbtInd" type="CreditDebitCode"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Rsn" type="Max4Text"/>
            <xs:element maxOccurs="1" minOccurs="0" name="AddtlInf" type="Max140Text"/>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="DocumentType3Code">
        <xs:restriction base="xs:string">
            <xs:enumeration value="RADM"/>
            <xs:enumeration value="RPIN"/>
            <xs:enumeration value="FXDR"/>
            <xs:enumeration value="DISP"/>
            <xs:enumeration value="PUOR"/>
            <xs:enumeration value="SCOR"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="DocumentType5Code">
        <xs:restriction base="xs:string">
            <xs:enumeration value="MSIN"/>
            <xs:enumeration value="CNFA"/>
            <xs:enumeration value="DNFA"/>
            <xs:enumeration value="CINV"/>
            <xs:enumeration value="CREN"/>
            <xs:enumeration value="DEBN"/>
            <xs:enumeration value="HIRI"/>
            <xs:enumeration value="SBIN"/>
            <xs:enumeration value="CMCN"/>
            <xs:enumeration value="SOAC"/>
            <xs:enumeration value="DISP"/>
            <xs:enumeration value="BOLD"/>
            <xs:enumeration value="VCHR"/>
            <xs:enumeration value="AROI"/>
            <xs:enumeration value="TSUT"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="EntryDetails1">
        <xs:sequence>
            <xs:element maxOccurs="1" minOccurs="0" name="Btch" type="BatchInformation2"/>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="TxDtls" type="EntryTransaction2"/>
        </xs:sequence>
    </xs:complexType>
    <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:complexType name="EntryTransaction2">
        <xs:sequence>
            <xs:element maxOccurs="1" minOccurs="0" name="Refs" type="TransactionReferences2"/>
            <xs:element maxOccurs="1" minOccurs="0" name="AmtDtls" type="AmountAndCurrencyExchange3"/>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="Avlbty" type="CashBalanceAvailability2"/>
            <xs:element maxOccurs="1" minOccurs="0" name="BkTxCd" type="BankTransactionCodeStructure4"/>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="Chrgs" type="ChargesInformation6"/>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="Intrst" type="TransactionInterest2"/>
            <xs:element maxOccurs="1" minOccurs="0" name="RltdPties" type="TransactionParty2"/>
            <xs:element maxOccurs="1" minOccurs="0" name="RltdAgts" type="TransactionAgents2"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Purp" type="Purpose2Choice"/>
            <xs:element maxOccurs="10" minOccurs="0" name="RltdRmtInf" type="RemittanceLocation2"/>
            <xs:element maxOccurs="1" minOccurs="0" name="RmtInf" type="RemittanceInformation5"/>
            <xs:element maxOccurs="1" minOccurs="0" name="RltdDts" type="TransactionDates2"/>
            <xs:element maxOccurs="1" minOccurs="0" name="RltdPric" type="TransactionPrice2Choice"/>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="RltdQties" type="TransactionQuantities1Choice"/>
            <xs:element maxOccurs="1" minOccurs="0" name="FinInstrmId" type="SecurityIdentification4Choice"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Tax" type="TaxInformation3"/>
            <xs:element maxOccurs="1" minOccurs="0" name="RtrInf" type="ReturnReasonInformation10"/>
            <xs:element maxOccurs="1" minOccurs="0" name="CorpActn" type="CorporateAction1"/>
            <xs:element maxOccurs="1" minOccurs="0" name="SfkpgAcct" type="CashAccount16"/>
            <xs:element maxOccurs="1" minOccurs="0" name="AddtlTxInf" type="Max500Text"/>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="ExternalAccountIdentification1Code">
        <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="4"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="ExternalBankTransactionDomain1Code">
        <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="4"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="ExternalBankTransactionFamily1Code">
        <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="4"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="ExternalBankTransactionSubFamily1Code">
        <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="4"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="ExternalClearingSystemIdentification1Code">
        <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="5"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="ExternalFinancialInstitutionIdentification1Code">
        <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="4"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="ExternalOrganisationIdentification1Code">
        <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="4"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="ExternalPersonIdentification1Code">
        <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="4"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="ExternalPurpose1Code">
        <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="4"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="ExternalReportingSource1Code">
        <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="4"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="ExternalReturnReason1Code">
        <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="4"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="ExternalTechnicalInputChannel1Code">
        <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="4"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="FinancialIdentificationSchemeName1Choice">
        <xs:sequence>
            <xs:choice>
                <xs:element name="Cd" type="ExternalFinancialInstitutionIdentification1Code"/>
                <xs:element name="Prtry" type="Max35Text"/>
            </xs:choice>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="FinancialInstitutionIdentification7">
        <xs:sequence>
            <xs:element maxOccurs="1" minOccurs="0" name="BIC" type="BICIdentifier"/>
            <xs:element maxOccurs="1" minOccurs="0" name="ClrSysMmbId" type="ClearingSystemMemberIdentification2"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
            <xs:element maxOccurs="1" minOccurs="0" name="PstlAdr" type="PostalAddress6"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Othr" type="GenericFinancialIdentification1"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="FinancialInstrumentQuantityChoice">
        <xs:sequence>
            <xs:choice>
                <xs:element name="Unit" type="DecimalNumber"/>
                <xs:element name="FaceAmt" type="ImpliedCurrencyAndAmount"/>
                <xs:element name="AmtsdVal" type="ImpliedCurrencyAndAmount"/>
            </xs:choice>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="FromToAmountRange">
        <xs:sequence>
            <xs:element name="FrAmt" type="AmountRangeBoundary1"/>
            <xs:element name="ToAmt" type="AmountRangeBoundary1"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="GenericAccountIdentification1">
        <xs:sequence>
            <xs:element name="Id" type="Max34Text"/>
            <xs:element maxOccurs="1" minOccurs="0" name="SchmeNm" type="AccountSchemeName1Choice"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="GenericFinancialIdentification1">
        <xs:sequence>
            <xs:element name="Id" type="Max35Text"/>
            <xs:element maxOccurs="1" minOccurs="0" name="SchmeNm" type="FinancialIdentificationSchemeName1Choice"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="GenericIdentification3">
        <xs:sequence>
            <xs:element name="Id" type="Max35Text"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="GenericOrganisationIdentification1">
        <xs:sequence>
            <xs:element name="Id" type="Max35Text"/>
            <xs:element maxOccurs="1" minOccurs="0" name="SchmeNm" type="OrganisationIdentificationSchemeName1Choice"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="GenericPersonIdentification1">
        <xs:sequence>
            <xs:element name="Id" type="Max35Text"/>
            <xs:element maxOccurs="1" minOccurs="0" name="SchmeNm" type="PersonIdentificationSchemeName1Choice"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="GroupHeader42">
        <xs:sequence>
            <xs:element name="MsgId" type="Max35Text"/>
            <xs:element name="CreDtTm" type="ISODateTime"/>
            <xs:element maxOccurs="1" minOccurs="0" name="MsgRcpt" type="PartyIdentification32"/>
            <xs:element maxOccurs="1" minOccurs="0" name="MsgPgntn" type="Pagination"/>
            <xs:element maxOccurs="1" minOccurs="0" name="AddtlInf" type="Max500Text"/>
        </xs:sequence>
    </xs:complexType>
    <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="ISINIdentifier">
        <xs:restriction base="xs:string">
            <xs:pattern value="[A-Z0-9]{12,12}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="ISODate">
        <xs:restriction base="xs:date"/>
    </xs:simpleType>
    <xs:simpleType name="ISODateTime">
        <xs:restriction base="xs:dateTime"/>
    </xs:simpleType>
    <xs:complexType name="ImpliedCurrencyAmountRangeChoice">
        <xs:sequence>
            <xs:choice>
                <xs:element name="FrAmt" type="AmountRangeBoundary1"/>
                <xs:element name="ToAmt" type="AmountRangeBoundary1"/>
                <xs:element name="FrToAmt" type="FromToAmountRange"/>
                <xs:element name="EQAmt" type="ImpliedCurrencyAndAmount"/>
                <xs:element name="NEQAmt" type="ImpliedCurrencyAndAmount"/>
            </xs:choice>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="ImpliedCurrencyAndAmount">
        <xs:restriction base="xs:decimal">
            <xs:minInclusive value="0"/>
            <xs:fractionDigits value="5"/>
            <xs:totalDigits value="18"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="InterestType1Choice">
        <xs:sequence>
            <xs:choice>
                <xs:element name="Cd" type="InterestType1Code"/>
                <xs:element name="Prtry" type="Max35Text"/>
            </xs:choice>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="InterestType1Code">
        <xs:restriction base="xs:string">
            <xs:enumeration value="INDY"/>
            <xs:enumeration value="OVRN"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Max105Text">
        <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="105"/>
        </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="Max15NumericText">
        <xs:restriction base="xs:string">
            <xs:pattern value="[0-9]{1,15}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Max15PlusSignedNumericText">
        <xs:restriction base="xs:string">
            <xs:pattern value="[+]{0,1}[0-9]{1,15}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Max16Text">
        <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="16"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Max2048Text">
        <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="2048"/>
        </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="Max35Text">
        <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="35"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Max4Text">
        <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="4"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Max500Text">
        <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="500"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Max5NumericText">
        <xs:restriction base="xs:string">
            <xs:pattern value="[0-9]{1,5}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Max70Text">
        <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="70"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="MessageIdentification2">
        <xs:sequence>
            <xs:element maxOccurs="1" minOccurs="0" name="MsgNmId" type="Max35Text"/>
            <xs:element maxOccurs="1" minOccurs="0" name="MsgId" type="Max35Text"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="NameAndAddress10">
        <xs:sequence>
            <xs:element name="Nm" type="Max140Text"/>
            <xs:element name="Adr" type="PostalAddress6"/>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="NamePrefix1Code">
        <xs:restriction base="xs:string">
            <xs:enumeration value="DOCT"/>
            <xs:enumeration value="MIST"/>
            <xs:enumeration value="MISS"/>
            <xs:enumeration value="MADM"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Number">
        <xs:restriction base="xs:decimal">
            <xs:fractionDigits value="0"/>
            <xs:totalDigits value="18"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="NumberAndSumOfTransactions1">
        <xs:sequence>
            <xs:element maxOccurs="1" minOccurs="0" name="NbOfNtries" type="Max15NumericText"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Sum" type="DecimalNumber"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="NumberAndSumOfTransactions2">
        <xs:sequence>
            <xs:element maxOccurs="1" minOccurs="0" name="NbOfNtries" type="Max15NumericText"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Sum" type="DecimalNumber"/>
            <xs:element maxOccurs="1" minOccurs="0" name="TtlNetNtryAmt" type="DecimalNumber"/>
            <xs:element maxOccurs="1" minOccurs="0" name="CdtDbtInd" type="CreditDebitCode"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="OrganisationIdentification4">
        <xs:sequence>
            <xs:element maxOccurs="1" minOccurs="0" name="BICOrBEI" type="AnyBICIdentifier"/>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="Othr" type="GenericOrganisationIdentification1"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="OrganisationIdentificationSchemeName1Choice">
        <xs:sequence>
            <xs:choice>
                <xs:element name="Cd" type="ExternalOrganisationIdentification1Code"/>
                <xs:element name="Prtry" type="Max35Text"/>
            </xs:choice>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="Pagination">
        <xs:sequence>
            <xs:element name="PgNb" type="Max5NumericText"/>
            <xs:element name="LastPgInd" type="YesNoIndicator"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="Party6Choice">
        <xs:sequence>
            <xs:choice>
                <xs:element name="OrgId" type="OrganisationIdentification4"/>
                <xs:element name="PrvtId" type="PersonIdentification5"/>
            </xs:choice>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="PartyIdentification32">
        <xs:sequence>
            <xs:element maxOccurs="1" minOccurs="0" name="Nm" type="Max140Text"/>
            <xs:element maxOccurs="1" minOccurs="0" name="PstlAdr" type="PostalAddress6"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Id" type="Party6Choice"/>
            <xs:element maxOccurs="1" minOccurs="0" name="CtryOfRes" type="CountryCode"/>
            <xs:element maxOccurs="1" minOccurs="0" name="CtctDtls" type="ContactDetails2"/>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="PercentageRate">
        <xs:restriction base="xs:decimal">
            <xs:fractionDigits value="10"/>
            <xs:totalDigits value="11"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="PersonIdentification5">
        <xs:sequence>
            <xs:element maxOccurs="1" minOccurs="0" name="DtAndPlcOfBirth" type="DateAndPlaceOfBirth"/>
            <xs:element maxOccurs="unbounded" minOccurs="0" name="Othr" type="GenericPersonIdentification1"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="PersonIdentificationSchemeName1Choice">
        <xs:sequence>
            <xs:choice>
                <xs:element name="Cd" type="ExternalPersonIdentification1Code"/>
                <xs:element name="Prtry" type="Max35Text"/>
            </xs:choice>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="PhoneNumber">
        <xs:restriction base="xs:string">
            <xs:pattern value="\+[0-9]{1,3}-[0-9()+\-]{1,30}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="PostalAddress6">
        <xs:sequence>
            <xs:element maxOccurs="1" minOccurs="0" name="AdrTp" type="AddressType2Code"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Dept" type="Max70Text"/>
            <xs:element maxOccurs="1" minOccurs="0" name="SubDept" type="Max70Text"/>
            <xs:element maxOccurs="1" minOccurs="0" name="StrtNm" type="Max70Text"/>
            <xs:element maxOccurs="1" minOccurs="0" name="BldgNb" type="Max16Text"/>
            <xs:element maxOccurs="1" minOccurs="0" name="PstCd" type="Max16Text"/>
            <xs:element maxOccurs="1" minOccurs="0" name="TwnNm" type="Max35Text"/>
            <xs:element maxOccurs="1" minOccurs="0" name="CtrySubDvsn" type="Max35Text"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Ctry" type="CountryCode"/>
            <xs:element maxOccurs="7" minOccurs="0" name="AdrLine" type="Max70Text"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ProprietaryAgent2">
        <xs:sequence>
            <xs:element name="Tp" type="Max35Text"/>
            <xs:element name="Agt" type="BranchAndFinancialInstitutionIdentification4"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ProprietaryBankTransactionCodeStructure1">
        <xs:sequence>
            <xs:element name="Cd" type="Max35Text"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Issr" type="Max35Text"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ProprietaryDate2">
        <xs:sequence>
            <xs:element name="Tp" type="Max35Text"/>
            <xs:element name="Dt" type="DateAndDateTimeChoice"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ProprietaryParty2">
        <xs:sequence>
            <xs:element name="Tp" type="Max35Text"/>
            <xs:element name="Pty" type="PartyIdentification32"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ProprietaryPrice2">
        <xs:sequence>
            <xs:element name="Tp" type="Max35Text"/>
            <xs:element name="Pric" type="ActiveOrHistoricCurrencyAndAmount"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ProprietaryQuantity1">
        <xs:sequence>
            <xs:element name="Tp" type="Max35Text"/>
            <xs:element name="Qty" type="Max35Text"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ProprietaryReference1">
        <xs:sequence>
            <xs:element name="Tp" type="Max35Text"/>
            <xs:element name="Ref" type="Max35Text"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="Purpose2Choice">
        <xs:sequence>
            <xs:choice>
                <xs:element name="Cd" type="ExternalPurpose1Code"/>
                <xs:element name="Prtry" type="Max35Text"/>
            </xs:choice>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="Rate3">
        <xs:sequence>
            <xs:element name="Tp" type="RateType4Choice"/>
            <xs:element maxOccurs="1" minOccurs="0" name="VldtyRg" type="CurrencyAndAmountRange2"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="RateType4Choice">
        <xs:sequence>
            <xs:choice>
                <xs:element name="Pctg" type="PercentageRate"/>
                <xs:element name="Othr" type="Max35Text"/>
            </xs:choice>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ReferredDocumentInformation3">
        <xs:sequence>
            <xs:element maxOccurs="1" minOccurs="0" name="Tp" type="ReferredDocumentType2"/>
            <xs:element maxOccurs="1" minOccurs="0" name="Nb" type="Max35Text"/>
            <xs:element maxOccurs="1" minOccurs="0" name="RltdDt" type="ISODate"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ReferredDocumentType1Choice">
        <xs:sequence>
            <xs:choice>
                <xs:element name="Cd" type="DocumentType5Code"/>
                <xs:element name="Prtry" type="Max35Text"/>
            </xs:choice>
Post Reply