This is an archived snapshot of W3C's public bugzilla bug tracker, decommissioned in April 2019. Please see the home page for more details.
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>)
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.
(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".
"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
(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.
(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”.
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.