Re: [xsl] reset increment on attribute value change

Subject: Re: [xsl] reset increment on attribute value change
From: "Mukul Gandhi" <gandhi.mukul@xxxxxxxxx>
Date: Mon, 2 Oct 2006 18:08:08 +0530
Probably your XML is something like this:

<root>
 <a name="1">
   <b>
     <c/>
   </b>
   <b>
     <c/>
   </b>
 </a>
 <a name="2">
   <b>
     <c/>
   </b>
   <b>
     <c/>
   </b>
   <b>
     <c/>
   </b>
 </a>
 <a name="3">
   <b>
     <c/>
   </b>
   <b>
     <c/>
   </b>
   <b>
     <c/>
   </b>
   <b>
     <c/>
   </b>
 </a>
</root>

The following stylesheet when applied to the above XML:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

<xsl:output method="text" />

<xsl:template match="/root">
 <xsl:for-each select="a">
   <xsl:for-each select=".//c">
     <xsl:value-of select="position()" /><xsl:text>&#xa;</xsl:text>
   </xsl:for-each>
   <xsl:text>&#xa;</xsl:text>
 </xsl:for-each>
</xsl:template>

</xsl:stylesheet>

Produces output:

1
2

1
2
3

1
2
3
4

If this is not what you need, please provide more details.

On 10/2/06, Jonathan Marenus <jonathanmarenus@xxxxxxxxx> wrote:

Hi there,


I have the following XML structure:

<a name="1">
..
..
..
</a>
<a name="2">
..
..
..
</a>

I have repeatable b and c elements within each a (c
within b).

My XSL consists of a for-each "a". My goal is to have
an incremented value for each c where a[@name="1"] and
then start over with the next a where @name="2".

Put simply, I need to reset the incrementing when the
attribute for a changes value.

Right now, I am using the position function for c, but
the problem with that is it starts over when I have a
new b, not a new a, since c is within b.

Any help would be appreciated.

Best Regards,

Jonathan Marenus


--
Regards,
Mukul Gandhi

Current Thread