Spanning rows in HTML3 tables

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


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