Spanning rows in HTML3 tables

Joe English (jenglish@crl.com)
Fri, 02 Dec 1994 12:01:46 -0800


Message-Id: <199412022001.AA15236@mail.crl.com>
To: www-html@www0.cern.ch
Subject: Spanning rows in HTML3 tables
Date: Fri, 02 Dec 1994 12:01:46 -0800
From: Joe English <jenglish@crl.com>


Regarding the ROWSPAN attribute on TH and TD elements
in HTML 3:

HTML 3 seems to specify (and Arena and Mosaic for X 2.5b2 implement)
that tables cells with a ROWSPAN attribute > 1  "fill in" cells 
in successive rows.

In other words, the following formats as expected:

    <table border id=ex1>
    <tr>
	<td rowspan=2> row 1, col 1</td>
	<td rowspan=1> row 1, col 2</td>
	<td rowspan=2> row 1, col 3</td>
	<td rowspan=1> row 1, col 4</td>
    </tr>
    <tr>
	<td> row 2, col 2</td>
	<td> row 2, col 4</td>
    </tr>
    </table>


Many other table schemes -- TeX, tbl, and (most importantly) 
DSSSL expect to see empty cells where spanned rows would 
appear; in other words:

    <table border id=ex2>
    <tr>
	<td rowspan=2> row 1, col 1</td>
	<td rowspan=1> row 1, col 2</td>
	<td rowspan=2> row 1, col 3</td>
	<td rowspan=1> row 1, col 4</td>
    </tr>
    <tr>
	<td></td>	<!-- r2 c1 empty, overlapped by r1c1 -->
	<td> row 2, col 2</td>
	<td></td>	<!-- r2 c3 empty, overlapped by r1c1 -->
	<td> row 2, col 4</td>
    </tr>
    </table>

I think (but am not sure) that CALS and ICADD tables
expect either empty cells in the content or column starting
numbers in attributes to handle this:

    <tr>
	<td colstart=2> row 2, col 2</td>
	<td colstart=4> row 2, col 4</td>
    </tr>


Is it possible to change the HTML 3 table semantics
to expect empty cells and/or require a colstart attribute?

I ask because if the DSSSL table model ends up in 
DSSSL-Lite, the burden of computing spanning rows
will be on *stylesheet authors*.  I'm sure it's possible 
to write Scheme code to do this for the current 
semantics, but I'm also sure it's not easy...  
COLSTART attributes and/or empty cells make 
the problem much more tractable.

It may also make converting other table formats into
HTML easier, since the conversion software won't
need to figure out when cells must be omitted.
It may also make it easier for other browsers to
implement tables.

One possible problem: these semantics are incompatible with 
the current implementations; the first table (ex1) would be 
formatted with the bottom half of "row 1 col 1" overlapping 
"row 2 col 2".  The demo tables at NCSA and CERN make heavy use of
spanning rows, so there's probably already plenty of
legacy data "out there" that are marked up this way.
But hey, this is still in beta, right?



--Joe English

  jenglish@crl.com