Re: survey of TABLE issues

On Fri, 10 Oct 1997, Al Gilman wrote:

> The biggest area of confusion has to do with how one finds the
> other cells related to one "anchor" cell needed to provide a 
> complete statement of what the "anchor" cell tells you.  
> Dave feels the AXIS/AXES markup does this.  I am still not
> sure.  

The axes attribute allows you to identify all headers that
relate to each cell. The headers needn't be in obvious
positions relative to the cell, neither is it critical
that all headers are marked up with TH while all data cells
are marked up with TD.

> There is a representative of the list-of-records table at

This example shows how some people are using TD cells for headers,
presumably for cosmetic reasons. Although quite why the table is so
wide beats me. It also has multiple BODY elements (illegal) and META
elements within BODY (illegal). In short, thoroughly typical of
commercial content today! 

  Caption: Public News Servers sorted by Group Gount

  Summary: For each news server: the number of groups, transfer
           speed, highest message count, whether posting is allowed
           and when the site was "discovered".

  Heading abbreviations:

           Server, Groups, Speed, Count, Posting, Discovered

The TD's in the 1st row that act as column headers could be marked
up as:

    <td scope=col>Server</td>
    <td scope=col>Groups</td>
    <td scope=col>Speed</td>
    <td scope=col abbr=Count>Highest Message Count</td>
    <td scope=col>Posting</td>
    <td scope=col abbr=Discovered>First Discovered</td>

Here the scope attribute serves to indicate that the TD cell
is acting as a column header.

The name of the server is perhaps more important than the other
columns. It may therefore be appropriate to treat it as a
subheader for each row, e.g.

    <td scope=row>
      <a href="news://"></a>
    <td>98528 in</td>

Note that this preserves the hierarchy since the cell "Server"
in the 1st row covers all of the server names, which in turn
cover the cells in each row. The hierarchy isn't a tree since
cells such as "yes" are covered by two headers:

    Server                   Posting
      |                        |
      V                        V  ---> "yes"

The use of scope is directly equivalent to using axes but
saves considerable space in the markup. Scope isn't as
general as axes and hence we need both to cater for more
tricky tables.

In theory we could offer a TABLE attribute that is equivalent
to setting scope or axes on the cells. My feeling is that
this is better handled by authoring tools via templates.
Something that people are already comfortable with. The
authoring tools could also employ simple heuristics to decide
when to prompt authors for abbreviations, e.g. if a header
has more than one word.

The remaining questions in my mind include:

  a) Do we need a way to specify an explicit ordering
     of headers or will an implicit mechanism suffice

     This could be an attribute in TABLE listing the
     set of axes in order of importance. The order is
     used to form the axes into a hierarchy. I have
     yet to find a convincing example that this is
     needed, but am sure one exists.

  b) Do we need a way to link to meta-data describing
     how the table was generated, and how to write it
     out to a database etc.

     This could be as simple as a URL in the TABLE
     element, and would be similar in concept to the
     cite attribute for BLOCKQUOTE and Q.

> For the record, there is another table I want in the evidence.
> This is found at

I couldn't get this to work -- DNS timeout on the host name.


-- Dave 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 Friday, 10 October 1997 09:48:51 UTC