- From: Leif Halvard Silli <xn--mlform-iua@xn--mlform-iua.no>
- Date: Thu, 31 Mar 2011 04:12:43 +0200
- To: HTMLWG WG <public-html@w3.org>
This letter is a reference for my (not yet finished) reply in the poll
[1][2] about how @role=presentation, @title, @aria-labelledby (as well
as @aria-describedby and @aria-label) impact on the validity of an
<img> element.
Validity map:
Hereby is offered a role based validity map, tested in ARIA supporting
AT, which also takes into account that presentational images should not
"show up" with author supplied or UA supplied fallback repair when/if
images for some reason isn't displayed or enabled. (Thus validity of
<img> should not only be about accessibility.) Non-empty @alt is taken
literally: whitespace count as @alt, as specced by HTML5. In case of
whitespace in @alt, AT will look for alternate text in @title or in
@aria-* (according to my tests in VoiceOver).
* General:
1. some attributes asked about in the poll impact the <img>'s
role, which in turn sets validity requirements.
2. A basic requirement should be that @alt reflects the role:
- role=presentation implies empty @alt,
- role=img implies non-empty @alt
- only if nothing else sets the role does @alt itself set it
NOTE: VoiceOver works like that: It doesn't ignore <img> with
empty alt in combination with non-empty @title. Such an
image is also not considered presentational by sighted.
NOTE: white-space according to HTML5 equals a non-empty @alt.
3. an <img> which defaults to img role because nothing else
implicitly or explicitly sets the role, is invalid:
- with no-alt, the element defaults to img role, as long
as nothing else explicitly or implicitly sets its role.
* How role should be applied - overview. Value implies weight.
2. Explicit role declaration
1. Implicit role declaration
0. Defaulting to role img (invalid)
* How role should be applied - in detail. Value implies weight.
2. Explicit role declaration (always takes precedence)
* presentation (role) is considered explicitly declared
a. if parent has role:childrenArePresentational (ARIA 1.0)
b. when <img> has @role=presentation
* img (role) is explicitly declared
c. if <img> has @role=img and 2a isn't the case either;
1. Implicit role declaration (in lack of explicit role)
* img (role) is implied by the presence of:
a. a non-empty @alt
b. a non-empty @title
c. a @longdesc of any value (depends on ISSUE-30)
d. a non-empty aria-labelledby/aria-describedby/aria-label
e. <img> + <figcaption>, as the only children of <figure>
f. <img> as only child of semantic element:<a><dfn><h1> etc
NOTE: For 1b to 1f, validator must ask for non-empty @alt.
* presentation (role) is implied
g. if @alt is empty and 1b,1c,1d,1e is not the case
0. img role as result of default is invalid
img role as result of default has these characteristics:
* no explicit @role (2a,2b,2c)
* no implicit role (1a,1b,1c,1d,1e,1f,1g)
NOTE: adding @alt or @role or non-empty @title/@labelledby
@describedby/@label gives the element an implicit or
explicit role, whose validation rules then apply.
NOTE: empty @title, @aria-labelledby, @aria-describedby
or @aria-labelledby imply nothing and does thus
not affect any role in any way.
* General validation rule:
- When validator detects an explicit or implicit role, it must
if needed, ask author for a corresponding @alt. EXAMPLES:
if @title is non-empty, there must be a non-empty alt. Or in
case of explicit role="presentation", alt must be empty.
- When validator detects an img role default, then it must ask
author to add @alt (or give options/guidance what to do).
* Specific validation rules:
# presentation (role), explicit or implicit:
* empty @alt is required
* a non-empty title would be invalid
* any @longdesc (ISSUE-30) would be invalid
NOTE, for explicit role=presentation:
- @labelledby/@describedby/@label (any value) get disabled
and thus does not need to be removed.
NOTE for implicit presentation role:
- implicit presentation cannot really be validated since any
non-empty alt/title/labelledby/describedby/label/longdesc
would change its role from presentation to img (tested
in VoiceOver).
# img (role) explicit or implicit:
* non-empty alt is required
* any value of title is valid
* any value of -labelledby/-describedby/-label is valid
# img role as result of default is always invalid
* specialities, img role as result of default:
- it has no @alt
- labelledby/-describedby/-label/title if present, is empty
Caveat: it really is up to ARIA whether empty -labelledby,
-describedb or -label causes the element to be treated
as having role img. But it seems logical that it has no
impact. And VoiceOver seems to work that way.
[1]
http://www.w3.org/2002/09/wbs/40318/issue-31-80-validation-objection-poll/?
[2]
http://www.w3.org/2002/09/wbs/40318/issue-31-80-validation-objection-poll/results
--
Leif Halvard Silli
Received on Thursday, 31 March 2011 02:13:19 UTC