2017-10-20 8 views
0

의 불완전한 선언이 발생했습니다. 자세한 정보로 다시 시도합니다. 이것은 내 XSLT 파일입니다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> 

:

내 입력 파일입니다

<?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"> 

두 결과의 유일한 차이점은 나머지 입력 파일을 출력 파일로 올바르게 전송하는 데 사용되는 "네임 스페이스"입니다.

xslt-file에서 "namespace"(자리 표시 자)의 값을 예상 "xmlns"로 변경하면 생성 된 전체 파일이 손상됩니다. 다른 수준에 태그 "의 xmlns ="는 ""이 :(안 어디에 배치

I만을 대상/출력 파일에 다음과 같은 스키마 선언이 필요합니다

<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 기독교

+0

"XML 선언"은''같은 첫 번째 요소 앞에있는 구성입니다. 실제로 XML 선언이 아닌 네임 스페이스 선언에 문제가있는 것 같습니다. –

+0

그래서 무엇이 문제이고, 주제와 텍스트가 XML 선언 (예 :')과 관련하여 말하면, 마지막 문장은 대상'xmlns'을 변경하는 것에 대해 이야기합니다. –

+0

"말씨"에 대해 약간 혼란스럽게 생각해서 미안합니다 :) –

답변

0

이동합니다에 xmlns="urn:iso:std:iso:20022:tech:xsd:sdd:pacs.003.001.02"엘리먼트는 피하는 것이 좋습니다. xmlns="" 마지막 두 개의 템플릿으로 생성 한 엘리먼트를 얻는다고 가정합니다.