Rule 5.1.1
Summary ====================================================================
This tests consists in checking all “complex table” (<table> tags and elements with role=table attribute):
- All element with
role=tableattribute havingaria-describedbyattribute. - For an HTML5 page, all
<table>having<caption>child tag. - For a non-HTML5 page (HTML4, XHTML1, …), all
<table>havingsummaryattribute.
“Complex table” may be characterized by HTML markers (see Notes for details about detection through markers). When tables cannot be characterized, the test is applied but the result is semi-decidable.
Business description =======================================================
Criterion
Test
Description
Pour chaque tableau de données complexe un résumé est-il disponible ?
Level
A
Technical description ======================================================
Scope
Page
Decision level
Decidable with marker
Algorithm ==================================================================
Selection —————————————————————–
Set1
All elements:
- with
role="table"attribute - with
aria-describedbyattribute
[role=table][aria-describedby]Set2
All the elements of Set1 identified as complex table by marker usage (see Notes for details about detection through marker).
Set3
All the elements of Set1 identified neither as complex table, nor as data table, nor as presentation table by marker usage (see Notes for details about detection through marker).
Set4
All elements:
- with
role="table"attribute - without
aria-describedbyattribute
[role=table]:not([aria-describedby])Set5
All the elements of Set4 identified as complex table by marker usage (see Notes for details about detection through marker).
Set6
All the elements of Set4 identified neither as complex table, nor as data table, nor as presentation table by marker usage (see Notes for details about detection through marker).
Set7
For HTML5 page, all table elements with a <caption> child element
table:has(caption)Set8
All the elements of Set7 identified as complex table by marker usage (see Notes for details about detection through marker).
Set9
All the elements of Set7 identified neither as complex table, nor as data table, nor as presentation table by marker usage (see Notes for details about detection through marker).
Set10
For HTML5 page, all table elements without a <caption> child element
table:not(:has(caption))Set11
All the elements of Set10 identified as complex table by marker usage (see Notes for details about detection through marker).
Set12
All the elements of Set10 identified neither as complex table, nor as data table, nor as presentation table by marker usage (see Notes for details about detection through marker).
Set13
For HTML4 page (a non-HTML5 page: HTML4, XHTML1, …), all table elements with a summary attribute.
table[summary]Set14
All the elements of Set13 identified as complex table by marker usage (see Notes for details about detection through marker).
Set15
All the elements of Set13 identified neither as complex table, nor as data table, nor as presentation table by marker usage (see Notes for details about detection through marker).
Set16
For HTML4 page (a non-HTML5 page: HTML4, XHTML1, …), all table elements without a summary attribute.
table:not([summary])Set17
All the elements of Set16 identified as complex table by marker usage (see Notes for details about detection through marker).
Set18
All the elements of Set16 identified neither as complex table, nor as data table, nor as presentation table by marker usage (see Notes for details about detection through marker).
Process ——————————————————————-
Tests
Tests 1
If Set2 is not empty, for each occurrence of Set1 raise a MessageA.
Tests 2
If Set3 is not empty, for each occurrence of Set3 raise a MessageB.
Tests 3
If Set5 is not empty, for each occurrence of Set5 raise a MessageC.
Tests 4
If Set6 is not empty, for each occurrence of Set6 raise a MessageD.
Tests 5
If Set8 is not empty, for each occurrence of Set1 raise a MessageA.
Tests 6
If Set9 is not empty, for each occurrence of Set9 raise a MessageE.
Tests 7
If Set11 is not empty, for each occurrence of Set11 raise a MessageF.
Tests 8
If Set12 is not empty, for each occurrence of Set12 raise a MessageG.
Tests 9
If Set14 is not empty, for each occurrence of Set14 raise a MessageA.
Tests 10
If Set15 is not empty, for each occurrence of Set15 raise a MessageH.
Tests 11
If Set17 is not empty, for each occurrence of Set17 raise a MessageI.
Tests 12
If Set18 is not empty, for each occurrence of Set18 raise a MessageJ.
———————–;
Messages
MessageA
- status: Passed
- parameter: Snippet
- present in source: yes
MessageB: Check element, with role=table and aria-describedby attributes, is a complex table
- code: CheckTableRoleWithAriaDescribedbyIsComplex
- status: Pre-Qualified
- parameter:
aria-describedbyattribute and snippet - present in source: yes
MessageC: aria-describedby attribute is missing on complex table (element with role=table)
- code: AriaDescribedbyMissingOnComplexTableRole
- status: Failed
- parameter: Snippet
- present in source: yes
MessageD: Check element, with role=table attribute and without aria-describedby attribute, is not a complex table
- code: CheckTableRoleWithoutAriaDescribedbyIsNotComplex
- status: Pre-Qualified
- parameter: Snippet
- present in source: yes
MessageE: Check table with a <caption> child is a complex table
- code: CheckTableWithCaptionChildElementIsComplex
- status: Pre-Qualified
- parameter: Snippet
- present in source: yes
MessageF: <caption> child is missing on complex table
- code: CaptionMissingOnComplexTable
- status: Failed
- parameter: Snippet
- present in source: yes
MessageG: Check table without <caption> child is not a complex table
- code: CheckTableWithoutCaptionChildElementIsNotComplex
- status: Pre-Qualified
- parameter: Snippet
- present in source: yes
MessageH: Check table with a summary attribute is a complex table
- code: CheckTableWithSummaryIsComplex
- status: Pre-Qualified
- parameter:
summaryattribute and snippet - present in source: yes
MessageI: summary attribute is missing on complex tables
- code: SummaryMissingOnComplexTable
- status: Failed
- parameter: Snippet
- present in source: yes
MessageJ: Check table without summary attribute is not a complex table
- code: CheckTableWithoutSummaryIsNotComplex
- status: Pre-Qualified
- parameter: Snippet
- present in source: yes
Analysis ——————————————————————
Not Applicable
Set1, Set4, Set7, Set10, Set13 and Set16 are empty
- If the markers are not used: the page has no array (
<table>tag or element withrole=tableattribute). - If markers are used: the page has no array (a
<table>tag or an element with therole=tableattribute) identified as a complex array.
(see Notes for details about detection through marker)
Failed
Requires the use of the “complex table” marker. (see Notes for details about detection through marker)
If one of the following conditions is met:
- At least one complex table (element with
role=tableattribute) has noaria-describedbyattribute. - For an HTML5 page, at least one complex
<table>has no<caption>child tag. - For a non-HTML5 page (HTML4, XHTML1, …), at least one complex
<table>has nosummaryattribute.
Set5, Set11 or Set17 are not empty.
Passed
Requires the use of the “complex table” marker. (see Notes for details about detection through marker)
All of the following conditions are required:
- All tables of the page are identified as complex tables
- All element with
role=tableattribute have anaria-describedbyattribute. - For an HTML5 page, all
<table>have<caption>child tag. - For a non-HTML5 page (HTML4, XHTML1, …), all
<table>have asummaryattribute.
Which means (all of the following conditions are necessary):
- Set2, Set8 or Set14 are not empty.
- Set5, Set11 and Set17 are empty.
- Set3, Set6, Set9, Set12, Set15 and Set18 are empty.
Pre-qualified
In all other cases
Notes ======================================================================
non-HTML5 page (HTML4, XHTML1, …)
For non-HTML5 page (HTML4, XHTML1, …), we only take into account the summary attribute.
Markers
Web developer or content editor can explicitly define the nature of a table by adding a special value in an HTML attribute. This is what we call markers
- Complex table markers can be set through the COMPLEX_TABLE_MARKER parameter.
- Data table markers can be set through the DATA_TABLE_MARKER parameter.
- Presentation table markers can be set through the PRESENTATION_TABLE_MARKER parameter.
The value(s) passed as marker(s) will be checked against the following attributes:
classidrole