0
在我第一次發佈不完整信息後,我再次嘗試使用更詳細的信息。XML轉換 - 輸出文件中的不完整聲明
這是我的輸入文件:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns1:BBkDNFBlkDirDeb xmlns:ns5="urn:iso:std:iso:20022:tech:xsd:sdd:pacs.003.001.02" xmlns:ns1="urn:BBkDNF:xsd:BBkDNFBlkDirDeb">
<ns1:SndgInst>MARKDEF0</ns1:SndgInst>
<ns1:RcvgInst>HYVEDEMXXX</ns1:RcvgInst>
<ns1:SrvcId>COR</ns1:SrvcId>
<ns1:TstCode>T</ns1:TstCode>
<ns1:FType>DNF</ns1:FType>
<ns1:FileRef>20171020COR13143</ns1:FileRef>
<ns1:FileBusDt>2017-10-20</ns1:FileBusDt>
<ns1:RoutingInd>ALL</ns1:RoutingInd>
<ns1:FileCycleNo>05</ns1:FileCycleNo>
<ns1:NumDDBlk>00000001</ns1:NumDDBlk>
<ns1:NumPCRBlk>00000000</ns1:NumPCRBlk>
<ns1:NumREJBlk>00000000</ns1:NumREJBlk>
<ns1:FIToFICstmrDrctDbt>
<ns5:GrpHdr>
<ns5:MsgId>CHASDEFXXXX2017-10-20COR13140000003</ns5:MsgId>
<ns5:CreDtTm>2017-10-20T13:14:32.020</ns5:CreDtTm>
<ns5:NbOfTxs>1</ns5:NbOfTxs>
<ns5:TtlIntrBkSttlmAmt Ccy="EUR">14.33</ns5:TtlIntrBkSttlmAmt>
<ns5:IntrBkSttlmDt>2017-10-20</ns5:IntrBkSttlmDt>
<ns5:SttlmInf>
<ns5:SttlmMtd>CLRG</ns5:SttlmMtd>
<ns5:ClrSys>
<ns5:Prtry>SCL</ns5:Prtry>
</ns5:ClrSys>
</ns5:SttlmInf>
<ns5:InstdAgt>
<ns5:FinInstnId>
<ns5:BIC>HYVEDEMXXX</ns5:BIC>
</ns5:FinInstnId>
</ns5:InstdAgt>
</ns5:GrpHdr>
<ns5:DrctDbtTxInf>
<ns5:PmtId>
<ns5:InstrId>2017-10-20-COR1314300000</ns5:InstrId>
<ns5:EndToEndId>NotProvided</ns5:EndToEndId>
<ns5:TxId>Test123</ns5:TxId>
</ns5:PmtId>
<ns5:PmtTpInf>
<ns5:SvcLvl>
<ns5:Cd>SEPA</ns5:Cd>
</ns5:SvcLvl>
<ns5:LclInstrm>
<ns5:Cd>CORE</ns5:Cd>
</ns5:LclInstrm>
<ns5:SeqTp>RCUR</ns5:SeqTp>
</ns5:PmtTpInf>
<ns5:IntrBkSttlmAmt Ccy="EUR">14.33</ns5:IntrBkSttlmAmt>
<ns5:ChrgBr>SLEV</ns5:ChrgBr>
<ns5:ReqdColltnDt>2017-10-20</ns5:ReqdColltnDt>
<ns5:DrctDbtTx>
<ns5:MndtRltdInf>
<ns5:MndtId>AL1234567894</ns5:MndtId>
<ns5:DtOfSgntr>2013-01-03</ns5:DtOfSgntr>
<ns5:AmdmntInd>true</ns5:AmdmntInd>
<ns5:AmdmntInfDtls>
<ns5:OrgnlCdtrSchmeId>
<ns5:Nm>Test</ns5:Nm>
<ns5:Id>
<ns5:PrvtId>
<ns5:Othr>
<ns5:Id>DE98ZZZ09999999999</ns5:Id>
<ns5:SchmeNm>
<ns5:Prtry>SEPA</ns5:Prtry>
</ns5:SchmeNm>
</ns5:Othr>
</ns5:PrvtId>
</ns5:Id>
</ns5:OrgnlCdtrSchmeId>
</ns5:AmdmntInfDtls>
</ns5:MndtRltdInf>
<ns5:CdtrSchmeId>
<ns5:Id>
<ns5:PrvtId>
<ns5:Othr>
<ns5:Id>DE98ZZZ09999999999</ns5:Id>
<ns5:SchmeNm>
<ns5:Prtry>SEPA</ns5:Prtry>
</ns5:SchmeNm>
</ns5:Othr>
</ns5:PrvtId>
</ns5:Id>
</ns5:CdtrSchmeId>
</ns5:DrctDbtTx>
<ns5:Cdtr>
<ns5:Nm>Test</ns5:Nm>
</ns5:Cdtr>
<ns5:CdtrAcct>
<ns5:Id>
<ns5:IBAN>DE59501108006161508350</ns5:IBAN>
</ns5:Id>
</ns5:CdtrAcct>
<ns5:CdtrAgt>
<ns5:FinInstnId>
<ns5:BIC>CHASDEFXXXX</ns5:BIC>
</ns5:FinInstnId>
</ns5:CdtrAgt>
<ns5:Dbtr>
<ns5:Nm>Test</ns5:Nm>
</ns5:Dbtr>
<ns5:DbtrAcct>
<ns5:Id>
<ns5:IBAN>DE16702203005100001146</ns5:IBAN>
</ns5:Id>
</ns5:DbtrAcct>
<ns5:DbtrAgt>
<ns5:FinInstnId>
<ns5:BIC>HYVEDEMXXX</ns5:BIC>
</ns5:FinInstnId>
</ns5:DbtrAgt>
<ns5:UltmtDbtr/>
<ns5:RmtInf>
<ns5:Ustrd>Test ABC</ns5:Ustrd>
</ns5:RmtInf>
</ns5:DrctDbtTxInf>
</ns1:FIToFICstmrDrctDbt>
</ns1:BBkDNFBlkDirDeb>
這是我的XSLT的文件:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:SCLSDD="urn:BBkDNF:xsd:BBkDNFBlkDirDeb"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:BBkDNF:xsd:BBkDNFBlkDirDeb BBkDNFBlkDirDeb.xsd"
xmlns:myTxNS="urn:iso:std:iso:20022:tech:xsd:sdd:pacs.003.001.02"
exclude-result-prefixes="myTxNS SCLSDD xsi">
<!-- Namespace myTxNS erforderlich um in der Basis-pacs.003-XML-Datei auf die einzelnen Transaktionen unterhalb von SCLSDD:FIToFIPmtRvsl zugreifen zu können -->
<xsl:output version="1.0" indent="yes" encoding="UTF-8" method="xml"/>
<xsl:param name="_find_iban" required="no"/>
<xsl:param name="_find_amount" required="no"/>
<xsl:param name="_find_iban2" required="no"/>
<xsl:param name="_find_amount2" required="no"/>
<xsl:param name="_rjct_anzahl" required="no"/>
<xsl:param name="_rjct_summe" required="no"/>
<xsl:template match="/">
<BBkUDF:BBkUDFBlkDirDeb
namespace="urn:iso:std:iso:20022:tech:xsd:sdd:pacs.003.001.02"
xmlns:BBkUDF="urn:BBkUDF:xsd:BBkUDFBlkDirDeb"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:BBkUDF:xsd:BBkUDFBlkDirDeb BBkUDFBlkDirDeb.xsd">
<BBkUDF:SndgInst>MARKDEF0</BBkUDF:SndgInst>
<!-- Sender ist immer BIC des SEPA Clearers im Test MARKDEF0 -->
<!-- <RcvgInst>
<xsl:value-of select="SCLSDD:BBkDNFBlkDirDeb/SCLSDD:SndgInst"/>
</RcvgInst> -->
<BBkUDF:RcvgInst>HYVEDEM0XXX</BBkUDF:RcvgInst>
<!-- als Empfänger kann nur die XXX Bank sein -->
<BBkUDF:SrvcId>
<xsl:value-of select="/SCLSDD:BBkDNFBlkDirDeb/SCLSDD:SrvcId"/>
</BBkUDF:SrvcId>
<!-- COR für CORE und B2B für B2B -->
<BBkUDF:TstCode>T</BBkUDF:TstCode>
<!-- T für Test -->
<BBkUDF:FType>UDF</BBkUDF:FType>
<!-- UDF für "Result of Settlement File" -->
<BBkUDF:FileRef>
<xsl:value-of select="format-dateTime(current-dateTime(),'[Y0001][M01][D01]P2[H01][m01][s01]')"/>
<!-- erzeugt eine 16stellige Filereferenz auf Basis aktuellem Datum damit es eindeutig ist und stellt eine Referenz des SEPA Clearers dar -->
</BBkUDF:FileRef>
<BBkUDF:RoutingInd>ALL</BBkUDF:RoutingInd>
<!-- ALL ist Standard für UDF -->
<BBkUDF:FileBusDt>
<xsl:value-of select="format-dateTime(current-dateTime(),'[Y0001]-[M01]-[D01]')"/>
<!-- Erstelldatum der Datei -->
</BBkUDF:FileBusDt>
<BBkUDF:FileCycleNo>05</BBkUDF:FileCycleNo>
<BBkUDF:FIToFICstmrDrctDbt>
<GrpHdr>
<MsgId>
<xsl:value-of select="/SCLSDD:BBkDNFBlkDirDeb/SCLSDD:FIToFICstmrDrctDbt/myTxNS:GrpHdr/myTxNS:MsgId"/>
</MsgId>
<CreDtTm>
<xsl:value-of select="/SCLSDD:BBkDNFBlkDirDeb/SCLSDD:FIToFICstmrDrctDbt/myTxNS:GrpHdr/myTxNS:CreDtTm"/>
</CreDtTm>
<NbOfTxs>
<xsl:value-of select="$_rjct_anzahl"/>
</NbOfTxs>
<TtlIntrBkSttlmAmt Ccy="EUR">
<xsl:value-of select="$_rjct_summe"/>
</TtlIntrBkSttlmAmt>
<IntrBkSttlmDt>
<xsl:value-of select="/SCLSDD:BBkDNFBlkDirDeb/SCLSDD:FIToFICstmrDrctDbt/myTxNS:GrpHdr/myTxNS:IntrBkSttlmDt"/>
</IntrBkSttlmDt>
<SttlmInf>
<SttlmMtd>CLRG</SttlmMtd>
<ClrSys>
<Prtry>SCL</Prtry>
</ClrSys>
</SttlmInf>
<InstdAgt>
<FinInstnId>
<BIC>HYVEDEMXXX</BIC>
</FinInstnId>
</InstdAgt>
</GrpHdr>
<xsl:variable name="all_TxInf_Nodes" select="SCLSDD:BBkDNFBlkDirDeb/SCLSDD:FIToFICstmrDrctDbt/myTxNS:DrctDbtTxInf"/>
<xsl:for-each select="$all_TxInf_Nodes">
<!-- hier muss per If-Anweisung ermittelt werden, ob die Zahlung übernommen werden soll -->
<xsl:variable name="betrag" select="myTxNS:IntrBkSttlmAmt"/>
<xsl:variable name="iban" select="myTxNS:DbtrAcct/myTxNS:Id/myTxNS:IBAN"/>
<xsl:if test="(number($betrag)=number($_find_amount) and $iban=$_find_iban)">
<xsl:variable name="betrag" select="myTxNS:IntrBkSttlmAmt"/>
<!-- ermittelt den Betrag der Zahlung -->
<DrctDbtTxInf>
<xsl:apply-templates select="myTxNS:PmtId"/>
<xsl:apply-templates select="myTxNS:PmtTpInf"/>
<IntrBkSttlmAmt Ccy="EUR">
<xsl:value-of select="myTxNS:IntrBkSttlmAmt"/>
</IntrBkSttlmAmt>
<xsl:apply-templates select="myTxNS:ChrgBr"/>
<xsl:apply-templates select="myTxNS:ReqdColltnDt"/>
<xsl:apply-templates select="myTxNS:DrctDbtTx"/>
<xsl:apply-templates select="myTxNS:Cdtr"/>
<xsl:apply-templates select="myTxNS:CdtrAcct"/>
<xsl:apply-templates select="myTxNS:CdtrAgt"/>
<xsl:apply-templates select="myTxNS:UltmtCdtr"/>
<xsl:apply-templates select="myTxNS:InstgAgt"/>
<xsl:apply-templates select="myTxNS:Dbtr"/>
<xsl:apply-templates select="myTxNS:DbtrAcct"/>
<xsl:apply-templates select="myTxNS:DbtrAgt"/>
<xsl:apply-templates select="myTxNS:UltmDbtr"/>
<xsl:apply-templates select="myTxNS:Purp"/>
<xsl:apply-templates select="myTxNS:RmtInf"/>
</DrctDbtTxInf>
</xsl:if>
</xsl:for-each>
<xsl:for-each select="$all_TxInf_Nodes">
<!-- hier muss per If-Anweisung ermittelt werden, ob die Zahlung übernommen werden soll -->
<xsl:variable name="betrag" select="myTxNS:IntrBkSttlmAmt"/>
<xsl:variable name="iban" select="myTxNS:DbtrAcct/myTxNS:Id/myTxNS:IBAN"/>
<xsl:if test="(number($betrag)=number($_find_amount2) and $iban=$_find_iban2)">
<xsl:variable name="betrag" select="myTxNS:IntrBkSttlmAmt"/>
<!-- ermittelt den Betrag der Zahlung -->
<DrctDbtTxInf>
<xsl:apply-templates select="myTxNS:PmtId"/>
<xsl:apply-templates select="myTxNS:PmtTpInf"/>
<IntrBkSttlmAmt Ccy="EUR">
<xsl:value-of select="myTxNS:IntrBkSttlmAmt"/>
</IntrBkSttlmAmt>
<xsl:apply-templates select="myTxNS:ChrgBr"/>
<xsl:apply-templates select="myTxNS:ReqdColltnDt"/>
<xsl:apply-templates select="myTxNS:DrctDbtTx"/>
<xsl:apply-templates select="myTxNS:Cdtr"/>
<xsl:apply-templates select="myTxNS:CdtrAcct"/>
<xsl:apply-templates select="myTxNS:CdtrAgt"/>
<xsl:apply-templates select="myTxNS:UltmtCdtr"/>
<xsl:apply-templates select="myTxNS:InstgAgt"/>
<xsl:apply-templates select="myTxNS:Dbtr"/>
<xsl:apply-templates select="myTxNS:DbtrAcct"/>
<xsl:apply-templates select="myTxNS:DbtrAgt"/>
<xsl:apply-templates select="myTxNS:UltmDbtr"/>
<xsl:apply-templates select="myTxNS:Purp"/>
<xsl:apply-templates select="myTxNS:RmtInf"/>
</DrctDbtTxInf>
</xsl:if>
</xsl:for-each>
</BBkUDF:FIToFICstmrDrctDbt>
</BBkUDF:BBkUDFBlkDirDeb>
</xsl:template>
<xsl:template match="myTxNS:*">
<xsl:element name="{local-name()}">
<xsl:apply-templates select="node()"/>
</xsl:element>
</xsl:template>
<xsl:template match="myTxNS:*/*">
<xsl:element name="{local-name()}">
<xsl:apply-templates select="node()"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
這是輸出文件的第一部分(其餘是正確的):
<?xml version="1.0" encoding="UTF-8"?>
<BBkUDF:BBkUDFBlkDirDeb xmlns:BBkUDF="urn:BBkUDF:xsd:BBkUDFBlkDirDeb"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
namespace="urn:iso:std:iso:20022:tech:xsd:sdd:pacs.003.001.02"
xsi:schemaLocation="urn:BBkUDF:xsd:BBkUDFBlkDirDeb BBkUDFBlkDirDeb.xsd">
而這是達成目標:
<?xml version="1.0" encoding="UTF-8"?>
<BBkUDF:BBkUDFBlkDirDeb xmlns:BBkUDF="urn:BBkUDF:xsd:BBkUDFBlkDirDeb"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="urn:iso:std:iso:20022:tech:xsd:sdd:pacs.003.001.02"
xsi:schemaLocation="urn:BBkUDF:xsd:BBkUDFBlkDirDeb BBkUDFBlkDirDeb.xsd">
正如您所看到的,兩個結果之間的唯一區別是「名稱空間」,我用它將輸入文件的其餘部分正確地傳輸到輸出文件。
如果我更改了(在xslt文件中)從「名稱空間」(佔位符)到期望的「xmlns」的值,則完整生成的文件已損壞。不同級別的標籤「的xmlns =」「」被放置在它不應該是:(
我只需要下面的模式,宣言提出的目標/輸出文件:
<BBkUDF:BBkUDFBlkDirDeb xsi:schemaLocation="urn:BBkUDF:xsd:BBkUDFBlkDirDeb BBkUDFBlkDirDeb.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:BBkUDF="urn:BBkUDF:xsd:BBkUDFBlkDirDeb" xmlns="urn:iso:std:iso:20022:tech:xsd:sdd:pacs.003.001.02">
That'一切都。
如果我寫了一遍「難」,請不要猶豫,給我一個反饋。 感謝& BR 基督教
「XML聲明」是第一個元素之前的結構,比如'<?xml version ='1.0'?>'。您似乎實際上遇到名稱空間聲明的問題,而不是XML聲明。 –
那麼問題是什麼,你的主題和文本談論他的XML聲明(例如'<?xml version =「1.0」?>'),你的最後一句話是談論改變目標'xmlns'。 –
對不起,有點混淆關於「措辭」:) –