xsl-list
[Top] [All Lists]

Re: [xsl] reset increment on attribute value change

2006-10-02 05:38:28
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(_at_)yahoo(_dot_)com> 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[(_at_)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

--~------------------------------------------------------------------
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>