私のXSLT変換では別の問題について助けが必要です。XSLT変換 - 反復構造の結果として、値の集計になる
入力ファイルに異なる値を持つ繰り返し構造があります。
<Dbtr>
<Nm>TEST BANK GMBH</Nm>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>DE07702203005401252462</IBAN>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId>
<BIC>TESTBDEM0XXX</BIC>
</FinInstnId>
</DbtrAgt>
<CdtrAgt>
<FinInstnId>
<BIC>HYVEDEMM475</BIC>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>Name 1</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>DE92660202860002099551</IBAN>
</Id>
</CdtrAcct>
<Dbtr>
<Nm>Name 2</Nm>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>DE88702203005002522901</IBAN>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId>
<BIC>TESTBDEM0XXX</BIC>
</FinInstnId>
</DbtrAgt>
<CdtrAgt>
<FinInstnId>
<BIC>HYVEDEMMXXX</BIC>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>FIRMA X</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>DE39700202704320253727</IBAN>
</Id>
</CdtrAcct>
これはXSLT-ファイルの一部です:
<OrgnlTxRef>
<xsl:if test="position()=1">
<IntrBkSttlmAmt Ccy="EUR">
<xsl:value-of select="$_find_amount"/>
</IntrBkSttlmAmt>
<IntrBkSttlmDt>
<xsl:for-each select="//myTxNS:TxInfAndSts/myTxNS:OrgnlTxRef/myTxNS:IntrBkSttlmDt[not(.=preceding::*)]">
<xsl:value-of select="."/>
</xsl:for-each>
</IntrBkSttlmDt>
<DbtrAgt>
<FinInstnId>
<BIC>TESTBDEM0XXX</BIC>
</FinInstnId>
</DbtrAgt>
<CdtrAgt>
<FinInstnId>
<BIC>
<xsl:for-each select="//myTxNS:TxInfAndSts/myTxNS:OrgnlTxRef/myTxNS:CdtrAgt/myTxNS:FinInstnId/myTxNS:BIC">
<xsl:value-of select="."/>
</xsl:for-each>
</BIC>
</FinInstnId>
</CdtrAgt>
</xsl:if>
<xsl:if test="position()=2">
<IntrBkSttlmAmt Ccy="EUR">
<xsl:value-of select="$_find_amount2"/>
</IntrBkSttlmAmt>
<IntrBkSttlmDt>
<xsl:for-each select="//myTxNS:TxInfAndSts/myTxNS:OrgnlTxRef/myTxNS:IntrBkSttlmDt[not(.=preceding::*)]">
<xsl:value-of select="."/>
</xsl:for-each>
</IntrBkSttlmDt>
<DbtrAgt>
<FinInstnId>
<BIC>TESTBDEM0XXX</BIC>
</FinInstnId>
</DbtrAgt>
<CdtrAgt>
<FinInstnId>
<BIC>
<xsl:for-each select="//myTxNS:TxInfAndSts/myTxNS:OrgnlTxRef/myTxNS:CdtrAgt/myTxNS:FinInstnId/myTxNS:BIC">
<xsl:value-of select="."/>
</xsl:for-each>
</BIC>
</FinInstnId>
</CdtrAgt>
</xsl:if>
</OrgnlTxRef>
私の実際の結果は以下のとおりであった:
<OrgnlTxRef>
<IntrBkSttlmAmt Ccy="EUR">8.28</IntrBkSttlmAmt>
<IntrBkSttlmDt>2017-10-26</IntrBkSttlmDt>
<DbtrAgt>
<FinInstnId>
<BIC>TESTBDEM0XXX</BIC>
</FinInstnId>
</DbtrAgt>
<CdtrAgt>
<FinInstnId>
<BIC>HYVEDEMM475HYVEDEMMXXX</BIC>
</FinInstnId>
</CdtrAgt>
<DbtrAgt>
<FinInstnId>
<BIC>TESTBDEM0XXX</BIC>
</FinInstnId>
</DbtrAgt>
<CdtrAgt>
<FinInstnId>
<BIC>HYVEDEMM475HYVEDEMMXXX</BIC>
</FinInstnId>
</CdtrAgt>
</OrgnlTxRef>
</TxInfAndSts>
</nsC:FIToFIPmtStsRptSCL>
</nsC:BBkRSFBlkDirDeb>
私はこれを回避するために何か必要があります。
<FinInstnId>
<BIC>HYVEDEMM475HYVEDEMMXXX</BIC>
</FinInstnId>
を次のような明確な結果が得られます。
...
<FinInstnId>
<BIC>HYVEDEMMXXX</BIC>
</FinInstnId>
...
...
<FinInstnId>
<BIC>HYVEDEMM475</BIC>
</FinInstnId>
...
私はこのページを検索し、その問題を解決するためのさまざまな「アイデア」を試してみます。しかし、私は常に出力ファイルの結合された値と同じ結果になります。
問題の特定の問題を示すために最小限のサンプルを投稿することを考慮すると、コードまたはアプローチを修正する必要がある場所を示すためにあまりにも多くのデータがあります。 –
ありがとうございます。私はそれを関連するコンテンツにスナップします。 –