Subject: Re: Grouping Issue?
From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx>
Date: Wed, 21 Aug 2002 10:30:21 +0100
|
Andrew Welch wrote:
> You could try this, its a bit noddy and hard coded but if you are
> sure of your data it should be ok.
>
> First, select every third <month>
>
> <xsl:template match="tripdates">
> <xsl:apply-templates select="month[position() mod 3 = 1]"/>
> </xsl:template>
>
> Output a row of that <month> and the following two <month>s
>
> <xsl:template match="month">
> <tr>
> <xsl:apply-templates select="." mode="table"/>
> <xsl:apply-templates select="following-sibling::month[1]"
> mode="table"/>
> <xsl:apply-templates select="following-sibling::month[2]"
> mode="table"/>
> </tr>
> </xsl:template>
>
> Output the <td>'s for each <month>
> <xsl:template match="month" mode="table">
> <td><xsl:value-of select="."/></td>
> </xsl:template>
>
> It wouldnt be very hard to use a variable instead of hard coded
> value's - you would just need to modify the unmoded month template,
> probably with a call to a named template that would recursively
> apply-templates to the following-siblings. If you get stuck I can
> show you that.
It's not even that hard. Just apply templates to the following
siblings whose position() is less than $cols:
<xsl:variable name="cols" select="3" />
<xsl:template match="tripdates">
<xsl:apply-templates select="month[position() mod $cols = 1]"/>
</xsl:template>
<xsl:template match="month">
<tr>
<xsl:apply-templates mode="table"
select=". | following-sibling::month[position() < $cols]" />
</tr>
</xsl:template>
<xsl:template match="month" mode="table">
<td><xsl:value-of select="."/></td>
</xsl:template>
Cheers,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
- Grouping Issue?
- Josh Campbell - Tue, 20 Aug 2002 22:52:34 -0400 (EDT)
- <Possible follow-ups>
- Andrew Welch - Wed, 21 Aug 2002 04:57:39 -0400 (EDT)
- Jeni Tennison - Wed, 21 Aug 2002 05:29:24 -0400 (EDT) <=
|
|