Subject: Re: [xsl] want to display sum of every two records From: anil kumar <anar.leti@xxxxxxxxx> Date: Tue, 23 Feb 2010 18:28:32 +0530 |
Hi, Thanks for your response, with your idea i came to understand how the preceding-siblings works, your xsl code is giving requested o/p only when i have commented the line (<xsl:apply-templates select="following-sibling::mezo[1]" /> ). BUT, iam unable to replicate this logic to my actual requirment because, iam getting the value of "AA" by adding the C_FUNCTIONAL_TOTAL from source xml ( grouping with C_BILLING_TP_TAX_REG_NUM,C_TAX_REPORTING_NAME ) ex: "sum(key('group', concat(C_BILLING_TP_TAX_REG_NUM,C_TAX_REPORTING_NAME))/C_FUNCTIONAL_TOTAL)" /> Now i need to show the sum of 24 AA (to simplify i have asked as 2 "AA" records in my earlier mail ) records and show that value under the tag "BB" How can we add these AA values ??, as these are framed by sum of grouped records from the source xml Sorry for not providing my source XML earlier as i thought it is bit confusing. i have provided my xsl and xml files now expected o/p ============== <mezo eazon="AA">200</mezo> <mezo eazon="AA">150</mezo> . . <mezo eazon="BB">10,000</mezo> -- total of 24 AA records. <mezo eazon="AA">300</mezo> <mezo eazon="AA">50</mezo> xsl file ============ <xsl:key name="group" match="G_REP_TRX_DETAIL_INFO" use="concat(C_BILLING_TP_TAX_REG_NUM,C_TAX_REPORTING_NAME)"/> <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/> <xsl:template match="/"> <xsl:apply-templates select=".//LIST_G_REP_TRX_DETAIL_INFO"/> </xsl:template> <xsl:template name="Temp1" match="LIST_G_REP_TRX_DETAIL_INFO"> <xsl:for-each select="G_REP_TRX_DETAIL_INFO[C_TAX_REPORTING_NAME = '01'][generate-id()=generate-id(key('group',concat(C_BILLING_TP_TAX_REG_NUM,C_TAX_REPORTING_NAME))[1])]"> <mezo eazon="AA"><xsl:value-of select="sum(key('group', concat(C_BILLING_TP_TAX_REG_NUM,C_TAX_REPORTING_NAME))/C_FUNCTIONAL_TOTAL)" /></mezo><xsl:text>
</xsl:text> </xsl:for-each> </xsl:template> </xsl:stylesheet> XML File ================ <ZXXEUSL> <LIST_G_REP_PARAMETER_INFO> <G_REP_PARAMETER_INFO> <CP_ESL_ROUND_RULE_CODE>NO</CP_ESL_ROUND_RULE_CODE> </G_REP_PARAMETER_INFO> </LIST_G_REP_PARAMETER_INFO> <LIST_G_REP_TRX_DETAIL_INFO> <G_REP_TRX_DETAIL_INFO> <C_BILLING_TP_TAX_REG_NUM>abc</C_BILLING_TP_TAX_REG_NUM> <C_TAX_REPORTING_NAME>01</C_TAX_REPORTING_NAME> <C_FUNCTIONAL_TOTAL>100</C_FUNCTIONAL_TOTAL> </G_REP_TRX_DETAIL_INFO> <G_REP_TRX_DETAIL_INFO> <C_BILLING_TP_TAX_REG_NUM>def</C_BILLING_TP_TAX_REG_NUM> <C_TAX_REPORTING_NAME>01</C_TAX_REPORTING_NAME> <C_FUNCTIONAL_TOTAL>50</C_FUNCTIONAL_TOTAL> </G_REP_TRX_DETAIL_INFO> <G_REP_TRX_DETAIL_INFO> <C_BILLING_TP_TAX_REG_NUM>xyz</C_BILLING_TP_TAX_REG_NUM> <C_TAX_REPORTING_NAME>01</C_TAX_REPORTING_NAME> <C_FUNCTIONAL_TOTAL>100</C_FUNCTIONAL_TOTAL> </G_REP_TRX_DETAIL_INFO> <G_REP_TRX_DETAIL_INFO> <C_BILLING_TP_TAX_REG_NUM>abc</C_BILLING_TP_TAX_REG_NUM> <C_TAX_REPORTING_NAME>01</C_TAX_REPORTING_NAME> <C_FUNCTIONAL_TOTAL>100</C_FUNCTIONAL_TOTAL> </G_REP_TRX_DETAIL_INFO> <G_REP_TRX_DETAIL_INFO> <C_BILLING_TP_TAX_REG_NUM>def</C_BILLING_TP_TAX_REG_NUM> <C_TAX_REPORTING_NAME>01</C_TAX_REPORTING_NAME> <C_FUNCTIONAL_TOTAL>100</C_FUNCTIONAL_TOTAL> </G_REP_TRX_DETAIL_INFO> <G_REP_TRX_DETAIL_INFO> <C_BILLING_TP_TAX_REG_NUM>xyz</C_BILLING_TP_TAX_REG_NUM> <C_TAX_REPORTING_NAME>01</C_TAX_REPORTING_NAME> <C_FUNCTIONAL_TOTAL>100</C_FUNCTIONAL_TOTAL> </G_REP_TRX_DETAIL_INFO> <G_REP_TRX_DETAIL_INFO> <C_BILLING_TP_TAX_REG_NUM>abc</C_BILLING_TP_TAX_REG_NUM> <C_TAX_REPORTING_NAME>02</C_TAX_REPORTING_NAME> <C_FUNCTIONAL_TOTAL>100</C_FUNCTIONAL_TOTAL> </G_REP_TRX_DETAIL_INFO> <G_REP_TRX_DETAIL_INFO> <C_BILLING_TP_TAX_REG_NUM>bbb</C_BILLING_TP_TAX_REG_NUM> <C_TAX_REPORTING_NAME>02</C_TAX_REPORTING_NAME> <C_FUNCTIONAL_TOTAL>100</C_FUNCTIONAL_TOTAL> </G_REP_TRX_DETAIL_INFO> <G_REP_TRX_DETAIL_INFO> <C_BILLING_TP_TAX_REG_NUM>xyz</C_BILLING_TP_TAX_REG_NUM> <C_TAX_REPORTING_NAME>01</C_TAX_REPORTING_NAME> <C_FUNCTIONAL_TOTAL>50</C_FUNCTIONAL_TOTAL> </G_REP_TRX_DETAIL_INFO> <G_REP_TRX_DETAIL_INFO> <C_BILLING_TP_TAX_REG_NUM>xyz</C_BILLING_TP_TAX_REG_NUM> <C_TAX_REPORTING_NAME>01</C_TAX_REPORTING_NAME> <C_FUNCTIONAL_TOTAL>50</C_FUNCTIONAL_TOTAL> </G_REP_TRX_DETAIL_INFO> <G_REP_TRX_DETAIL_INFO> <C_BILLING_TP_TAX_REG_NUM>xyz</C_BILLING_TP_TAX_REG_NUM> <C_TAX_REPORTING_NAME>02</C_TAX_REPORTING_NAME> <C_FUNCTIONAL_TOTAL>100</C_FUNCTIONAL_TOTAL> </G_REP_TRX_DETAIL_INFO> <G_REP_TRX_DETAIL_INFO> <C_BILLING_TP_TAX_REG_NUM>ddd</C_BILLING_TP_TAX_REG_NUM> <C_TAX_REPORTING_NAME>01</C_TAX_REPORTING_NAME> <C_FUNCTIONAL_TOTAL>50</C_FUNCTIONAL_TOTAL> </G_REP_TRX_DETAIL_INFO> </LIST_G_REP_TRX_DETAIL_INFO> <CS_CURRENCY_CODE>GBP</CS_CURRENCY_CODE> </ZXXEUSL> Thanks Anil --------- <xsl:template match="test"> <test> <xsl:apply-templates select="mezo[1]" /> </test> </xsl:template> <xsl:template match="mezo"> <xsl:copy-of select="." /> <xsl:if test="(count(preceding-sibling::mezo) + 1) mod 2 eq 0"> <mezo eazon="BB"><xsl:value-of select=". + preceding-sibling::mezo[1]" /></mezo> </xsl:if> <xsl:apply-templates select="following-sibling::mezo[1]" /> </xsl:template> </xsl:stylesheet>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] want to display sum of ev, Mukul Gandhi | Thread | Re: [xsl] want to display sum of ev, Mukul Gandhi |
RE: [xsl] Processing large XML Docu, Michael Kay | Date | [no subject], Unknown |
Month |