This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: newbie question...
- From: Jeni Tennison <jeni at jenitennison dot com>
- To: "Terje Kristensen" <terje dot kristensen at igroup dot no>
- Cc: xsl-list at lists dot mulberrytech dot com
- Date: Thu, 29 Nov 2001 11:38:29 +0000
- Subject: Re: [xsl] newbie question...
- Organization: Jeni Tennison Consulting Ltd
- References: <4C6B084492C1DE4CBCE2B6052BEA1BB9060B74@office.IGROUP>
- Reply-to: xsl-list at lists dot mulberrytech dot com
Hi Terje,
> I got a simple table where I receive 4 variables from the xsql
> query:PNS (nom. size), POD (dia.(mm)), PWTH (Wall th.(mm)) and PSCH
> (Schedule). The result is presented on a web-page, but because we
> also want to print it out, we are not able to present more than 22
> records in each table. How do I tell the XSL to start printing a new
> table when it has reached 22 records?
You need to group using the position() of the ROW. You want the 1st,
23rd, 45th etc. ROW elements to generate a new table, so apply
templates only to those ROW elements:
<xsl:apply-templates select="ROW[position() mod 22 = 1]" />
and have a template that matches ROW elements and creates the table
element. For the rows, it needs to look at that ROW element and its
following 22 siblings. I'd store these in a variable since you're
going to use them again and again to create each row. Then create the
cells in each row by iterating over $rows:
<xsl:template match="ROW">
<table class="no" style="width:170mm;padding:1pt;" cellspacing="0"
border="1">
<xsl:variable name="rows"
select=". | following-sibling::ROW[position() < 22]" />
<tr>
<td class="b">Nom. Size(in)</td>
<xsl:for-each select="$rows">
<td class="lb"><xsl:value-of select="PNS" /></td>
</xsl:for-each>
</tr>
<tr>
<td class="t">dia.(mm)</td>
<xsl:for-each select="$rows">
<td class="lt"><xsl:value-of select="POD" /></td>
</xsl:for-each>
</tr>
<tr>
<td class="t">Wall th.(mm)</td>
<xsl:for-each select="$rows">
<td class="lt"><xsl:value-of select="PWTH" /></td>
</xsl:for-each>
</tr>
<tr>
<td class="t">Schedule</td>
<xsl:for-each select="$rows">
<td class="lt"><xsl:value-of select="PSCH" /> </td>
</xsl:for-each>
</tr>
</table>
</xsl:template>
I hope that helps,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list