RE: [xsl] Calculating Column Total

Subject: RE: [xsl] Calculating Column Total
From: Shashank Jain <shashankjain@xxxxxxxx>
Date: Sun, 28 Mar 2010 19:57:12 -0500
All,

I am stuck in calculating total of another column.

My XML is



<data>
  
<event_template sp_doctypes="Research Note, Prior Stock Report, Stock
Report">

      <event  complete='Y' />

      <event  complete='N' />

  </event_template>

  <event_template sp_doctypes=" Prior Stock Report, Stock Report">

      <event  complete='Y' />

      <event  complete='N' />

      <event  complete='N' />

      <event  complete='Y' />
 
</event_template>
</data>


This is the xsl I am using

<xsl:template match="/">
        <xsl:value-of select="fns:sumMissing_template(event)"/>
 </xsl:template>

<xsl:function name="fns:sumMissing_template">
  <xsl:param name="everyEvent" as="element()*"/>
    <xsl:variable name="Num_Docs_Missing">
         <xsl:choose>
                <xsl:when test="@complete='Y'">
                    <xsl:value-of select="0"/>
                </xsl:when>
                <xsl:otherwise>
                     <xsl:value-of select="1"/>
                </xsl:otherwise>
         </xsl:choose>
    </xsl:variable>
<xsl:sequence select="sum(for $x in $everyEvent return($Num_Docs_Missing))"/>
</xsl:function>

I am trying to calculate the sum of $Num_Docs_Missing for all the events.
Please let me know where I am doing wrong.

Thanks
Shashank

> From: shashankjain@xxxxxxxx
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Date: Fri, 26 Mar 2010 07:30:06 -0500
> Subject: RE: [xsl] Calculating Column Total
>
>
> Thanks a lot Mukul.
>
> Its working.
>
> Shashank
>
>> From: gandhi.mukul@xxxxxxxxx
>> Date: Thu, 25 Mar 2010 09:07:54 +0530
>> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
>> Subject: Re: [xsl] Calculating Column Total
>>
>> you may write a XSLT function as following, for this need:
>>
>> <xsl:function name="my:sumEvent_template" as="xs:nonNegativeInteger">
>>   <xsl:param name="eventTempl" as="element()*" />
>>
>>   <xsl:sequence select="sum(for $x in $eventTempl return
>> (count($x/event) * count(tokenize($x/@sp_doctypes,','))))" />
>> </xsl:function>
>>
>> and call it as following:
>>
>> <xsl:value-of select="my:sumEvent_template(event_template)" />
>>
>> PS: this is not tested.
>>
>> On Thu, Mar 25, 2010 at 1:03 AM, Shashank Jain <shashankjain@xxxxxxxx>
wrote:
>>>
>>> HI All,
>>>
>>>
>>>
>>> I am trying to calculate the total of all the columns which I am
>>>
>>> creating dynamically.
>>>
>>>
>>>
>>> My XML is
>>>
>>>
>>>
>>> <data>
>>>
>>> <event_template sp_doctypes="Research Note, Prior Stock Report, Stock
>>>  Report">
>>>
>>>       <event  r_version_label="[1.0, CURRENT]" />
>>>
>>>       <event  r_version_label="[2.0, CURRENT]" />
>>>
>>>       </event_template>
>>>
>>>   <event_template sp_doctypes=" Prior Stock Report, Stock Report"
>>>>
>>>
>>>       <event  r_version_label="[1.0, CURRENT]" />
>>>
>>>       <event  r_version_label="[2.0, CURRENT]" />
>>>
>>>        <event  r_version_label="[1.0, CURRENT]" />
>>>
>>>       <event  r_version_label="[2.0, CURRENT]" />
>>>
>>>  </event_template>
>>>
>>>  </data>
>>>
>>>
>>>
>>> and this is the template I am using
>>>
>>>
>>>
>>> <xsl:template name="Col_Total_Num_Mand">
>>>
>>>          <xsl:for-each select="event_template ">
>>>
>>>         <xsl:variable name="MandatoryDocs" select="@sp_doctypes"/>
>>>
>>>         <xsl:variable name="StrArray"
select="tokenize($MandatoryDocsStr,',')"/>
>>>
>>>         <xsl:variable name="test" select="count($StrArray)"/>
>>>
>>>     <xsl:value-of select="count(child::event)*$test"/>
>>>
>>>     </xsl:for-each>
>>>
>>> </xsl:template>
>>>
>>>
>>>
>>> What I am trying to achieve is the total of events*(test) for all the
>>>
>>> event_template.
>>>
>>> I am able to do it for individual event_template but not able to add
>>> them all.
>>>
>>>
>>>
>>> Thanks
>>
>>
>>
>> --
>> Regards,
>> Mukul Gandhi
>>
>
> _________________________________________________________________
> Hotmail is redefining busy with tools for the New Busy. Get more from your
inbox.
>
http://www.windowslive.com/campaign/thenewbusy?ocid=PID27925::T:WLMTAGL:ON:WL
:en-US:WM_HMP:032010_2
>

_________________________________________________________________
Hotmail has tools for the New Busy. Search, chat and e-mail from your inbox.
http://www.windowslive.com/campaign/thenewbusy?ocid=PID27925::T:WLMTAGL:ON:WL
:en-US:WM_HMP:032010_1

Current Thread