This is an archived snapshot of W3C's public bugzilla bug tracker, decommissioned in April 2019. Please see the home page for more details.

Bug 24654 - Add definition of ”layout table” and make it equal to tables or role=presentation
Summary: Add definition of ”layout table” and make it equal to tables or role=present...
Status: RESOLVED WORKSFORME
Alias: None
Product: HTML WG
Classification: Unclassified
Component: HTML5 spec (show other bugs)
Version: unspecified
Hardware: PC All
: P2 normal
Target Milestone: ---
Assignee: steve faulkner
QA Contact: HTML WG Bugzilla archive list
URL: http://www.w3.org/html/wg/drafts/html...
Whiteboard:
Keywords: a11y
Depends on:
Blocks:
 
Reported: 2014-02-13 15:41 UTC by Leif Halvard Silli
Modified: 2015-06-05 15:00 UTC (History)
10 users (show)

See Also:


Attachments

Description Leif Halvard Silli 2014-02-13 15:41:05 UTC
PROPOSAL:

  Add a definition of the term ”layout table” and include in the
  definition that it designates table elements whose ARIA role has
  been declared or determined to be "presentation".

    PURPOSE: 

  Avoid that e.g. <table role=grid> is viewed as a ”layout table”,
  which is a real point of confusion (see below).

BACKGROUND:

  This bug has 3 maximes as its starting point:

  1) The spec permits <table> to take role="presentation". 

  2) When the spec uses the term ”layout table”, it designates
     table elements that have - or justifiably could have had
     - role="presentation" applied to them. 

  3) Applying role="presentation" (or using heuristics to determine
     the table to have role=presentation), is a method for of
     *overruling* the table element’s default semantics.

  HOWEVER: Recently there have been various debates in the HTMLWG space where the meaning of ”layout table” was questioned and/or stretched to encompasse any table for which its native ”role” has been - or could have been - overruled. 

See the thread ”revisiting advice in HTML on tables used for layout” <http://lists.w3.org/Archives/Public/public-html/2014Jan/0155.html>, perhaps especially see the comments from Jukka, who also pointed out that there is no definition of the term. Another relevant place to look is the recent reignated debate about the table@border attribute - for instance see some of Andrea Rendine’s remark (the third comment) about use of <table> as a replacement for <dl> in bug 24647 <https://www.w3.org/Bugs/Public/show_bug.cgi?id=24647#c3>.

By this understanding of the term, doing e.g. <table role="grid"> would mean that the table should be seen as a ”layout table”.

From one angle, viewing <table role="grid"> as a “layout table” is very much to the point. However, since what the spec means really are tables of role=presentation, it mostly blurs the discussion to apply the term ”layout table” to every table were its default role has been - or could have been - overruled.

For instance, while most presentational tables should not have borders around its cells (no via CSS and not via @border attribute either), for a table of role=grid, borders - or other kinds of highlighting of the cells - probably makes sense. (Just try a google search for images of ”grid” and see how many ”chess tables” it returns: <https://www.google.no/search?q=grid&client=firefox-a&hs=jCf&rls=org.mozilla:nn-NO:official&channel=fflb&source=lnms&tbm=isch&sa=X&ei=qeT8UvDFCsi_ygPww4CgAQ&ved=0CAkQ_AUoAQ&biw=1680&bih=920>)
Comment 1 alexander surkov 2014-02-13 20:13:56 UTC
layout table and role="presentation" table take different accessibility API mapping, at least in Firefox. I think implementation approaches are out of scope of this bug what means the change cannot be made out of UAIG context.
Comment 2 Leif Halvard Silli 2014-02-13 22:10:39 UTC
(In reply to alexander surkov from comment #1)
> layout table and role="presentation" table take different accessibility API
> mapping, at least in Firefox. I think implementation approaches are out of
> scope of this bug what means the change cannot be made out of UAIG context.

Is it possible to tell more about what layout table maps to in Firefox? Or may be you have a pointer to a documentation of what Firefox does? And is it possible for the user to perceive any difference?

Even if layout tables without the role attribute are not mapped to presentation role, ”maxime” number 2) said that ”layout table” designates tables that, quote ”have - or could have had” role presentation. So there is still, I think, room for a definition of the layout table concept with reference to role="prsentatioN".
Comment 3 steve faulkner 2014-02-14 12:08:39 UTC
"By this understanding of the term, doing e.g. <table role="grid"> would mean that the table should be seen as a ”layout table”."

how so?

"A grid is an interactive control which contains cells of tabular data arranged in rows and columns, like a table."
http://www.w3.org/TR/wai-aria/roles#grid
Comment 4 alexander surkov 2014-02-14 13:07:38 UTC
(In reply to Leif Halvard Silli from comment #2)
> (In reply to alexander surkov from comment #1)
> > layout table and role="presentation" table take different accessibility API
> > mapping, at least in Firefox. I think implementation approaches are out of
> > scope of this bug what means the change cannot be made out of UAIG context.
> 
> Is it possible to tell more about what layout table maps to in Firefox? Or
> may be you have a pointer to a documentation of what Firefox does?

It is exposed as "layout-guess:true" object attribute, role="presentation" is exposed as UAIG requires

> And is it
> possible for the user to perceive any difference?

technically, depending on AT implementation.

> Even if layout tables without the role attribute are not mapped to
> presentation role, ”maxime” number 2) said that ”layout table” designates
> tables that, quote ”have - or could have had” role presentation. So there is
> still, I think, room for a definition of the layout table concept with
> reference to role="prsentatioN".

Note, I'm not against that these cases should be mapped same way. My point is this change shouldn't be done out of UAIG context and browser implementations.
Comment 5 Leif Halvard Silli 2014-02-14 22:42:09 UTC
(In reply to steve faulkner from comment #3)
> "By this understanding

I don’t suggest that <table role="grid"> *should* be included in HTML5’s definitin of ”layout table”. ON the contrary. But neverhteless, some apparenlty do view it that way, and I think they have a point. Therefore we need to specify in which sence we use the term ”layout table”. May be the solution could so so simple as to replace ”layout table” with ”page layout table”.

The term ”layout table” is strongly linked to the era when tables was *the* method for creating *page* layout. As tables fall out of fashion for page layout, and other (mis)uses of html tables develops, it becomes less and less evident that ”layout table” refers to ”page layout tables”.

> of the term, doing e.g. <table role="grid"> would
> mean that the table should be seen as a ”layout table”."
> 
> how so?

Does it help to point out that there is
 1) a spec called ”CSS Grid Layout Module Level 1”, 
    which governs page layout?
 2) many CSS frameworks that takes care of page layout
    grids. (And note how the CSS grid language
    talks about rows and colums, e.g. see http://960.gs

> "A grid is an interactive control which contains cells of tabular data
> arranged in rows and columns, like a table."
> http://www.w3.org/TR/wai-aria/roles#grid

If layout tables really should be called ”page layout tables” then the above quote speaks about ”grid layout tables”. Both page and grid layout tables uses html tables for something other than its original purpose. (Allthough, admittedly, <table role=grid> might be closer to the original purpose than <table class=pagelayout> is.)

”Layout” it not a concept that is only linked to pages - <http://en.wikipedia.org/wiki/Layout>.

The difference between <table role=presentation class=pageLayout> and  <table role=grid> is that the latter is interactive and probably only makes up a smaller section of the page, whereas the former keeps the entire page.

Instead of <table role=grid> one could do <div role="grid">. Instead of <table role=prentation class=pagelayout> could could create page grids by applying the CSS to <html>, <body> and other non-table elements.  The reason behind the choice of table for a grid (<table role="grid">) is the same as the reason behind the choice of table for page layout: It is practical. It is simple. HTML tables alrady provides much of the structure one needs. What HTML tables does not provide is the correct semantics. This the same for ”page layout tables” and ”grid layout tables”.
Comment 6 Leif Halvard Silli 2014-02-14 23:46:08 UTC
If we have ”page layout tables” in mind, then there are actually two kinds of such layout tables:

1) There are the ”semantic” layout tables which simply uses such tables to create page columns - for example a 3 column page, perhaps with a footer and header as well.

2) And then there are the positioning tables, which uses tables as a method for positioning other objects. In this sceneriao tables replaces CSS position="absolute" and/or position="relative". This method has much in common with using tables to crate images - where each cell is one pixel, and all the pixels make up a image.

I don’t know if is important to separate the two, however.