Re: [xsl] Display the number of records in a group

Subject: Re: [xsl] Display the number of records in a group
From: anil kumar <anar.leti@xxxxxxxxx>
Date: Tue, 9 Mar 2010 15:40:09 +0530
Hi,

i got my required out put when i tried like below..

<xsl:template name="ttpgds" match="ARXEURSL" mode="temp2">
<xsl:param name="gdserv" />
<xsl:param name="triangle" />
<xsl:variable name="x">
<xsl:for-each-group select="G_ROW[INTRA_EU_TRX_CODE
=($gdserv,$triangle)]"
group-by="concat(VAT_TAX_NO,BILL_CUST_NAME,INTRA_EU_TRX_CODE)">
<P><xsl:value-of select="position()"/></P><xsl:text>&#xD;</xsl:text>
</xsl:for-each-group>
</xsl:variable>
<xsl:for-each select="$x">
<xsl:value-of select="max(P)"/>
</xsl:for-each>
</xsl:template>


The below  condition has not worked for me because
<xsl:if test="position()=last()">

last() - this  is returning total records in the group G_ROW ( which are 11 )
where as..
postion() - returning position of current record
 (  in my logic max value of position() is 8,  as 11 records are
grouping into 8 bcoz of condition
group-by="concat(VAT_TAX_NO,BILL_CUST_NAME,INTRA_EU_TRX_CODE) )

Hence the condition  "position()=last()" ( 8 = 11)   never occurs, so
iam failing to display the  last record.


Thanks for you Time

Regards
Anil




On Tue, Mar 9, 2010 at 11:59 AM, anil kumar <anar.leti@xxxxxxxxx> wrote:
> Hi,
>
> Sorry if i confused you.
>
> Let me explain more clearly
>
> My xml consists of 11 records ,
> ================================
> 123 ABC GOOD 10
> 123 ABC GOOD 20
> 123 ABC GOOD 30
>
> 456 DEF GOOD 10
> 789 GHI GOOD 10
> 567 JKL GOOD 10
>
> 234 BCD GOOD 20
> 345 CDE GOOD 20
>
> 678 TTT TRIANGULATION 30
> 678 TTT TRIANGULATION 20
>
> 321 TRT TRIANGULATION 20
> ================================
>
> when i used
 group-by="concat(VAT_TAX_NO,BILL_CUST_NAME,INTRA_EU_TRX_CODE)">
> These 11 records are grouping  into "8" records.
> and i want to capture this value and show it in o/p
>
> these are the ways i tried..
> <xsl:value-of select="count(current-group())"/>   giving o/p as
> <mezo eazon="0A0001D003A">31111121</mezo>
> <xsl:value-of select="last()"/>                          giving o/p as
>  <mezo eazon="0A0001D003A">1111111111111111</mezo>
> <xsl:value-of select="position()"/>                    giving o/p as
> <mezo eazon="0A0001D003A">12345678</mezo>
>
>
> expected o/p
> <mezo eazon="0A0001D003A">8</mezo>
>
> Thanks
> Anil
>
> On Mon, Mar 8, 2010 at 6:46 PM, David Carlisle <davidc@xxxxxxxxx> wrote:
>> On 08/03/2010 13:04, anil kumar wrote:
>>>
>>> How to show the toatal number of records,
>>> ima failing to get this by  last()
>>> because iam  grouping 11 records into 8 , so the value of last() is
>>> giving 11  which is in correct
>>>
>>>
>>
>> I didn't understand that comment, but inside xsl:for-each-group
>>
>> <xsl:value-of select="last()"/> gives you the number of groups
>>
>> <xsl:value-of select="count(current-group())"/> gives the number of items
in
>> the current group.
>>
>> I'm not sure which of these numbers you want.
>>
>> David
>>
>>
>> ________________________________________________________________________
>> The Numerical Algorithms Group Ltd is a company registered in England
>> and Wales with company number 1249803. The registered office is:
>> Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.
>>
>> This e-mail has been scanned for all viruses by Star. The service is
>> powered by MessageLabs.
>> ________________________________________________________________________

Current Thread