Re: [xsl] Having same number of rows in table irrespective of number of data rows

Subject: Re: [xsl] Having same number of rows in table irrespective of number of data rows
From: Brian Chrisman <incubus@xxxxxxxxxxxxxx>
Date: Tue, 12 Apr 2005 00:32:42 -0700
On Tue, Apr 12, 2005 at 07:58:14AM +0100, Steve W wrote:
> I want to create a table that has a set number of rows in it.  The XML has
> data in it to be shown in the table - in simple terms one element of the XML
> for each row of the table.  The XML will only have an element if there is
> data,  so if I have 3 data elements but I want 5 rows in the table there
> will be 2 'missing' rows and I want to output these 2 rows with some set
> html in it.
> 
> My template looks like this :
> 
> <table cellpadding="0" cellspacing="0" border="0" width="100%">
>     <xsl:for-each select="INITIALVALUES/INITIALVALUE">
>         <tr>
>             <td>
>                 <!-- some html ....  -->
>                 </td>
>             </tr>
>     </xsl:for-each>
>     <!-- add 'blank' rows to give constant number of rows in table -->
> </table>

not the easiest of tasks... 
You probably want to make a recursive 'xsl:call-template' passing a
parameter specifying how many additional rows to create.
might try this...

... inside yer <table>...
<xsl:call-template name="blank-rows">
	<xsl:with-param name="count" select="5 - count(INITIALVALUES/INITIALVALUE)"/>
</xsl:call-template>


<xsl:template name="blank-rows">
	<xsl:param name="count"/>
	<!-- blank row stuff here -->
	<xsl:if test="$count &gt; 0">
		<xsl:call-template name="blank-rows">
			<xsl:with-param name="count" select="$count - 1"/>
		</xsl:call-template>
	</xsl:if>
</xsl:template>

xslt is great at transforming data... not quite so convenient (at least 1.0,
not sure about 2.0) when yer not transforming data.. :-)

> 
> Thanks
> 
> Steve

Current Thread