xsl-list
[Top] [All Lists]

Re: [xsl] want to display sum of every two records

2010-02-23 06:59:11
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>&#xD;</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>

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>