Rule 9.2.1
Summary
Check for HTML5 pages, if the page contains:
- one and only one
<main>tag withouthiddenattribute. - at least one
<header>tag, except<header>that is direct child of<article>and<section>tags. - at least one
<footer>tag, except<footer>that is direct child of<article>and<section>tags. - at least one
<nav>tag.
A manual check is necessary to control the use of the different tags (<main>, <nav>, <footer> and <header>)
according to this rule.
Business description
Criterion
Test
Description
Dans chaque page web, la structure du document vérifie-t-elle ces conditions (hors cas particuliers) ?
- La zone d’en-tête de la page est structurée via une balise
<header>.- Les zones de navigation principales et secondaires sont structurées via une balise
<nav>.- La balise
<nav>est réservée à la structuration des zones de navigation principales et secondaires.- La zone de contenu principal est structurée via une balise
<main>.- La structure du document utilise une balise
<main>visible unique.- La zone de pied de page est structurée via une balise
<footer>.
Particular cases (criterion 9.2)
Lorsque le doctype déclaré dans la page n’est pas le doctype HTML5, ce critère est non applicable.
Technical notes (criterion 9.2)
La balise
<main>peut être utilisée plusieurs fois dans le même document HTML. Néanmoins, il ne peut y avoir en permanence qu’une seule balise visible et lisible par les technologies d’assistances, les autres devant disposer d’un attributhiddenou d’un style permettant de les masquer aux technologies d’assistances. A noter cependant que l’utilisation d’un style seul restera insuffisant pour assurer l’unicité d’une balise<main>visible en cas de désactivation des feuilles de styles.
Level
A
Technical description
Scope
Page
Decision level
Semi-Decidable
Algorithm
Selection
Set1
All the <nav> tags.
CSS selector :
navSet2
All the <main> tags without hidden attribute.
CSS selector :
main:not([hidden])Set3
All the <header> tags, except <header> that is direct child of <article> and <section> tags.
CSS selector :
*:not(article):not(section) > headerSet4
All the <footer> tags, except <footer> that is direct child of <article> and <section> tags.
CSS selector :
*:not(article):not(section) > footerProcess
Tests
Test0
Test whether the page has a doctype that is not an HTML5 doctype:
- If yes, raise a MessageA.
- If no, launch Test1, Test2, Test3 and Test4.
Test1
Test emptiness of Set1.
- If empty, raise a MessageB.
- If not empty, raise a MessageC.
Test2
Test whether Set2 is not empty and contains only one element.
- If empty, raise a MessageD.
- If not empty but contains multiple element, raise a MessageE.
- Else raise a MessageC.
Test3
Test emptiness of Set3.
- If empty, raise a MessageF.
- If not empty, raise a MessageC.
Test4
Test emptiness of Set4.
- If empty, raise a MessageG.
- If not empty, raise a MessageC.
Messages
MessageA : Not Applicable
- status: Not Applicable
MessageB : <nav> tag is missing
- code : NavElementMissing
- status: Failed
- present in source: no
MessageC : Check manually the elements of the scope
- code: ManualCheckOnElements
- status: Pre-qualified
- parameter: snippet
- present in source: yes
MessageD : <main> tag is missing
- code : NavElementMissing
- status: Failed
- present in source: no
MessageE : multiple <main> tags
- code : MainElementNotUnique
- status: Failed
- parameter: snippet
- present in source: yes
MessageF : <header> tag is missing
- code : HeaderElementMissing
- status: Failed
- present in source: no
MessageG : <footer> tag is missing
- code : FooterElementMissing
- status: Failed
- present in source: no
Analysis
Not Applicable
- The page has a
doctypethat is not an HTML5doctype.
Failed
- multiple
<main>tags withouthiddenattribute are found - OR missing
<main>tag - OR missing
<header>tag - OR missing
<footer>tag - OR missing
<nav>tag
Pre-qualified
In all other cases