![]() |
![]() | ![]() | ![]() | Altova Mailing List Archives>Archive Index >xsl-list Archive Home >Recent entries >Thread Prev - [xsl] reset increment on attribute value change [Thread Next] Re: [xsl] reset increment on attribute value changeTo: Date: 10/2/2006 12:39:00 PM 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>
</xsl:text>
</xsl:for-each>
<xsl:text>
</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 | ![]() | ![]() | ![]() |
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | |||||
|
