Sorry to chip in.This discussion started with my
problem and it's still unsolved.
I thought some solutions had been posted, another is at the end.
Which could have been done straight
away if there were some provision of incrementing a
variable in XSLT.
I don't beliee that the logic of the program below would have been any
simpler if it was expressed as a loop rather than as recursion.
(ft:assign
you've mentioned ft:assign a few times but I don't think you've said
what bamespace you have ft bound to so I don't know what extension this
is. I know saxon has such an extension, but as i said in an earlier mail
it makes no sense to use assignment for any result that you want to be
portable between systems.
gv.xml
<?xml version="1.0" encoding="UTF-8"?>
<Students>
<Student>
<Name>SAM</Name>
<TOption>English </TOption>
</Student>
<Student>
<Name>RAJ</Name>
<TOption>English </TOption>
</Student>
<Student>
<Name>RON</Name>
<TOption>English </TOption>
</Student>
<Student>
<Name>JON</Name>
<TOption>German </TOption>
</Student>
<Student>
<Name>DON</Name>
<TOption>German </TOption>
</Student>
<Student>
<Name>MON</Name>
<TOption>Hebrew </TOption>
</Student>
<Student>
<Name>GON</Name>
<TOption>Hebrew </TOption>
</Student>
</Students>
gv.xsl
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
<xsl:template match="Students">
<html>
<head><title>test</title></head>
<body>
<table>
<xsl:call-template name="row"/>
</table>
</body>
</html>
</xsl:template>
<xsl:template name="row">
<xsl:param name="p" select="1"/>
<xsl:param name="s" select="Student[1]"/>
<tr>
<td><xsl:value-of select="$p"/></td>
<td><xsl:value-of select="$s/Name"/></td>
<td><xsl:value-of select="$s/TOption"/></td>
</tr>
<xsl:choose>
<xsl:when test="$s/TOption=$s/following-sibling::Student/TOption">
<xsl:call-template name="row">
<xsl:with-param name="p" select="$p+1"/>
<xsl:with-param name="s" select="$s/following-sibling::Student[1]"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="$s/following-sibling::Student">
<tr>
<td><xsl:value-of select="$p+1"/></td>
<td> </td>
<td> </td>
</tr>
<xsl:call-template name="row">
<xsl:with-param name="p" select="$p+2"/>
<xsl:with-param name="s" select="$s/following-sibling::Student[1]"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<tr>
<td><xsl:value-of select="$p+1"/></td>
<td>total</td>
<td><xsl:value-of select="count(Student)"/></td>
</tr>
<xsl:for-each select="(document('')//*)[position() +$p < 15]">
<tr>
<td><xsl:value-of select="$p+1+position()"/></td>
<td> </td>
</tr>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
gv.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>test</title>
</head>
<body>
<table>
<tr>
<td>1</td>
<td>SAM</td>
<td>English </td>
</tr>
<tr>
<td>2</td>
<td>RAJ</td>
<td>English </td>
</tr>
<tr>
<td>3</td>
<td>RON</td>
<td>English </td>
</tr>
<tr>
<td>4</td>
<td></td>
<td></td>
</tr>
<tr>
<td>5</td>
<td>JON</td>
<td>German </td>
</tr>
<tr>
<td>6</td>
<td>DON</td>
<td>German </td>
</tr>
<tr>
<td>7</td>
<td></td>
<td></td>
</tr>
<tr>
<td>8</td>
<td>MON</td>
<td>Hebrew </td>
</tr>
<tr>
<td>9</td>
<td>GON</td>
<td>Hebrew </td>
</tr>
<tr>
<td>10</td>
<td>total</td>
<td>7</td>
</tr>
<tr>
<td>11</td>
<td></td>
</tr>
<tr>
<td>12</td>
<td></td>
</tr>
<tr>
<td>13</td>
<td></td>
</tr>
<tr>
<td>14</td>
<td></td>
</tr>
<tr>
<td>15</td>
<td></td>
</tr>
</table>
</body>
</html>
________________________________________________________________________
This e-mail has been scanned for all viruses by Star Internet. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list