[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: Breaking up is hard to do.

Subject: RE: Breaking up is hard to do.
From: Brian Dupras <briand@xxxxxxxxxxx>
Date: Mon, 21 Feb 2000 11:23:44 -0700
html td cols
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 &gt; 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 &lt;
$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 &gt; 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>&#160;</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

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.