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