RE: [xsl] Formatting in an HTML table...DOWNwise!

Subject: RE: [xsl] Formatting in an HTML table...DOWNwise!
From: "Andrew Welch" <AWelch@xxxxxxxxxxxxxxx>
Date: Wed, 2 Jul 2003 17:10:11 +0100

> I have the following XSLT (well, actually it's a snippet), which formats
> some data from XML nicely into an HTML table. However, the data is pasted
> left-to-right, while I'd like it better when it's put up-to-down first.
> Anyone knows of a solution for this? Thanks in advance!

You've almost got it, you just need a variable to hold the table height (in rows).

<xsl:variable name="tableHeight" select="4"/>


Then you want a new row for each <model> up to the table height:

<xsl:template match="modellen">
  <table border="1">
    <xsl:for-each select="model[position() &lt; $tableHeight]">
      <tr>
        ....
      </tr>
    </xsl:for-each>
  </table>
</xsl:template>


Then on each row you want every nth sibling, depending on how many rows you have:

<xsl:for-each select=".|following-sibling::model[position() mod $tableHeight = 1]">
  <td>
    <xsl:apply-templates/>
  </td>
</xsl:for-each>

So all together it looks like:

<xsl:template match="modellen">
  <table border="1">
    <xsl:for-each select="model[position() &lt; $tableHeight]">
      <tr>
        <xsl:for-each select=".|following-sibling::model[position() mod $tableHeight = 1]">
          <td>
            <xsl:apply-templates/>
          </td>
        </xsl:for-each>
      </tr>
    </xsl:for-each>
  </table>
</xsl:template>

cheers
andrew

---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.491 / Virus Database: 290 - Release Date: 18/06/2003
 

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread