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 7260 - Create testsuite for table headers association
Summary: Create testsuite for table headers association
Status: RESOLVED WORKSFORME
Alias: None
Product: HTML WG
Classification: Unclassified
Component: testsuite (show other bugs)
Version: unspecified
Hardware: PC Linux
: P2 normal
Target Milestone: ---
Assignee: kkrueger
QA Contact: HTML WG Bugzilla archive list
URL:
Whiteboard:
Keywords: a11y, a11y_table_headers, NE
Depends on:
Blocks:
 
Reported: 2009-08-11 13:31 UTC by James Graham
Modified: 2016-03-03 15:50 UTC (History)
6 users (show)

See Also:


Attachments

Description James Graham 2009-08-11 13:31:28 UTC
A conformance testsuite is needed for the table headers section of the specification. This should check that tools can identify the correct header cells for a given data cell and / or check that tools can identify all the data cells that a particular header cell applies to.

http://lists.w3.org/Archives/Public/public-html/2009Apr/0220.html
Comment 1 kkrueger 2009-11-18 16:39:10 UTC
taking ownership from 'dave.null'
Comment 2 Michael Cooper 2010-02-11 17:26:24 UTC
Per the proposal at http://lists.w3.org/Archives/Public/public-html-a11y/2010Jan/0245.html, the HTML A11Y TF does not plan to formally work on this issue at this time. This does not mean the TF has no interest in it, but does not have immediate plans to work on it. The TF may review the issue in the future.
Comment 3 Pierre Dubois 2012-09-20 14:26:33 UTC
(In reply to comment #0)
> A conformance testsuite is needed for the table headers section of the
> specification. This should check that tools can identify the correct header
> cells for a given data cell and / or check that tools can identify all the data
> cells that a particular header cell applies to.
> 
> http://lists.w3.org/Archives/Public/public-html/2009Apr/0220.html


Hi,

What about this HTML Table Validator tools : http://wet-boew.github.com/wet-boew/demos/tableparser/validator-htmltable.html

That table validation is only based on the tabular markup. Having scope and/or existing headers attribute would have no effect on the result. It show tabular markup error message. And would generate an HTML Table version with new value for the headers attribute based on the concept explained bellow with the Table Usability Concept. 


If you are looking for HTML table examples with different structure, the techniques (currently in draft, WCAG 2.0 Style) below contains severals good and bad example. 

* Defining a Key Cell (http://wet-boew.github.com/wet-boew/demos/tableparser/keycell-techniques.html)
* Defining a Data Row Group (http://wet-boew.github.com/wet-boew/demos/tableparser/rowgrouping-techniques.html)
* Summaries a Data Row Group (http://wet-boew.github.com/wet-boew/demos/tableparser/summariesrowgroup-techniques.html)
* Structuring the Header Row (http://wet-boew.github.com/wet-boew/demos/tableparser/headerrowgroupstructure-techniques.html)
* Describing a Row Header Cell (http://wet-boew.github.com/wet-boew/demos/tableparser/rowheader-description-techniques.html)
* Describing a Row Group Header Cell (http://wet-boew.github.com/wet-boew/demos/tableparser/rowgroupheader-description-techniques.html)
* Defining Column Group Header (http://wet-boew.github.com/wet-boew/demos/tableparser/colgroupheader-techniques.html)
* Structuring the Header Column Cell (http://wet-boew.github.com/wet-boew/demos/tableparser/headercolgroupstructure-techniques.html)
* Defining a Data Column Group (http://wet-boew.github.com/wet-boew/demos/tableparser/datacolgroup-techniques.html)
* Summaries a Data Column Group (http://wet-boew.github.com/wet-boew/demos/tableparser/colgroupsummary-techniques.html)
* Describing a Column Header Cell (http://wet-boew.github.com/wet-boew/demos/tableparser/colheader-description-techniques.html)
* Defining a Layout Cell (http://wet-boew.github.com/wet-boew/demos/tableparser/layoutcell-techniques.html)



-----


HTML Table Usability Concept 
(https://github.com/duboisp/Table-Usability-Concept)

- Element Type -

* Informative: The informative element is related to the visual look of the table. In the HTML the table informative element are: caption, th, td
* Structural: A structural element is used to classify and give a particular sementic to the informative element and their styling would affect the informative element associated to them. In the HTML the table structural element are: table, colgroup, col, thead, tbody, tfoot, tr.


- Element Classification -

The Informative and Structural element are classified in forth category

* Matrix: The matrix is the global container for a givin table. The matrix have a reference to all the group, all the vector and all the cell. The table HTML element is used to represent the matrix.
* Group: A group is a data-set or a header-set inside a table. A group is normally represented by a cell header (th). The colgroup, thead, tbody, tfoot is used to represent each group. Here, the grouping concept is related but not directly associated to the visual representation of the data inside the table. Special note regarding the attribute scope: With this concept of element grouping, I recommend to do not set the scope attribute because a summary row group may don't have a representive header and this create inconsistancy in the table structure.
* Vector: A vector is the linear representation of the table as per his column and row. The col and row is used to represent a vector.
* Cell: A cell is a visual element in a table. The caption, th and td is used to represent a cell.


- Element Category -

The category is use to give a particular sementic to a classified element.

* Header: Basicly used to represent a header cell (th) and a header row group (thead), this concept is applied to the Group, Vector and Cell classification.
* Data: Basicly used to represent a data cell (td), this concept is applied to the Group, Vector and Cell
* Summary: Always preceded by a "Data", the summary category is determined on how the group and the cell is defined in a table. The tfoot element belong in the summary category.
* Key: Similar to a primary key in a relational database, the key cell can only be defined for a row (Vector). The header cell associated is alway next to the key cell. Generally the key is not to intended to provide actual data but to provide a faster access to the data or to give a unique name for a cell header as reference. It's important that the key cell have the same width and height of his assoicated cell header.
* Description: Used to provide additional information for a cell header. The description are not part of the actual tabular data. The description help to understand the cell header and/or provide additional information about the Vector. For a row (Vector), the cell description is next to the cell header for witch is providing a description. For a column (Vector), the cell description is directly bellow the cell header in the next row. It's important that the cell description have the same width and height of his assoicated cell header.
* Layout: Only applicable to a cell, a layout cell don't provide any information. His location can only be at the intersection of two header group or at the insection of two summary group. His width and height need to correspond to the group intersection. Also to be considerated as a layout cell, the element th, td identified at the intersection need to be an empty tag.


- Combinaison of Element Classification with the Element Category -

* Header Group: Represent a set of heading. In a row perpective this are represented by the thead element. In a column perpective this are represented by the first colgroup element. The key and the description is defined in the header group.
* Data Group: Represent a data set. In a row perpective this are represented by the tbody element. In a column perpective this are represented by the first colgroup element if no column header group, Or by the second colgroup if a column header group exist. A table always have at least one data group for the column and one data group for the row. A Data Group can be represented by a group header cell.
* Summary Group: Often smaller than his associated data group, the summary group include all the vector that show information like sub-total, total. The summary group share with his associated data group the same group header cell. However, it's possible, for a summary to do not share a group header cell with a data group. In this particular case the summary is set at the level 0 and no other group is allowed after.
* Header Vector: A row or a column that is last cell is a header cell.
* Data Vector: A row or a column that is last cell is a data cell. The only exception is a vector contained inside a header group, that define the concept of the key and description cell.
* Summary Vector: Similar to a data vector but defined inside a summary group.
* Key Vector: Only defined inside a column header group, the key vector is simply the column of key cell.
* Description Vector: Only defined inside a header group, the description vector represent the column or/and the row that is used to describe a cell header.
* Header Cell: Represent a group or a vector. The table caption and th element is considerated to be header cell.
* Group Header Cell: Derivated from a header cell, a group header cell represent a data group or a combinaison of a data group with a summary group. The table caption is considerated to be a group header cell.
* Data Cell: Defined inside a data group and represented by the td element.
* Summary Cell: Defined inside a summary group and represented by the td element.
* Key Cell: His relation is defined by the column header group. Similar to a primary key in a relational database, the key cell can only be defined for a row (Vector). The header cell associated is alway next to the key cell. Generally the key is not to intended to provide actual data but to provide a faster access to the data or to give a unique name for a cell header as reference. It's important that the key cell have the same width and height of his assoicated cell header.
* Description Cell: His relation is defined by the header group. Used to provide additional information for a cell header. The description category is not a data but help to understand the cell header and/or provide additional information about the Vector. For a row (Vector), the cell description is next to the cell header that his providing a description. For a column (Vector), the cell description is directly bellow the cell header in the next row. It's important that the cell description have the same width and height of his assoicated cell header.
* Layout Cell: A layout cell don't provide any information. A layout cell need to be empty tag without any spaces inside. His location can only be at the intersection of the header group or at the insection of summary group. His width and height need to correspond to the group intersection. The layout cell can be a th or a td element.

:-)
Comment 4 Pierre Dubois 2012-10-01 19:14:06 UTC
See my proposal about the Table Usability Concept here: http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2012-September/037475.html

:-)
Comment 5 Charles McCathieNevile 2016-03-03 15:50:21 UTC
LĂ©onie and JF both believe that in practice this works. Maybe there is a test case somewhere, but no known problems