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=table
attribute havingaria-describedby
attribute. - For an HTML5 page, all
<table>
having<caption>
child tag. - For a non-HTML5 page (HTML4, XHTML1, …), all
<table>
havingsummary
attribute.
“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 ?
Notes techniques (5.1)
La spécification HTML propose plusieurs méthodes pour lier un résumé à un tableau (tableau lié à un passage de texte avec l’attribut
aria-describedby
, tableau groupé dans un élémentfigure
avec un résumé présent dans un élémentfigcaption
ou un élémentp
, résumé présent dans un élémentdetails
contenu dans l’élémentcaption
). Ces méthodes n’ont pas un support suffisant pour être utilisées actuellement.
Level
A
Technical description
Scope
Page
Decision level
Decidable with marker
Algorithm
Selection
Set1
All elements:
- with
role="table"
attribute - with
aria-describedby
attribute
[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-describedby
attribute
[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-describedby
attribute 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:
summary
attribute 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=table
attribute). - If markers are used: the page has no array (a
<table>
tag or an element with therole=table
attribute) 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=table
attribute) has noaria-describedby
attribute. - 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 nosummary
attribute.
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=table
attribute have anaria-describedby
attribute. - For an HTML5 page, all
<table>
have<caption>
child tag. - For a non-HTML5 page (HTML4, XHTML1, …), all
<table>
have asummary
attribute.
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:
class
id
role