Copyright © 2014-2023 World Wide Web Consortium . W3C ® liability , trademark and permissive document license rules apply.
This document describes how user agents determine the names and descriptions of accessible objects from web content languages. This information is in turn exposed through accessibility APIs so that assistive technologies can identify these objects and present their names or descriptions to users. Documenting the algorithm through which names and descriptions are to be determined promotes interoperable exposure of these properties among different accessibility APIs and helps to ensure that this information appears in a manner consistent with author intent.
The accessible name and description computation specification defines support that applies across multiple content technologies. This includes accessible name and description provided by general-purpose WAI-ARIA [ WAI-ARIA ] roles , states , and properties as well as features specific to individual content languages.
This document updates and will eventually supersede the accessible name and description guidance in the Accessible Name and Description Computation 1.1 [ ACCNAME-1.1 ] W3C Recommendation. It is part of the WAI-ARIA suite described in the WAI-ARIA Overview .
This section describes the status of this document at the time of its publication. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at https://www.w3.org/TR/.
This document was published by the Accessible Rich Internet Applications Working Group as an Editor's Draft.
Publication as an Editor's Draft does not imply endorsement by W3C and its Members.
This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.
This document was produced by a group operating under the W3C Patent Policy . W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy .
This document is governed by the 12 June 2023 W3C Process Document .
This section is non-normative.
User
agents
acquire
information
from
the
DOM
[
DOM
]
and
create
a
parallel
structure
called
the
accessibility
tree
,
made
up
of
accessible
objects
.
An
accessible
object
provides
information
about
its
role
,
states
,
and
properties
.
An
example
is
an
accessible
object
whose
role
is
menuitem
,
is
currently
in
an
enabled
state,
with
a
haspopup
property,
indicating
that
it
leads
to
a
sub-menu.
The
two
properties
of
accessible
objects
described
in
this
document
are
its
accessible
name
and
accessible
description
.
The
name
is
a
short
label
that
provides
information
about
the
purpose
of
the
object.
An
example
of
an
accessible
name
for
a
menu
item
is
New
,
signifying
that
the
menu
item
provides
for
the
creation
of
new
documents,
windows,
and
so
on.
The description is a short explanation that further clarifies the nature of the accessible object. It is not always necessary to provide a description if the name is sufficient, but it can help a user better understand the use of the object.
Accessibility APIs currently support flat, unstructured strings for accessible names and descriptions. The result of the name/description computation is thus a flat string.
The terms "accessible name" and "accessible description" are used to emphasize that they are properties of accessible objects as exposed by Accessibility APIs . However, they are frequently referred to hereafter as simply "name" and "description".
This section is non-normative.
While some terms are defined in place, the following definitions are used throughout this document.
An accessible description provides additional information, related to an interface element, that complements the accessible name . The accessible description might or might not be visually perceivable.
The accessible name is the name of a user interface element. Each platform accessibility API provides the accessible name property. The value of the accessible name may be derived from a visible (e.g., the visible text on a button) or invisible (e.g., the text alternative that describes an icon) property of the user interface element. See related accessible description .
A simple use for the accessible name property may be illustrated by an "OK" button. The text "OK" is the accessible name. When the button receives focus, assistive technologies may concatenate the platform's role description with the accessible name. For example, a screen reader may speak "push-button OK" or "OK button". The order of concatenation and specifics of the role description (e.g., "button", "push-button", "clickable button") are determined by platform accessibility API s or assistive technologies .
Any host language attribute that would result in a user agent generating a tooltip such as in response to a mouse hover in desktop user agents.
As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else in this specification is normative.
The key words MAY , MUST , and MUST NOT in this document are to be interpreted as described in BCP 14 [ RFC2119 ] [ RFC8174 ] when, and only when, they appear in all capitals, as shown here.
RFC-2119 keywords are formatted in uppercase and in bold type font. When the keywords shown above are used, but do not share this format, they do not convey formal information in the RFC 2119 sense, and are merely explanatory, i.e., informative. As much as possible, such usages are avoided in this specification.
The indication whether a section is normative or non-normative (informative) applies to the entire section including sub-sections.
Informative sections provide information useful to understanding the specification. Such sections may contain examples of recommended practice, but it is not required to follow such recommendations in order to conform to this specification.
The
starting
point
of
the
name
and
description
computation
is
a
DOM
element
.
The
output
is
a
flat,
unstructured
string
that
can
be
as
simple
as
a
single
word,
or
a
string
of
space-separated
tokens.
Examples
include
Save
and
Reload
from
disk
.
An
important
factor
is
the
element's
role
,
that
determines
which
content
contributes
to
the
name
string.
Roles
have
a
nameFrom
RDF
property,
with
three
possible
values:
aria-label
and
aria-labelledby
attribute
,
or
a
host
language
labeling
mechanism,
such
as
the
alt
or
title
attribute
in
HTML
,
or
the
desc
element
in
SVG
.
aria-label
or
aria-labelledby
attributes
to
name
the
element.
The Accessible Rich Internet Applications ( WAI-ARIA ) 1.2 [ WAI-ARIA ] specification provides lists of roles that support name from author , roles that support name from content and roles that cannot be named .
User agents MUST compute an accessible name using the rules outlined below in the section titled Text Equivalent Computation .
The following table provides the order of precedence for markup that can be applied to compute an accessible description . User agents MUST use the first applicable entry from the table where the listed conditions are met, as described in the last column. The user agent MUST NOT use any markup other that the first relevant markup found, even if that markup results in an empty description:
Precedence | Attribute | Applicable conditions | How used to compute description |
---|---|---|---|
1 |
aria-describedby
attribute
|
Use on any element | Name computation on all nodes referenced by aria-describedby on the element, concatenated, and separated by a space character |
2 |
aria-description
attribute
|
Use on any element | As a flat string |
3 | host language features which participate in the description calculation | Unique host language features MAY participate in the description computation for an element, only if they were not already used for the accessible name of the applicable element. See HTML AAM: Accessible Description Computation for the HTML elements which meet this condition. | Either a text equivalent computation of the host language element, or the string value of the host language attribute. |
4 |
host
language
tooltip
attribute
or
equivalent
feature
(e.g.,
HTML
title
attribute)
|
|
As a flat string |
The text equivalent computation is used by both the accessible name and accessible description . There are different rules provided for several different types of elements , nodes , and combinations of markup. Text alternatives are built up, when appropriate, from all the relevant content contained within an element . This is accomplished via steps 2B and 2F, which are recursive, using the full set of rules to retrieve text from its own children or nodes it references.
The purpose of the computation is to create a perceivable label or description for alternative presentations, in the form of a flat string of space separated textual tokens.
root
node
's
text
equivalent.
Initially,
the
current
node
is
the
root
node
,
but
at
later
stages
is
either
some
descendant
of
the
root
node
,
or
another
referenced
node.
current
node
.
result
to
X.
result
to
the
end
of
X.
result
to
X.
result
to
X
after
the
space.
result
to
X.
result
to
the
start
of
X.
result
to
X.
result
to
the
start
of
X,
and
add
a
space
after
the
copy.
The text alternative for a given element is computed as follows:
root
node
to
the
given
element,
the
current
node
to
the
root
node
,
and
the
total
accumulated
text
to
the
empty
string
("").
If
the
root
node
's
role
prohibits
naming,
return
the
empty
string
("").
current
node
:
current node
has an
aria-labelledby
attribute
that contains at least one valid IDREF, and the
current node
is not already part of an ongoing
aria-labelledby
or
aria-describedby
traversal, process its IDREFs in the order they occur:
accumulated text
to the empty string.
current node
to the node referenced by the IDREF.
current node
beginning with the overall
Computation
step. Set the
result
to that text alternative.
result
to the
accumulated text
.
accumulated text
if it is not the empty string ("").
The result of
LabelledBy Recursion
in combination with
Hidden Not Referenced
means that
user agents
MUST
include all nodes in the subtree as part of the
accessible name
or
accessible description
, when the node referenced by
aria-labelledby
or
aria-describedby
is hidden.
current node
allows the user to adjust its value, and is part of an ongoing
aria-labelledby
) for another
or
aria-describedby
traversal for another
widget
, process its text alternative in the following manner:
aria-valuetext
property is present, return its value,
aria-valuenow
property is present, return its value,
current node
has an
aria-label
attribute
whose value is not undefined, not the empty string, nor, when trimmed of
whitespace
, is not the empty string:
current node
is due to recursion
and
the
current node
is an embedded control, ignore
aria-label
and skip to rule
Embedded Control
.
aria-label
.
current node
's native markup provides an
attribute
(e.g.
alt
) or
element
(e.g.
HTML
label
or
SVG
title
) that defines a text alternative, return that alternative in the form of a
flat string
as defined by the host language, unless the element is marked as presentational (
role="presentation"
or
role="none"
).
For example, in
HTML
, the
img
element's
alt
attribute defines a text alternative string, and the
label
element provides text for the referenced form element. In
SVG2
, the
desc
and
title
elements provide a description of their parent element.
current node's
role
allows
name from content
, or if the
current node
is referenced by
aria-labelledby
,
aria-describedby
, or is a native host language text alternative
element
(e.g.
label
in
HTML
), or is a descendant of a native host language text alternative
element
:
accumulated text
to the empty string.
current node
and include it in the
accumulated text
. The
CSS
::before
and ::after
pseudo elements [
CSS2
] can provide textual content for
elements
that have a content model. ::before
pseudo elements,
User agents
MUST
prepend
CSS
textual content, without a space, to the textual content of the
current node
. ::after
pseudo elements,
User agents
MUST
append
CSS
textual content, without a space, to the textual content of the
current node
.
current node
:
current node
to the child node.
current node
beginning with the overall
Computation
step. Set the
result
to that text alternative.
result
to the
accumulated text
.
accumulated text
if it is not the empty string ("").
Important : Each node in the subtree is consulted only once. If text has been collected from a descendant, but is referenced by another IDREF in some descendant node, then that second, or subsequent, reference is not followed. This is done to avoid infinite loops.
This step can apply to the child nodes themselves, which means the computation is recursive and results in text collected from all the elements in the
current node
's subtree, no matter how deep it is. However, any given descendant
node's
text alternative can result from higher precedent markup described in steps B through D above, where "Namefrom: author" attributes provide the text alternative for the entire subtree.
current node
is a Text
Node
, return its textual contents.
current node
is a descendant of an element whose
Accessible Name
or
Accessible Description
is being computed, and contains descendants, proceed to
Name From Content Reset
.
current node
has a
Tooltip attribute
, return its value. Tooltip attributes are used only if nothing else, including subtree content, has provided results.
result
of each step above to the
total accumulated text
.
total accumulated text
is used as the
accessible name
or
accessible description
of the
element
that initiated the computation.
Information concerning name and description accessibility
API
mappings, including relationships, such as labelled-by/label-for and described-by/description-for, is documented in the
Core Accessibility
API
Mappings
specification [
CORE-AAM-1.2
]. See the mapping table entries for
aria-label
,
aria-labelledby
, and
aria-describedby
.
This section is non-normative.
The following people contributed to the development of this document.
Cannot GET /uploads/NARws7/common/acknowledgements/aria-wg-active.html
Cannot GET /uploads/F388kg/common/acknowledgements/aria-wg-active.html
Cannot GET /uploads/NARws7/common/acknowledgements/aria-contributors.html
Cannot GET /uploads/F388kg/common/acknowledgements/aria-contributors.html
Cannot GET /uploads/NARws7/common/acknowledgements/funders.html
Cannot GET /uploads/F388kg/common/acknowledgements/funders.html