THEAD & TFOOT for columns

Jeni Tennison (jft@Psychology.Nottingham.AC.UK)
Thu, 14 Aug 1997 17:57:18 +0100


Message-Id: <l0302090ab018d97e8ce9@[128.243.31.122]>
Date: Thu, 14 Aug 1997 17:57:18 +0100
To: www-html@w3.org
From: Jeni Tennison <jft@Psychology.Nottingham.AC.UK>
Subject: THEAD & TFOOT for columns

This email proposes the addition of COLHEAD and COLFOOT elements, which,
like COLGROUP, contain COLs, and, like THEAD and TFOOT, can be kept static
when scrolling or repeat over pages when the width of the table is large.
I haven't been able to find any other similar suggestions, though I haven't
looked into the specifications of tables in other languages: this is just
something that struck me as I was reading the HTML4.0 Working Draft.  I
also have no idea how feasible this would be to program, or whether it
would be worthwhile.  But enough disclaimers...

The purpose of THEAD & TFOOT is, in my understanding, to allow large tables
to be rendered as scrollable sections on the page, with the rows within
THEAD and TFOOT displayed constantly at the top and bottom of the table.
Within the body of the table, rows can be divided into groups using TBODY
and columns into similar ones through COLGROUP.

This is fine for *long* tables, but what about *wide* tables?  I'm thinking
about situations such as experimental subject data, where there are large
numbers of variables for each subject, or situations where the screen is
too small to accommodate the entire width of a table, even at its mininum
width.

It would seem sensible to have similar constructs to THEAD & TFOOT for
columns.  Let's call them COLHEAD and COLFOOT for now.
[maybe a simpler naming system would have ROWHEAD, ROWFOOT and ROWGROUP
instead of THEAD, TFOOT and TBODY?  Or use TLEFT and TRIGHT instead of
COLHEAD and COLFOOT?]

Basically, COLHEAD and COLFOOT would act in exactly the same way as
COLGROUP does currently, defining a number of columns and their relative
widths and specifying alignments for those columns to inherit.  The only
difference is that, as with THEAD and TFOOT, they should not scroll when
the table is scrolled horizontally.

The TABLE element would then have the definition:

<!ELEMENT TABLE - - (CAPTION?, (COL* | (COLHEAD?, COLFOOT?, COLGROUP*)),
THEAD?, TFOOT?, TBODY+)>

COLHEAD and COLFOOT would have the definitions:

<!ELEMENT COLHEAD - 0 (COL*)>
<!ELEMENT COLFOOT - 0 (COL*)>
<!ATTLIST (COLHEAD|COLFOOT)
	%attrs;
	span	NUMBER	1	 -- default number of columns in head --
	width	CDATA	#IMPLIED -- default width for enclosed COLs --
	%cellhalign;		 -- horizontal alignment in cells --
	%cellvalign;		 -- vertical alignment in cells --
	>

If both COLHEAD and THEAD are defined within a TABLE, the top right cell
(which may span more than one column or row, depending on the number of
COLs defined within the COLHEAD and how many TRs defined within the THEAD)
is always static.  Similarly if other pairs (COLHEAD & TFOOT, COLFOOT &
THEAD, COLFOOT & TFOOT) are defined, other corners of the table would hold
static cells.

The renderer would first assign space to the COLHEAD and COLFOOT columns,
before  assigning the remaining horizontal space to the rest of the
columns.  If the COLHEAD and COLFOOT together gave a width that was wider
than the screen, this should be dealt with as it would deal with THEAD and
TFOOT being taller than the screen height (however that is?!).

What do y'all think?

Jeni

Jeni Tennison
Department of Psychology, University of Nottingham
University Park, Nottingham NG7 2RD, UK
tel: +44 (0) 115 951 5151 x8352
fax: +44 (0) 115 951 5361
url: http://www.psychology.nottingham.ac.uk/staff/Jenifer.Tennison/