1
我有要求在TXLifeRequest
下增加一个额外部分,以便从下面的xml中总结付款金额。xslt根据元素组合总结
<?xml version="1.0" encoding="utf-8"?>
<TXLife xmlns="http://ACORD.org/Standards/Life/2">
<TXLifeRequest>
<FundCode>LTRT00</FundCode>
<AccountDescription>CWA xxx</AccountDescription>
<CurrencyTypeCode>840</CurrencyTypeCode>
<TransExeDate>2013-04-20</TransExeDate>
<AccountNumber>34142</AccountNumber>
<PaymentAmt>300.000000000</PaymentAmt>
<ReversalInd>0</ReversalInd>
</TXLifeRequest>
<TXLifeRequest>
<FundCode>LTRW00</FundCode>
<AccountDescription>CWA xxx</AccountDescription>
<CurrencyTypeCode>840</CurrencyTypeCode>
<TransExeDate>2013-04-20</TransExeDate>
<AccountNumber>34142</AccountNumber>
<PaymentAmt>300.000000000</PaymentAmt>
<ReversalInd>0</ReversalInd>
</TXLifeRequest>
<TXLifeRequest>
<FundCode>LTRW00</FundCode>
<AccountDescription>CWA xxx</AccountDescription>
<CurrencyTypeCode>840</CurrencyTypeCode>
<TransExeDate>2013-04-20</TransExeDate>
<AccountNumber>34142</AccountNumber>
<PaymentAmt>300.000000000</PaymentAmt>
<ReversalInd>0</ReversalInd>
</TXLifeRequest>
<TXLifeRequest>
<FundCode>LUL500</FundCode>
<AccountDescription>CWA xxx</AccountDescription>
<CurrencyTypeCode>840</CurrencyTypeCode>
<TransExeDate>2013-04-20</TransExeDate>
<AccountNumber>34142</AccountNumber>
<PaymentAmt>800.000000000</PaymentAmt>
<ReversalInd>1</ReversalInd>
</TXLifeRequest>
</TXLife>
总结PaymentAmt的标准是寻找组合TransExeDate , AccountNumber and ReversalInd
。所以,基于这些标准时,我运用我下面的XSLT因此应用上面的XSLT我会总结TXLifeRequest
XML看到<TotalAmount>600</TotalAmount>
后PaymentAmt
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0" xmlns:ns="http://ACORD.org/Standards/Life/2">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:key name="detKey7s" match="//ns:TXLifeRequest"
use="concat(generate-id(..), ns:TransExeDate, '+', ns:FundCode, '+', ns:ReversalInd)"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/ns:TXLife">
<xsl:element name="TXLife" namespace="http://ACORD.org/Standards/Life/2">
<xsl:for-each select="ns:TXLifeRequest[generate-id() = generate-id(key('detKey7s',
concat(generate-id(..), ns:TransExeDate, '+', ns:FundCode, '+', ns:ReversalInd)
)
)
]
">
<xsl:copy>
<xsl:variable name="vDataGroup" select=
"key('detKey7s', concat(generate-id(..),ns:TransExeDate, '+', ns:FundCode, '+', ns:ReversalInd))"/>
<xsl:apply-templates select="./*"></xsl:apply-templates>
<xsl:element name="TotalAmount" namespace="http://ACORD.org/Standards/Life/2">
<xsl:value-of select="sum($vDataGroup/ns:PaymentAmt)"/>
</xsl:element>
</xsl:copy>
</xsl:for-each>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
。
<TXLife xmlns="http://ACORD.org/Standards/Life/2">
<TXLifeRequest>
<FundCode>LTRT00</FundCode>
<AccountDescription>CWA – NB+U</AccountDescription>
<CurrencyTypeCode>840</CurrencyTypeCode>
<TransExeDate>2013-04-20</TransExeDate>
<AccountNumber>34142</AccountNumber>
<PaymentAmt>300.000000000</PaymentAmt>
<ReversalInd>0</ReversalInd>
<TotalAmount>300</TotalAmount>
</TXLifeRequest>
<TXLifeRequest>
<FundCode>LTRW00</FundCode>
<AccountDescription>CWA – NB+U</AccountDescription>
<CurrencyTypeCode>840</CurrencyTypeCode>
<TransExeDate>2013-04-20</TransExeDate>
<AccountNumber>34142</AccountNumber>
<PaymentAmt>300.000000000</PaymentAmt>
<ReversalInd>0</ReversalInd>
<TotalAmount>600</TotalAmount>
</TXLifeRequest>
<TXLifeRequest>
<FundCode>LUL500</FundCode>
<AccountDescription>CWA – NB+U</AccountDescription>
<CurrencyTypeCode>840</CurrencyTypeCode>
<TransExeDate>2013-04-20</TransExeDate>
<AccountNumber>34142</AccountNumber>
<PaymentAmt>800.000000000</PaymentAmt>
<ReversalInd>1</ReversalInd>
<TotalAmount>800</TotalAmount>
</TXLifeRequest>
</TXLife>
现在的问题是如何在总结部分下添加额外的部分?所以最后xml应该看起来如下所述
<TXLifeRequest>
<FundCode>LTRT00</FundCode>
<AccountDescription>CWA – NB+U</AccountDescription>
<CurrencyTypeCode>840</CurrencyTypeCode>
<TransExeDate>2013-04-20</TransExeDate>
<AccountNumber>34142</AccountNumber>
<PaymentAmt>300.000000000</PaymentAmt>
<ReversalInd>0</ReversalInd>
<TotalAmount>300</TotalAmount>
</TXLifeRequest>
<TXLifeRequest>
<FundCode>LTRW00</FundCode>
<AccountDescription>CWA – NB+U</AccountDescription>
<CurrencyTypeCode>840</CurrencyTypeCode>
<TransExeDate>2013-04-20</TransExeDate>
<AccountNumber>34142</AccountNumber>
<PaymentAmt>300.000000000</PaymentAmt>
<ReversalInd>0</ReversalInd>
<TotalAmount>600</TotalAmount>
</TXLifeRequest>
<TXLifeRequest>
<SummedUP>LTRW00</SummedUP>
</TXLifeRequest>
<TXLifeRequest>
<FundCode>LUL500</FundCode>
<AccountDescription>CWA – NB+U</AccountDescription>
<CurrencyTypeCode>840</CurrencyTypeCode>
<TransExeDate>2013-04-20</TransExeDate>
<AccountNumber>34142</AccountNumber>
<PaymentAmt>800.000000000</PaymentAmt>
<ReversalInd>1</ReversalInd>
<TotalAmount>800</TotalAmount>
</TXLifeRequest>
我感到惊讶的是在上面提到的总结部分之后添加一个部分。请让我知道我如何继续。有任何想法吗 ??
感谢, 马杜CM