svg-text-alternative-present
<svg> doit fournir une alternative textuelle
Vérifie que les éléments <svg> en ligne fournissent une alternative textuelle au moyen d’un élément <title> ou d’un nom ARIA (un élément <desc> seul ne suffit pas).
Applicabilité. S’applique aux éléments <svg> en ligne exposés aux technologies d’assistance ET qui semblent destinés à transmettre une information. « Destiné à transmettre une information » est approché de façon déterministe par au moins l’un des critères suivants :
- role="img", role="graphics-symbol" ou role="graphics-document" sur l’élément racine SVG lui-même (les rôles du WAI-ARIA Graphics Module, en plus de img). Cela ne s’étend PAS à n’importe quel descendant role="img"/"graphics-symbol"/"graphics-document" imbriqué dans un <svg>. Le périmètre de cette vérification se limite à la racine <svg> ; role-img-text-alternative-present couvre ces trois mêmes rôles sur tout autre élément, y compris les formes SVG imbriquées (l’exemple en échec d’ACT 7d6734 lui-même : une racine
<svg>nue contenant un<circle role="graphics-symbol">imbriqué). - un aria-label / aria-labelledby non vide (aria-label="" ne nomme rien et ne signale aucune intention)
- présence de <title> ou <desc> comme enfant direct, quelle que soit sa position parmi les enfants (SVG-AAM) ; le premier de chacun compte (desc seul n’est qu’un signal d’applicabilité, voir @expectation)
- focalisable/atteignable par tabulation (par ex. tabindex, focalisabilité native)
Les images avec role="presentation" ou role="none" ne sont exclues que si elles ne sont pas focalisables. Les éléments autrement masqués de l’arbre d’accessibilité restent applicables s’ils sont focalisables par tabulation ou référencés par des relations IDREF (selon les vérifications d’éligibilité du moteur).
Attendu. Chaque élément <svg> applicable fournit une alternative textuelle au moyen :
- d’un texte non vide dans son premier <title> enfant direct, quelle que soit sa position parmi les enfants (un premier <title> vide ne nomme rien), OU
- d’un nom ARIA (aria-label / aria-labelledby).
Un élément <desc> seul ne suffit PAS : d’après la spécification SVG Accessibility API Mappings, §7.1, <desc> ne contribue jamais qu’à la DESCRIPTION accessible, jamais au NOM accessible. Un <svg> doté seulement d’un <desc>, sans <title> ni nom ARIA, reste « applicable » (desc signale une intention de l’auteur) mais échoue.
Exemples
<svg role="img"><title>Close</title></svg>
<title> fournit le nom accessible d’un SVG doté d’un rôle img explicite.
<svg role="img"></svg>
Ni <title> ni nom ARIA. Un <desc> seul ne suffirait pas : il décrit l’image, il ne la nomme pas.