Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Change Schema of XML

MarwimMar 5 2025 — edited Mar 5 2025

In another post I asked about transforming an XML and it worked, but I learned that my example was too simple, because the solution doesn't work with schema-based XML.

https://forums.oracle.com/ords/apexds/post/update-xmltype-in-pl-sql-3083

Therefore I want to formulate my question more openly:

I have a XML based on schema camt.054.001.02 and need to update it to camt.054.001.08 (schema for SEPA-format for bank statements)

My XML (this is part of a test file from a publicly available source):

<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.054.001.02" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:camt.054.001.02 camt.054.001.02.xsd">
<BkToCstmrDbtCdtNtfctn>
   <GrpHdr>
     <MsgId>IP218669920000000235689225625210625</MsgId>
     <CreDtTm>2022-04-25T16:57:14.3+01:00</CreDtTm>
     <MsgRcpt>
       <Id>
         <OrgId>
           <Othr>
             <Id>21866992</Id>
           </Othr>
         </OrgId>
       </Id>
     </MsgRcpt>
   </GrpHdr>
   <Ntfctn>
     <Id>0000000235689+2022+04+25</Id>
     <NtfctnPgntn>
       <PgNb>1</PgNb>
       <LastPgInd>true</LastPgInd>
     </NtfctnPgntn>
     <CreDtTm>2022-04-25T16:57:14.3+01:00</CreDtTm>
     <FrToDt>
       <FrDtTm>2022-04-25T00:00:00.0+01:00</FrDtTm>
       <ToDtTm>2022-04-25T23:59:59.9+01:00</ToDtTm>
     </FrToDt>
     <Acct>
       <Id>
         <IBAN>DE37700500000000235689</IBAN>
       </Id>
       <Ccy>EUR</Ccy>
       <Svcr>
         <FinInstnId>
           <BIC>BYLADEMMXXX</BIC>
           <Othr>
             <Id>DE129273371</Id>
             <Issr>UmsStId</Issr>
           </Othr>
         </FinInstnId>
       </Svcr>
     </Acct>
     <Ntry>
       <Amt Ccy="EUR">11649.58</Amt>
       <CdtDbtInd>CRDT</CdtDbtInd>
       <Sts>BOOK</Sts>
       <BookgDt>
         <Dt>2022-04-25</Dt>
       </BookgDt>
       <ValDt>
         <Dt>2022-04-25</Dt>
       </ValDt>
       <AcctSvcrRef>1708</AcctSvcrRef>
       <BkTxCd>
         <Domn>
           <Cd>PMNT</Cd>
           <Fmly>
             <Cd>RRCT</Cd>
             <SubFmlyCd>ESCT</SubFmlyCd>
           </Fmly>
         </Domn>
         <Prtry>
           <Cd>NTRF+168+1708</Cd>
         </Prtry>
       </BkTxCd>
       <NtryDtls>
         <Btch>
           <NbOfTxs>1</NbOfTxs>
           <TtlAmt Ccy="EUR">100.00</TtlAmt>
           <CdtDbtInd>CRDT</CdtDbtInd>
         </Btch>
         <TxDtls>
           <Refs>
             <EndToEndId>NOTPROVIDED</EndToEndId>
             <TxId>ABCDEFG202204251251055800118000000</TxId>
           </Refs>
           <Amt Ccy="EUR">100.00</Amt>
           <CdtDbtInd>CRDT</CdtDbtInd>
           <BkTxCd>
             <Domn>
               <Cd>PMNT</Cd>
               <Fmly>
                 <Cd>RRCT</Cd>
                 <SubFmlyCd>ESCT</SubFmlyCd>
               </Fmly>
             </Domn>
             <Prtry>
               <Cd>NTRF+168+1708</Cd>
               <Issr>DK</Issr>
             </Prtry>
           </BkTxCd>
           <RltdPties>
             <Dbtr>
               <Nm>Test Debitor</Nm>
             </Dbtr>
             <DbtrAcct>
               <Id>
                 <IBAN>DE24700202700000987654</IBAN>
               </Id>
             </DbtrAcct>
           </RltdPties>
           <RltdAgts>
             <DbtrAgt>
               <FinInstnId>
                 <BIC>HYVEDEMMXXX</BIC>
               </FinInstnId>
             </DbtrAgt>
           </RltdAgts>
           <RmtInf>
             <Ustrd>Test camt.054 ISO-2019 Instant Payment</Ustrd>
           </RmtInf>
           <RltdDts>
             <AccptncDtTm>2022-04-25T10:00:38.0+01:00</AccptncDtTm>
           </RltdDts>
         </TxDtls>
       </NtryDtls>
     </Ntry>
   </Ntfctn>
 </BkToCstmrDbtCdtNtfctn>
</Document>

Some of the changes I need:

Change schema camt.054.001.02 → camt.054.001.08

Change node <BIC> → <BICFI>

Add node <Dbtr><Nm>Test Debitor</Nm></Dbtr> → <Dbtr><Pty><Nm>Test Debitor</Nm></Pty></Dbtr>

SQL*Plus: Release 19.0.0.0.0 - Production on Mo Mrz 3 10:54:19 2025
Version 19.3.0.0.0

Comments
Post Details
Added on Mar 5 2025
2 comments
178 views