This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: Breaking up is hard to do.
- To: "'xsl-list at mulberrytech dot com'" <xsl-list at mulberrytech dot com>
- Subject: RE: Breaking up is hard to do.
- From: Brian Dupras <briand at centera dot com>
- Date: Mon, 21 Feb 2000 11:23:44 -0700
- Reply-To: xsl-list at mulberrytech dot com
I've got a solution where the number of columns is a parameter, and the last
row is filled with blank <td>'s, but it may be buggy and/or slow (I've not
had the chance to really test it out).
Here's mine - I'd love to see this particular problem have an answer worthy
of an FAQ type question.
Brian
<xsl:template match="parent">
<xsl:variable name="cols" select="6"/>
<html:table cellspacing="0" cellpadding="2" border="1"
class="SiteBranchesBackground">
<xsl:if test="$cols > count(child)">
<xsl:variable name="cols" select="count(child)"/>
</xsl:if>
<xsl:for-each select="child">
<xsl:if test="position() mod $cols = 1">
<html:tr>
<xsl:variable name="firstCellPos" select="position()"/>
<xsl:for-each select="self::* |
following-sibling::*[position() - ($firstCellPos mod $cols) + 1 <
$cols]">
<html:td>
<html:span>cell</html:span>
</html:td>
<!-- LAST ROW EMPTY CELLS: fill in remaining cells (see
below) -->
<xsl:if test="(position() = last()) and (position() mod
$cols > 0)">
<xsl:call-template name="filler_cells"><xsl:with-param
name="cell_count" select="$cols - (position() mod
$cols)"/></xsl:call-template>
</xsl:if>
</xsl:for-each>
</html:tr>
</xsl:if>
</xsl:for-each>
</html:table>
</xsl:template>
<!-- EMPTY CELLS -->
<xsl:template name="filler_cells">
<xsl:param name="cell_count"/>
<xsl:if test="$cell_count">
<html:td> </html:td>
<xsl:call-template name="filler_cells">
<xsl:with-param name="cell_count" select="$cell_count - 1"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
> -----Original Message-----
> From: Steve Muench [mailto:smuench@us.oracle.com]
> Sent: Monday, February 21, 2000 9:17 AM
> To: xsl-list@mulberrytech.com
> Subject: Re: Breaking up is hard to do.
>
>
> Michael,
>
> This is very cool! The best I've seen so far for
> the case when number of columns is fixed.
>
> The slight tweak of your idea below makes it work
> for a parameterized number of columns, but looses
> the benefit that it fills the last row with empty
> cells. Maybe the idea will come later today to
> have the proverbial cake and eat it, too
> (or likely, you'll post the solution before then!) :-)
>
> <xsl:stylesheet
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
>
> <xsl:param name="max" select="number(3)"/>
>
> <xsl:template match="field[position() mod $max = 1]" priority="2">
> <tr>
> <td><xsl:value-of select="."/></td>
> <xsl:for-each select="following-sibling::field[$max >
> position()]">
> <td><xsl:apply-templates/></td>
> </xsl:for-each>
> </tr>
> </xsl:template>
>
> <xsl:template match="field" priority="1"/>
>
> </xsl:stylesheet>
>
> __________________________________________________________
> Steve Muench, Lead XML Evangelist / Consulting Product Mgr
> Oracle Corp, Business Components for Java Development Team
> http://technet.oracle.com/tech/xml
> ----- Original Message -----
> From: "Kay Michael" <Michael.Kay@icl.com>
> To: <xsl-list@mulberrytech.com>
> Sent: Monday, February 21, 2000 2:27 AM
> Subject: RE: Breaking up is hard to do.
>
>
> | >Attempting to break elements at context node into groups
> of three for
> | tabular output.
> |
> | There's another non-recursive approach which I don't think
> anyone has
> | suggested:
> |
> | <xsl:template match="field[position() mod 3 = 1]" priority="2">
> | <tr>
> | <td><xsl:value-of select="." mode=/></td>
> | <td><xsl:value-of select="following-sibling::field[1]"/></td>
> | <td><xsl:value-of select="following-sibling::field[2]"/></td>
> | </tr>
> | </xsl:template>
> |
> | <xsl:template match="field" priority="1"/>
> |
> | this also generates empty <td> elements to fill up the last
> <tr> row.
> |
> | Mike Kay
> |
> |
> |
> | XSL-List info and archive:
http://www.mulberrytech.com/xsl/xsl-list
|
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list