嗨,我们要求根据逻辑组参考对成熟日期进行分组。
<xsl:for-each select="OutboundPayment[count(. | key('contacts-by-LogicalGroupReference', PaymentNumber/LogicalGroupReference/)[1]) = 1]">
我无法理解每个陈述的上述内容。如果我尝试将每个成熟日期与每个日期相结合。我的xml out put进入null
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Header: IBY_SEPA_STR_REM.xsl 120.7.12020000.3 2012/10/23 10:03:59 asarada ship $ -->
<!-- dbdrv: exec java oracle/apps/xdo/oa/util XDOLoader.class java &phase=dat checkfile:~PROD:patch/115/publisher/templates:IBY_SEPA_STR_REM.xsl UPLOAD -DB_USERNAME &un_apps -DB_PASSWORD &pw_apps -JDBC_CONNECTION &jdbc_db_addr -LOB_TYPE TEMPLATE -APPS_SHORT_NAME IBY -LOB_CODE IBY_SEPA_CREDIT_INIT_TEMPLATE_STR_REM -LANGUAGE en -XDO_FILE_TYPE XSL-XML -FILE_NAME &fullpath:~PROD:patch/115/publisher/templates:IBY_SEPA_STR_REM.xsl -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="no"/>
<xsl:output method="xml"/>
<xsl:key name="contacts-by-LogicalGroupReference" match="OutboundPayment" use="PaymentNumber/LogicalGroupReference" />
<xsl:template match="OutboundPaymentInstruction">
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xsl:variable name="instrid" select="PaymentInstructionInfo/InstructionReferenceNumber"/>
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>
<xsl:value-of select="$instrid"/>
</MsgId>
<CreDtTm>
<xsl:value-of select="PaymentInstructionInfo/InstructionCreationDate"/>
</CreDtTm>
<NbOfTxs>
<xsl:value-of select="InstructionTotals/PaymentCount"/>
</NbOfTxs>
<CtrlSum>
<xsl:value-of select="format-number(InstructionTotals/TotalPaymentAmount/Value,'0.00')"/>
</CtrlSum >
<InitgPty>
<Nm>
<xsl:value-of select="InstructionGrouping/Payer/Name"/>
</Nm>
</InitgPty>
</GrpHdr>
<xsl:for-each select="OutboundPayment[count(. | key('contacts-by-LogicalGroupReference', PaymentNumber/LogicalGroupReference/)[1]) = 1]">
<xsl:sort select="PaymentNumber/LogicalGroupReference" />
<PmtInf>
<PmtInfId>
<xsl:value-of select="PaymentNumber/LogicalGroupReference"/>
</PmtInfId>
<PmtMtd>TRF</PmtMtd>
<NbOfTxs>
<xsl:value-of select="count(key('contacts-by-LogicalGroupReference', PaymentNumber/LogicalGroupReference))"/>
</NbOfTxs>
<CtrlSum>
<xsl:value-of select="format-number(sum(key('contacts-by-LogicalGroupReference', PaymentNumber/LogicalGroupReference)/PaymentAmount/Value),'0.00')"/>
</CtrlSum>
<PmtTpInf>
<InstrPrty>NORM</InstrPrty>
<SvcLvl>
<Cd>SEPA</Cd>
</SvcLvl>
<LclInstrm>
<Cd>CONF</Cd>
</LclInstrm>
<CtgyPurp><Cd>SUPP</Cd></CtgyPurp>
</PmtTpInf>
<ReqdExctnDt>
<xsl:value-of select="MaturityDate"/> <!-- PaymentDate, PaymentDueDate, MaturityDate-->
</ReqdExctnDt>
<Dbtr>
<Nm>
<xsl:value-of select="Payer/Name"/>
</Nm>
<PstlAdr>
<StrtNm>
<xsl:value-of select="Payer/Address/AddressLine1"/>
</StrtNm>
<PstCd>
<xsl:value-of select="Payer/Address/PostalCode"/>
</PstCd>
<TwnNm>
<xsl:value-of select="Payer/Address/City"/>
</TwnNm>
<xsl:if test="not(Payer/Address/State='')">
<CtrySubDvsn>
<xsl:value-of select="Payer/Address/State"/>
</CtrySubDvsn>
</xsl:if>
<Ctry>
<xsl:value-of select="Payer/Address/Country"/>
</Ctry>
</PstlAdr>
<Id>
<OrgId>
<xsl:choose>
<xsl:when test="not(Payer/TaxRegistrationNumber='')">
<Othr><Id><xsl:value-of select="Payer/TaxRegistrationNumber"/></Id></Othr>
</xsl:when>
<xsl:otherwise>
<Othr><Id><xsl:value-of select="Payer/LegalEntityRegistrationNumber"/></Id></Othr>
</xsl:otherwise>
</xsl:choose>
</OrgId>
</Id>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>
<xsl:value-of select="BankAccount/IBANNumber"/>
</IBAN>
</Id>
<Ccy>
<xsl:value-of select="BankAccount/BankAccountCurrency/Code"/>
</Ccy>
</DbtrAcct>
<DbtrAgt>
<FinInstnId>
<BIC>
<xsl:value-of select="BankAccount/SwiftCode"/>
</BIC>
<PstlAdr>
<Ctry>ES</Ctry>
</PstlAdr>
</FinInstnId>
</DbtrAgt>
<xsl:for-each select="key('contacts-by-LogicalGroupReference', PaymentNumber/LogicalGroupReference)">
<CdtTrfTxInf>
<xsl:variable name="paymentdetails" select="PaymentDetails"/>
<PmtId>
<InstrId>
<xsl:value-of select="PaymentNumber/PaymentReferenceNumber"/>
</InstrId>
<EndToEndId>
<xsl:value-of select="PaymentNumber/PaymentReferenceNumber"/>
</EndToEndId>
</PmtId>
<Amt>
<InstdAmt>
<xsl:attribute name="Ccy">
<xsl:value-of select="PaymentAmount/Currency/Code"/>
</xsl:attribute>
<xsl:value-of select="format-number(PaymentAmount/Value,'0.00')"/>
</InstdAmt>
</Amt>
<CdtrAgt>
<FinInstnId>
<BIC>
<xsl:value-of select="PayeeBankAccount/SwiftCode"/>
</BIC>
<PstlAdr>
<Ctry>ES</Ctry>
</PstlAdr>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>
<xsl:value-of select="Payee/Name"/>
</Nm>
<PstlAdr>
<StrtNm>
<xsl:value-of select="Payee/Address/AddressLine1"/>
</StrtNm>
<PstCd>
<xsl:value-of select="Payee/Address/PostalCode"/>
</PstCd>
<TwnNm>
<xsl:value-of select="Payee/Address/City"/>
</TwnNm>
<xsl:if test="not(Payee/Address/State='')">
<CtrySubDvsn>
<xsl:value-of select="Payee/Address/State"/>
</CtrySubDvsn>
</xsl:if>
<Ctry>
<xsl:value-of select="Payee/Address/Country"/>
</Ctry>
</PstlAdr>
<Id>
<OrgId>
<xsl:if test="not(Payee/TaxRegistrationNumber='')">
<Othr><Id><xsl:value-of select="Payee/TaxRegistrationNumber"/></Id></Othr>
</xsl:if>
<xsl:if test="(Payee/TaxRegistrationNumber='')">
<xsl:if test="not(Payee/LegalEntityRegistrationNumber='')">
<Othr><Id><xsl:value-of select="Payee/LegalEntityRegistrationNumber"/></Id></Othr>
</xsl:if>
<xsl:if test="(Payee/LegalEntityRegistrationNumber='')">
<xsl:if test="not(Payee/SupplierNumber='')">
<Othr><Id><xsl:value-of select="Payee/SupplierNumber"/></Id></Othr>
</xsl:if>
<xsl:if test="(Payee/SupplierNumber='')">
<xsl:if test="not(Payee/PartyNumber='')">
<Othr><Id><xsl:value-of select="Payee/SupplierNumber"/></Id></Othr>
</xsl:if>
<xsl:if test="(Payee/PartyNumber='')">
<Othr><Id><xsl:value-of select="Payee/SupplierNumber"/></Id></Othr>
</xsl:if>
</xsl:if>
</xsl:if>
</xsl:if>
</OrgId>
</Id>
<xsl:if test="not(Payee/ContactInfo/ContactLocators/EmailAddress='')">
<CtctDtls>
<EmailAdr><xsl:value-of select="Payee/ContactInfo/ContactLocators/EmailAddress"/></EmailAdr>
</CtctDtls>
</xsl:if>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>
<xsl:value-of select="PayeeBankAccount/IBANNumber"/>
</IBAN>
</Id>
</CdtrAcct>
<RmtInf>
<xsl:variable name="IssurName" select="Payee/Name"/>
<xsl:for-each select="DocumentPayable">
<Strd>
<RfrdDocInf>
<Tp>
<CdOrPrtry>
<Cd>
<xsl:choose>
<xsl:when test="TotalDocumentAmount/Value >= 0">
<xsl:text>CINV</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>CREN</xsl:text>
</xsl:otherwise>
</xsl:choose>
</Cd>
</CdOrPrtry>
</Tp>
<Nb>
<xsl:value-of select="DocumentNumber/ReferenceNumber"/>
</Nb>
<RltdDt>
<xsl:value-of select="DocumentDate"/>
</RltdDt>
</RfrdDocInf>
<RfrdDocAmt>
<xsl:choose>
<xsl:when test="TotalDocumentAmount/Value >= 0">
<DuePyblAmt>
<xsl:attribute name="Ccy">
<xsl:value-of select="TotalDocumentAmount/Currency/Code"/>
</xsl:attribute>
<xsl:value-of select="format-number(TotalDocumentAmount/Value,'0.00')"/>
</DuePyblAmt>
</xsl:when>
<xsl:otherwise>
<CdtNoteAmt>
<xsl:attribute name="Ccy">
<xsl:value-of select="TotalDocumentAmount/Currency/Code"/>
</xsl:attribute>
<xsl:value-of select="format-number((-1 * TotalDocumentAmount/Value),'0.00')"/>
</CdtNoteAmt>
</xsl:otherwise>
</xsl:choose>
</RfrdDocAmt>
</Strd>
</xsl:for-each>
</RmtInf>
</CdtTrfTxInf>
</xsl:for-each>
</PmtInf>
</xsl:for-each>
</CstmrCdtTrfInitn>
</Document>
</xsl:template>
</xsl:stylesheet>