svg-text-alternative-present
<svg> muss eine Textalternative bereitstellen
Prüft, dass Inline-<svg>-Elemente über ein <title>-Element oder einen ARIA-Namen eine Textalternative bereitstellen (ein <desc>-Element allein zählt nicht).
Anwendbarkeit. Gilt für Inline-<svg>-Elemente, die assistiven Technologien bereitgestellt werden UND offenbar etwas vermitteln sollen. „Soll etwas vermitteln“ wird deterministisch angenähert durch mindestens eines der folgenden Merkmale:
- role="img", role="graphics-symbol" oder role="graphics-document" am SVG-Wurzelelement selbst (die Rollen des WAI-ARIA Graphics Module, neben img). Erstreckt sich NICHT auf beliebige Nachfahren mit role="img"/"graphics-symbol"/"graphics-document" innerhalb eines <svg>. Diese Prüfung betrifft nur die <svg>-Wurzel; role-img-text-alternative-present deckt dieselben drei Rollen auf jedem anderen Element ab, auch auf verschachtelten SVG-Formen (das eigene Fehlerbeispiel von ACT 7d6734: eine einfache
<svg>-Wurzel mit einem verschachtelten<circle role="graphics-symbol">). - ein nicht leeres aria-label / aria-labelledby (aria-label="" benennt nichts und signalisiert keine Absicht)
- <title> oder <desc> als direktes Kind vorhanden, an beliebiger Stelle unter den Kindern (SVG-AAM); jeweils das erste zählt (desc allein ist nur ein Signal für die Anwendbarkeit, siehe @expectation)
- fokussierbar/per Tab erreichbar (z. B. tabindex, native Fokussierbarkeit)
Bilder mit role="presentation" oder role="none" sind nur ausgeschlossen, wenn sie nicht fokussierbar sind. Elemente, die ansonsten aus dem Accessibility Tree ausgeblendet sind, bleiben betroffen, wenn sie per Tab fokussierbar sind oder über IDREF-Beziehungen referenziert werden (gemäß den Eignungsprüfungen der Engine).
Erwartung. Jedes betroffene <svg>-Element stellt eine Textalternative bereit über:
- nicht leeren Text in seinem ersten direkten <title>-Kind, an beliebiger Stelle unter den Kindern (ein leeres erstes <title> benennt nichts), ODER
- einen ARIA-Namen (aria-label / aria-labelledby).
Ein <desc>-Element allein genügt NICHT: Laut SVG Accessibility API Mappings §7.1 trägt <desc> immer nur zur zugänglichen BESCHREIBUNG bei, nie zum zugänglichen NAMEN. Ein <svg> mit nur einem <desc> und ohne <title>/ARIA-Namen ist trotzdem „betroffen“ (desc zeigt an, dass die Grafik etwas vermitteln soll), schlägt aber fehl.
Beispiele
<svg role="img"><title>Close</title></svg>
<title> liefert den zugänglichen Namen für ein SVG mit expliziter img-Rolle.
<svg role="img"></svg>
Kein <title> und kein ARIA-Name. Ein <desc> allein würde nicht genügen: Es beschreibt das Bild, benennt es aber nicht.