Re: [xsl] Re: loop through comma seperated values

Subject: Re: [xsl] Re: loop through comma seperated values
From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>
Date: Thu, 01 Apr 2010 11:39:30 -0400
At 2010-04-01 19:33 +0400, you wrote:
My requirement is to frame a matrix.
<ColKey>2009,2010</ColKey>
<RowKey>JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC,YTD</RowKey>

I thought to have two for loops using the above keys and identify
elements and to display data appropriately.

Fine. Then nest into your stylesheet two instances of the approach I described. When you reach the "do-logic" portion for the years, do the nested approach for the months. When you reach the "do-logic" portion for the months, display your information accordingly. Name your templates appropriately to avoid name collision.


You don't give any guidelines as to how you plan to display your data, but if you track the year and month values and pass both of those down to the "do-logic" portion for the months, you'll have what you need.

I hope this helps.

. . . . . . . . . . Ken

Regards,
Ramesh

On Thu, Apr 1, 2010 at 7:13 PM, G. Ken Holman
<gkholman@xxxxxxxxxxxxxxxxxxxx> wrote:
> Use a recursive function call with substring-before() and substring-after(),
> along the lines of (untested):
>
> <xsl:template name="loop-commas">
> <xsl:param name="value"/>
> <xsl:choose>
> <xsl:when test="contains($value,',')">
> <xsl:call-template name="do-logic">
> <xsl:with-param name="this" select="substring-before($value,',')"/>
> </xsl:call-template>
> <xsl:call-template name="loop-commas">
> <xsl:with-param name="value" select="substring-after($value,',')"/>
> </xsl:call-template>
> </xsl:when>
> <xsl:otherwise>
> <xsl:call-template name="do-logic">
> <xsl:with-param name="this" select="$value"/>
> </xsl:call-template>
> </xsl:otherwise>
> </xsl:choose>
> </xsl:template>
>
> I hope this helps.
>
> . . . . . . . Ken
>
> At 2010-04-01 19:08 +0400, Ramesh Kumar wrote:
>>
>> I am using XSLT 1.0
>>
>> On Thu, Apr 1, 2010 at 7:06 PM, Ramesh Kumar <cnrameshkumar@xxxxxxxxx>
>> wrote:
>> > Dear All,
>> >
>> > I have XML document with an element having comma seperated values as
>> > below
>> > <RowKey>JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC,YTD</RowKey>
>> >
>> > I need to loop through the values. I tried to replace the comma","
>> > with "><" and used the variable in For each as below.
>> > <xsl:for-each select="msxsl:node-set($ColHead)">
>> > <xsl:value-of select="."/>
>> > </xsl:for-each>
>> > Note: $ColHead contains the comma seperated values.
>> >
>> >
>> > But no luck. Any help ?


--
XSLT/XQuery training:         San Carlos, California 2010-04-26/30
Principles of XSLT for XQuery Writers: San Francisco,CA 2010-05-03
XSLT/XQuery training:                 Ottawa, Canada 2010-05-10/14
XSLT/XQuery/UBL/Code List training: Trondheim,Norway 2010-06-02/11
Vote for your XML training:   http://www.CraneSoftwrights.com/s/i/
Crane Softwrights Ltd.          http://www.CraneSoftwrights.com/s/
G. Ken Holman                 mailto:gkholman@xxxxxxxxxxxxxxxxxxxx
Male Cancer Awareness Nov'07  http://www.CraneSoftwrights.com/s/bc
Legal business disclaimers:  http://www.CraneSoftwrights.com/legal

Current Thread