Re: launching the IG review

> TABLE     Making TABLEs comprehensible

Here is my cut at describing accessibility for tables:

Today HTML pages use tables for two purposes: to layout
pages, and to present tabular information. Both uses present
accessibility problems.

When tables are being used purely for visual layout, the issue
is mainly one of reading order. This can perhaps be dealt with via
style sheets and is being described in greater detail in another
message. This message will focus on how to improve the browsing
experience for tabular information.

Tabular information generally consists of headers and data. Imagine
using a speech-based browser to examine a table designed for visual
browsers. If there are more than just a few cells it will be easy to
forget the headers as you move from cell to cell. If there was some
way of knowing which headers are appropriate to this cell, then
perhaps you could ask for these headers to be spoken, either on
request, or automatically when you move to a new cell. This will
work much better if the author has been so kind as to provide
abbreviations for headers.

Table captions are generally chosen in the knowledge that most
users will be able to glance quickly at the table contents. The
caption therefore is quite brief. It would be useful if authors
were to provide a supplemental summary of the table's structure
and purpose for use with non-visual media such as speech and
Braille. HTML 4.0 therefore proposes to add a new attribute named
naturally enough, "summary". This attribute will be on the table
element so it can be provided even when there is no caption.

The proposals for specifying which headers are relevant to each
cell are designed to allow these headers to be grouped and for
these groups to be ranked. This is intended to give implementors
the freedom to treat the table as a hierarchy that is independent
of the visual layout chosen for windows based browsers. The idea
is to allow large and complex tables to be browsed in a similar
way to browsing file system directories, with the ability to
hide or expose levels of detail.

The scope attribute allows authors to state whether a given header
applies to the current row, column, row group or column group.
This takes advantage of new table features in HTML 4.0 for
specifying column properties and for grouping rows and columns.
Scope works well for most simple tables. Here is an example taken
from the latest draft of HTML 4.0:

 <TABLE summary="History courses in Bath arranged by course name, 
                  tutor, summary, code and fee">
  <TR>
    <TH colspan="5" scope="colgroup">Community Courses -
       Bath Autumn 1997</TH>
  </TR>
  <TR>
    <TH scope="col" abbr="Name">Course Name</TH>
    <TH scope="col" abbr="Tutor">Course Tutor</TH>
    <TH scope="col">Summary</TH>
    <TH scope="col">Code</TH>
    <TH scope="col">Fee</TH>
  </TR>

The summary attribute is used to summarise the role and structure
of the table:

   "History courses in Bath arranged by course name, 
    tutor, summary, code and fee"

Each row is represented by the TR element. The first row contains
column headers. These are marked up using the TH element, each of
which has scope="col" to indicate its role as a column header.
The abbr attribute is used to provide an abbreviation for longer
headers.

The next row is marked up as:

  <TR>
    <TD scope="row">After the Civil War</TD>
    <TD>Dr John Wroughton</TD>
    <TD>
       The course will examine the turbulent years in England
       after 1646. <EM>6 weekly meetings starting Monday 13th
      October.</EM>
    </TD>
    <TD>H27</TD>
    <TD>&pound;32</TD>
  </TR>

The TD element is used to markup each data cell. The first cell
in the column gives the course name. Since this is considered
to be helpful when browsing subsequent cells in the row, it has
been marked up with the scope attribute, this time with scope=row
to indicate that its relevant to the rest of the current row.

The scope attribute is of limited generality. For cases where
it breaks down, we propose an attribute called "axes" that is
used to list the ID's of all relevant headers. The name is based
upon the idea of thinking of tabular data in terms of values
at points in an n-dimensional space. The headers then form
marks along the axes of this space. An attribute called "axis"
is used to supply a name indicating which axis a given header
belongs.  Scope and axes are interelated and implementors are
likely to map them both into the same internal model of which
headers are relevant to each cell.

Finally, there is interest in being able to associate tables
with meta-information that describe richer semantics about
the table.

Regards,

-- Dave Raggett <dsr@w3.org> http://www.w3.org/People/Raggett
phone: +44 122 578 2984 (or 2521) +44 385 320 444 (gsm mobile)
World Wide Web Consortium (on assignment from HP Labs)

Received on Wednesday, 15 October 1997 13:42:30 UTC