xsl-list
[Top] [All Lists]

RE: Formatting in an HTML table...DOWNwise!

2003-07-02 09:10:11


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



<Prev in Thread] Current Thread [Next in Thread>