W3C home > Mailing lists > Public > www-html-editor@w3.org > July to September 1997

THEAD & TFOOT for columns

From: Jeni Tennison <jft@psyc.nott.ac.uk>
Date: Thu, 18 Sep 1997 11:30:30 +0100
Message-Id: <l03020902b0469c5866ba@[128.243.31.122]>
To: www-html-editor@w3.org
Hello,

Back in August I sparked a discussion thread on www-html about the addition
of 'headers' and 'footers' for columns [1].  As far as I can see there was
no feedback from any of you, and it was partially swamped with discussion
about horizontal scrolling which distracted from what I was getting at.

The main issue is the asymmetry between how groups of rows and groups of
columns can be marked.  While, with columns, you can only say that the
column is a group, with rows you can say whether those rows contain header
or footer information.  Let me take as an example a diary to record the
times of events during the day.  The table element under the present markup
might look something like:

<TABLE>
<CAPTION>My Diary</CAPTION>
<!-- Column giving time -->
<COLGROUP>
<!-- Columns giving daily events -->
<COLGROUP span="7">
<!-- Column giving time -->
<COLGROUP>
<THEAD>
  <TR>
    <TH>Time
    <TH>Monday
    <TH>Tuesday
    ...
    <TH>Sunday
    <TH>Time
<TFOOT>
  <TR>
    <TD>
    <TH>15 September
    <TH>16 September
    ...
    <TH>21 September
    <TD>
<TBODY>
  <TR>
    <TH>8.00am
    <TD>
    ...
    <TH>8.00am
  <TR>
    <TH>9.00am
    <TD>
    ...
    <TH>9.00am
  ...
</TABLE>

Note that the only way to indicate that anything is special about the
left-most and right-most columns is to put them in a column group.  If the
table were turned through 90 degrees, so that the times went at the top and
the days at the side, it would instead look something like:

<TABLE>
<CAPTION>My Diary</CAPTION>
<!-- Column giving day -->
<COLGROUP>
<!-- Columns giving daily events -->
<COLGROUP span="12">
<!-- Column giving date -->
<COLGROUP>
<THEAD>
  <TR>
    <TH>Day
    <TH>8.00am
    <TH>9.00am
    ...
    <TH>19.00am
    <TH>Date
<TFOOT>
  <TR>
    <TD>
    <TH>8.00am
    <TH>9.00am
    ...
    <TH>19.00am
    <TD>
<TBODY>
  <TR>
    <TH>Monday
    <TD>
    ...
    <TH>15 September
  <TR>
    <TH>Tuesday
    <TD>
    ...
    <TH>16 September
  ...
</TABLE>

Now, logically, exactly the same information can be displayed within a
table whether the rows are rows or columns - the cell contents are all to
do with where they are in the *intersection* between rows and columns.  But
we are only allowed to logically markup the *rows* that act as headers and
footers, and not the *columns* which take on the same roles.

What I proposed were two elements that played a similar role to THEAD and
TFOOT, except for columns rather than rows.  Possible names for these
elements could be:
  COLHEAD & COLFOOT
  TRIGHT & TLEFT
or renaming THEAD & TFOOT to HEAD & FOOT, and using RIGHT & LEFT (suggested
by Neil St. Laurent).

The syntax of these elements would be:

 <!--
 TRIGHT & TLEFT group a set of COL elements. It allows you to group
 several columns together as headers or footers.
 -->
 <!ELEMENT (TRIGHT|TLEFT) - O (col)* -- table column header/footer -->
 <!ATTLIST (TRIGHT|TLEFT)
   %attrs;                          -- %coreattrs, %i18n, %events --
   span        NUMBER     1         -- default number of columns in group --
   width       CDATA      #IMPLIED  -- default width for enclosed COLs --
   %cellhalign;                     -- horizontal alignment in cells --
   %cellvalign;                     -- vertical alignment in cells --
   >

The above example could then be marked up as:

<TABLE>
<CAPTION>My Diary</CAPTION>
<!-- Column giving time -->
<TLEFT>
<!-- Columns giving daily events -->
<COLGROUP span="7">
<!-- Column giving time -->
<TRIGHT>
<THEAD>
  <TR>
    <TH>Time
    <TH>Monday
    <TH>Tuesday
    ...
    <TH>Sunday
    <TH>Time
<TFOOT>
  <TR>
    <TD>
    <TH>15 September
    <TH>16 September
    ...
    <TH>21 September
    <TD>
<TBODY>
  <TR>
    <TH>8.00am
    <TD>
    ...
    <TH>8.00am
  <TR>
    <TH>9.00am
    <TD>
    ...
    <TH>9.00am
  ...
</TABLE>

A positive side-effect of these elements is that the right-most and/or
left-most columns could remain static while the rest of the columns
scrolled, in the same way as the top-most and/or bottom-most rows of tables
might.  This is of particular use for wide tables such as accounting
ledgers, time sheets, experimental data, display of database records and so
on.

There were some arguments against the proposal on the www-html list.
Walter Ian Kaye made the point that horizontal scrolling is harder for the
user than vertical scrolling.  jptxs asked why frames couldn't be used
instead.

However, as I pointed out, frames are an incomplete solution, or there
would be no need for THEAD and TFOOT.  And although I doubt whether
horizontal scrolling is much harder than vertical scrolling anyway, I
believe that it is only so difficult because we lose header information to
the left and right, which would not happen if these were kept static - wide
tables are used anyway, anything which increases their effectiveness and
utility has to be a good thing.

Cheers,

Jeni

[1] http://lists.w3.org/Archives/Public/www-html/1997Aug/0124.html


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/
Received on Thursday, 18 September 1997 06:35:00 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 27 March 2012 18:16:42 GMT