Subject: RE: Breaking up is hard to do. From: Brian Dupras <briand@xxxxxxxxxxx> Date: Mon, 21 Feb 2000 11:23:44 -0700 |
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@xxxxxxxxxxxxx] > Sent: Monday, February 21, 2000 9:17 AM > To: xsl-list@xxxxxxxxxxxxxxxx > 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@xxxxxxx> > To: <xsl-list@xxxxxxxxxxxxxxxx> > 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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: Breaking up is hard to do., Steve Muench | Thread | Postscript directly from XSL, Jon Smirl |
Re: Node with maximum attribute val, David Carlisle | Date | RE: Node with maximum attribute val, Kay Michael |
Month |