W3C

HTML to Platform Accessibility APIs Implementation Guide

A user agent developer's guide to understanding and implementing accessibility support in HTML

W3C Working Draft 14 April 2011

This version:
http://www.w3.org/TR/2011/WD-html-aapi-20110414/
Latest published version:
http://www.w3.org/TR/html-aapi/
Latest editor's draft:
http://dev.w3.org/html5/html-api-map/
Editors:
Steve Faulkner, The Paciello Group sfaulkner@paciellogroup.com
Cynthia Shelly, Microsoft cyns@microsoft.com

Abstract

This is draft documentation mapping HTML elements and attributes to accessibility API Roles, States and Properties on a variety of platforms. It provides recommendations on deriving the accessible names and descriptions for HTML elements. It also provides accessible feature implementation examples.

Status of This Document

This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.

This document is subject to change without notice.

This document was published by the HTML Working Group as a First Public Working Draft. This document is intended to become a W3C Recommendation. If you wish to make comments regarding this document, please send them to public-html@w3.org (subscribe, archives). All feedback is welcome.

Publication as a Working Draft does not imply endorsement by the W3C Membership. 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 5 February 2004 W3C Patent Policy. This document is informative only. 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.

Table of Contents

1. Introduction: Accessibility APIs

To provide access to desktop GUI applications, assistive technologies originally used heuristic techniques to determine the meaning of the user interface and built an alternative off screen model. For example, a row of labels displayed horizontally near the top of an application window might be a menu. Labels with a border drawn around them might be buttons. Heuristic techniques are not always accurate, however, and require assistive technologies to be updated whenever the software application is updated.

A much better technique is for the software application to provide the necessary information for interoperability with assistive technology. To meet this need, platform owners have developed specialized interfaces, called accessibility APIs, which can be used to communicate accessibility information about user interfaces to assistive technologies.

In the case of static Web pages, the Document Object Model (DOM) is used to represent the structure and state of the elements in the document being rendered by a user agent. The elements of the document are organized into a hierarchy of nodes known as the DOM tree. For traditional static Web pages, assistive technologies, such as screen readers, interact with user agents using the DOM. For UI elements that are known to be interactive, such as HTML form elements and desktop applications, assistive technologies may use platform accessibility APIs.

Accessibility APIs covered by this document are:

If User Agent developers need to expose to other accessibility APIs, it is recommended that they work closely with the developer of the platform where the API runs, and assistive technology developers on that platform.

2. Exposing HTML features that do not directly map to accessibility API properties

HTML may have features that are not supported by accessibility APIs at the time of publication. There is not a one to one relationship between all features and platform accessibility APIs. When HTML roles, states and properties do not directly map to an accessibility API, and there is a method in the API to expose a text string, expose the undefined role, states and properties via that method.

IAccessible2 and ATK use object attributes to expose semantics that are not directly supported in the APIs. Object attributes are name-value pairs that are loosely specified, and very flexible for exposing things where there is no specific interface in an accessibility API. For example, at this time, the HTML5 header element can be exposed via an object attribute because accessibility APIs have no such role available.

For accessibility APIs that do not have "object attributes" per se, it is useful to find a similar mechanism or develop a new interface to expose name/value pairs. Under the Mac OS X Accessibility Protocol, all getters are already simply name-value pairs and it is possible to expose new semantics whenever necessary. Keep in mind, this also requires working with the assistive technology developers to gain support for the new semantics.

 

3. HTML element to Accessibility API Role Mapping Matrix

Notes:

Mappings of HTML elements to platform accessibility APIs: ARIA, MSAA, IAccessible2, UIA, ATK, and AX
HTML element HTML4 HTML5 WAI-ARIA MSAA Role IAccessible2 UIA AT-SPI Role Mac Accessibility role AX
a element that represents a hyperlink yes yes link role ROLE_SYSTEM_LINK. Also, apply special rule to expose STATE_LINKED to link and all its descendants. ROLE_SYSTEM_LINK. Also, apply special rule to expose STATE_LINKED to link and all its descendants. HyperLink ROLE_LINK AXLink
a element (with no href) yes yes none ROLE_SYSTEM_ TEXT ROLE_SYSTEM_ TEXT Text ROLE_TEXT AXStaticText
abbr element yes yes none ROLE_SYSTEM_STATICTEXT IA2_ROLE_TEXT_FRAME + Object attribute role="abbr" Text Object attribute role="abbr" AXStaticText, AXRoleDescription"abbr"
address element yes yes none ROLE_SYSTEM_GROUPING Object attribute role="address" ? Object attribute role="address" AXGroup, AXRoleDescription"address"
area element that represents a hyperlink yes yes link role ROLE_SYSTEM_LINK. Also, apply special rule to expose STATE_LINKED to link and all its descendants. ROLE_SYSTEM_LINK. Also, apply special rule to expose STATE_LINKED to link and all its descendants. HyperLink ROLE_LINK AXLink
area element that has no href attribute yes yes none ROLE_SYSTEM_TEXT ROLE_SYSTEM_TEXT Text ROLE_TEXT AXStaticText
article element no yes article role ROLE_SYSTEM_DOCUMENT + STATE_SYSTEM_READONLY Object attribute role="article" Expose as text string "article" in AriaRole ROLE_DOCUMENT_FRAME + do not expose STATE_EDITABLE AXGroup, AXRoleDescription"article"
aside element no yes complementary role ROLE_SYSTEM_GROUPING Object attribute role="complementary" Expose as text string "complementary" in AriaRole Object attribute role="complementary" AXGroup, AXRoleDescription="complementary"
audio element no yes none ? ? ? ? ?
b element yes yes none ROLE_SYSTEM_ TEXT ROLE_SYSTEM_ TEXT Text ROLE_TEXT AXStaticText
base element yes yes none N/A N/A N/A N/A N/A
bdo element yes yes none ROLE_SYSTEM_ TEXT ROLE_SYSTEM_ TEXT text ROLE_TEXT AXStaticText
blockquote element yes yes none ROLE_SYSTEM_GROUPING ? ? ? ?
body element yes yes document role ROLE_SYSTEM_DOCUMENT + STATE_SYSTEM_READONLY ROLE_SYSTEM_DOCUMENT + STATE_SYSTEM_READONLY Document ROLE_DOCUMENT_FRAME + STATE_READONLY AXGroup, AXRoleDescription="document"
br element yes yes none ROLE_SYSTEM_ WHITESPACE ROLE_SYSTEM_ WHITESPACE ? ? ?
button element yes yes button role ROLE_SYSTEM_PUSHBUTTON. ROLE_SYSTEM_PUSHBUTTON. Button ROLE_PUSH_BUTTON AXButton
canvas element no yes none ? ? ? ROLE_GRAPHIC + STATE_ANIMATED. ?
caption element yes yes none ROLE_SYSTEM_ TEXT IA2_ROLE_CAPTION text ROLE_CAPTION

AXStaticText
AXRoleDescription="caption"

cite element yes yes none ROLE_SYSTEM_ TEXT ROLE_SYSTEM_ TEXT text ROLE_TEXT AXStaticText
code element yes yes none ROLE_SYSTEM_ TEXT ROLE_SYSTEM_ TEXT text ROLE_TEXT AXStaticText
col yes yes none ROLE_SYSTEM_GROUPING ROLE_SYSTEM_GROUPING? ? ? ?
colgroup element yes yes none ROLE_SYSTEM_GROUPING ROLE_SYSTEM_GROUPING? ? ? ?
command element no yes menuitem role ROLE_SYSTEM_MENUITEM ROLE_SYSTEM_MENUITEM MenuItem ROLE_MENU_ITEM

 

AXMenuItem

datalist element no yes listbox role, with the aria-multiselectable property set to "false" ROLE_SYSTEM_COMBOBOX + STATE_SYSTEM_HASPOPUP. ROLE_SYSTEM_COMBOBOX + STATE_SYSTEM_HASPOPUP. Combobox ROLE_COMBO_BOX + STATE_EXPANDABLE AXComboBox
dd element yes yes none ROLE_SYSTEM_ TEXT IA2_ROLE_PARAGRAPH ? ? ?
del element yes yes none ROLE_SYSTEM_ TEXT ROLE_SYSTEM_ TEXT ? ROLE_TEXT AXStaticText
details element no yes none ROLE_SYSTEM_GROUPING ROLE_SYSTEM_GROUPING Group ROLE_PANEL AXGroup
dfn element yes yes none ROLE_SYSTEM_ TEXT ROLE_SYSTEM_ TEXT ? ROLE_TEXT AXStaticText
dl element yes yes none ROLE_SYSTEM_ TEXT IA2_ROLE_PARAGRAPH ? ? ?
dt element yes yes none ROLE_SYSTEM_ TEXT IA2_ROLE_PARAGRAPH ? ? ?
div element yes yes none ROLE_SYSTEM_GROUPING IA2_ROLE_SECTION ? ? ?
em element yes yes none ROLE_SYSTEM_ TEXT ROLE_SYSTEM_ TEXT ? ROLE_TEXT AXStaticText
embed element no yes none ROLE_SYSTEM_CLIENT ROLE_SYSTEM_CLIENT ? ROLE_EMBEDDED ?
fieldset element yes yes none ROLE_SYSTEM_GROUPING ROLE_SYSTEM_GROUPING Group

ROLE_PANEL
Object attribute role="fieldset"

AXGroup, AXRoleDescription="fieldset"
figcaption element no yes none ROLE_SYSTEM_ TEXT IA2_ROLE_CAPTION   ROLE_CAPTION AXRoleDescription="figcaption"
figure element no yes none ROLE_SYSTEM_GROUPING ? ? ? AXGroup, AXRoleDescription="figure"
footer element no yes none ROLE_SYSTEM_GROUPING Object attribute role="footer" Expose as text string "footer" in UIAutomationType_String Object attribute role="footer" AXGroup, AXRoleDescription="footer"
form element yes yes form role ROLE_SYSTEM_GROUPING IA2_ROLE_FORM  Group ROLE_PANEL

AXGroup
AXRoleDescription="form"

frame element yes no   ROLE_SYSTEM_DOCUMENT + STATE_SYSTEM_READONLY ROLE_SYSTEM_DOCUMENT + STATE_SYSTEM_READONLY Document ROLE_DOCUMENT_FRAME + STATE_READONLY AXGroup, AXRoleDescription="document"
frameset element yes no   ? ? ? ? ?
head element yes yes none N/A N/A N/A N/A N/A
header element no yes none ROLE_SYSTEM_GROUPING Object attribute role="header" Expose as text string "header" in UIAutomationType_String Object attribute role="header" AXGroup, AXRoleDescription="header"
hgroup element no yes none ROLE_SYSTEM_GROUPING ROLE_SYSTEM_GROUPING     AXGroup, AXRoleDescription="hgroup"
h1 to h6 element that does have an hgroup ancestor no yes none ROLE_SYSTEM_ TEXT ROLE_SYSTEM_ TEXT Text ROLE_TEXT AXStaticText
h1 to h6 element that does not have an hgroup ancestor yes yes heading role, with the aria-level property set to the element's outline depth ROLE_SYSTEM_TEXT or use xml-roles IA2_ROLE_HEADING Use the IAccessible2::attributes heading-level attribute to determine the heading level. Text ROLE_HEADING AXHeading
hr element yes yes separator role ROLE_SYSTEM_SEPARATOR ROLE_SYSTEM_SEPARATOR Separator ROLE_SEPARATOR AXSplitter
HTML element yes yes none N/A N/A N/A N/A N/A
i element yes yes none ROLE_SYSTEM_ TEXT ROLE_SYSTEM_ TEXT ? ROLE_TEXT AXStaticText
iframe element yes yes none ROLE_SYSTEM_DOCUMENT + STATE_SYSTEM_READONLY ROLE_SYSTEM_DOCUMENT + STATE_SYSTEM_READONLY Document ROLE_DOCUMENT_FRAME + STATE_READONLY AXGroup, AXRoleDescription="document"
img element yes yes img role ROLE_SYSTEM_GRAPHIC ROLE_SYSTEM_GRAPHIC Image ROLE_IMAGE AXImage
img element whose alt attribute's value is empty yes yes presentation role

Do not expose this object

Do not expose this object Do not expose this object

Do not expose this object

AXRoleDescription="presentation"
input element with a type attribute in the Button state yes yes button role ROLE_SYSTEM_PUSHBUTTON ROLE_SYSTEM_PUSHBUTTON Button ROLE_PUSH_BUTTON AXButton
input element with a type attribute in the Color state no yes checkbox role, with the aria-checked state set to "mixed" if the element's indeterminate IDL attribute is true, or "true" if the element's checkedness is true, or "false" otherwise NONE IA2_ROLE_COLOR_CHOOSER  NONE ROLE_COLOR_CHOOSER AXColorWell
input element with a type attribute in the Checkbox state yes yes none ROLE_SYSTEM_CHECKBUTTON Object attribute checkable="true" Checkbox ROLE_CHECK_BOX + STATE_CHECKED AXCheckBox
input element with a type attribute in the Date state no yes none ROLE_SYSTEM_DROPLIST IA2_ROLE_DATE_EDITOR Calendar ROLE_CALENDAR (not supported by FF) AXDateField
input element with a type attribute in the Date and Time state no yes none ROLE_SYSTEM_DROPLIST IA2_ROLE_DATE_EDITOR Calendar ROLE_CALENDAR (not supported by FF) AXDateField
input element with a type attribute in the Local Date and Time state no yes none ROLE_SYSTEM_DROPLIST IA2_ROLE_DATE_EDITOR Calendar ROLE_CALENDAR (not supported by FF) AXDateField
input element with a type attribute in the E-mail state with no suggestions source element no yes textbox role ROLE_SYSTEM_TEXT IA2_STATE_SINGLE_LINE Edit ROLE_ENTRY + STATE_SINGLE_LINE AXTextArea
input element with a type attribute in the File Upload state yes yes none ROLE_SYSTEM_PUSHBUTTON. IA2_ROLE_FILE_CHOOSER  Button ROLE_PUSH_BUTTON + ROLE_FILE_CHOOSER AXButton
input element with a type attribute in the Hidden state yes yes none

Do not expose this object

Do not expose this object Do not expose this object

Do not expose this object

AXRoleDescription="presentation"
input element with a type attribute in the Image Button state yes yes button role ROLE_SYSTEM_PUSHBUTTON. ROLE_SYSTEM_PUSHBUTTON. Button ROLE_PUSH_BUTTON AXButton
input element with a type attribute in the Month state no yes none ROLE_SYSTEM_DROPLIST IA2_ROLE_DATE_EDITOR Calendar ? AXDateField
input element with a type attribute in the Number state no yes spinbutton role ROLE_SYSTEM_SPINBUTTON ROLE_SYSTEM_SPINBUTTON Spinner ROLE_SPIN_BUTTON AXIncrementor
input element with a type attribute in the Password state yes yes textbox role ROLE_SYSTEM_TEXT IA2_STATE_SINGLE_LINE Edit ROLE_ENTRY + STATE_SINGLE_LINE

AXTextArea

AXSubrole: AXSecureTextField
input element with a type attribute in the Radio Button state yes yes radio role, with the aria-checked state set to "true" if the element's checkedness is true, or "false" otherwise ROLE_SYSTEM_RADIOBUTTON ROLE_SYSTEM_RADIOBUTTON RadioButton ROLE_RADIO_BUTTON AXRadioButton
input element with a type attribute in the Range state no yes slider role ROLE_SYSTEM_SLIDER ROLE_SYSTEM_SLIDER Slider ROLE_SLIDER AXSlider
input element with a type attribute in the Reset Button state yes yes button role ROLE_SYSTEM_PUSHBUTTON ROLE_SYSTEM_PUSHBUTTON Button ROLE_PUSH_BUTTON AXButton
input element with a type attribute in the Search state with no suggestions source element no yes textbox role ROLE_SYSTEM_TEXT IA2_STATE_SINGLE_LINE Document ROLE_ENTRY + STATE_SINGLE_LINE

AXTextArea

AXSubRole:AXSearchField

 

input element with a type attribute in the Submit Button state yes yes button role ROLE_SYSTEM_PUSHBUTTON ROLE_SYSTEM_PUSHBUTTON Button ROLE_PUSH_BUTTON AXButton
input element with a type attribute in the Telephone state with no suggestions source element no yes textbox role ROLE_SYSTEM_TEXT IA2_STATE_SINGLE_LINE Document ROLE_ENTRY + STATE_SINGLE_LINE AXTextArea
input element with a type attribute in the Text state with no suggestions source element yes yes textbox role ROLE_SYSTEM_TEXT IA2_STATE_SINGLE_LINE Document ROLE_ENTRY + STATE_SINGLE_LINE AXTextArea
input element with a type attribute in the Text, Search, Telephone, URL, or E-mail states with a suggestions source element no yes combobox role, with the aria-owns property set to the same value as the list attribute ROLE_SYSTEM_COMBOBOX + STATE_SYSTEM_HASPOPUP ROLE_SYSTEM_COMBOBOX + STATE_SYSTEM_HASPOPUP Combobox ROLE_COMBO_BOX + STATE_EXPANDABLE + object attribute haspopup="true" AXComboBox
input element with a type attribute in the Time state no yes none ROLE_SYSTEM_SPINBUTTON ROLE_SYSTEM_SPINBUTTON Spinner ROLE_SPIN_BUTTON AXTimeField
input element with a type attribute in the URL state with no suggestions source element no yes textbox role ROLE_SYSTEM_TEXT IA2_STATE_SINGLE_LINE Document ROLE_ENTRY + STATE_SINGLE_LINE AXTextArea
input element with a type attribute in the Week state no yes none ROLE_SYSTEM_DROPLIST IA2_ROLE_DATE_EDITOR Calendar ROLE_CALENDAR AXDateField
ins element yes yes none ROLE_SYSTEM_ TEXT ROLE_SYSTEM_ TEXT ? ROLE_TEXT AXStaticText
kbd element yes yes none ROLE_SYSTEM_ TEXT ROLE_SYSTEM_ TEXT ? ROLE_TEXT AXStaticText
keygen element no yes none ? ? ? ? AXComboBox
labelelement yes yes none ROLE_SYSTEM_TEXT IA2_ROLE_LABEL ? ROLE_LABEL AXStaticText
li element whose parent is an ol or ul element yes yes listitem role ROLE_SYSTEM_LISTITEM + STATE_SYSTEM_READONLY ROLE_SYSTEM_LISTITEM + STATE_SYSTEM_READONLY ListItem ROLE_LISTITEM + do not expose STATE_EDITABLE AXGroup
li element whose parent is a menu element no yes listitem role ROLE_SYSTEM_LISTITEM + STATE_SYSTEM_READONLY ROLE_SYSTEM_LISTITEM + STATE_SYSTEM_READONLY ListItem ROLE_LISTITEM + do not expose STATE_EDITABLE AXMenuItemRole
link element yes yes link role ROLE_SYSTEM_LINK. Also, apply special rule to expose STATE_LINKED to link and all its descendants. ROLE_SYSTEM_LINK. Also, apply special rule to expose STATE_LINKED to link and all its descendants. HyperLink ROLE_LINK AXLink
map element yes yes none N/A N/A N/A N/A N/A
mark no yes none ROLE_SYSTEM_ TEXT ROLE_SYSTEM_ TEXT Text ROLE_TEXT AXStaticText
menu element with a type attribute in the context menu state no yes no role ROLE_SYSTEM_MENUPOPUP see msaa Menu ROLE_MENU. These objects should not be exposed for a submenu if there is a parent menu item spawning the submenu AXMenu
menu element with a type attribute in the list state no yes menu role ROLE_SYSTEM_MENUPOPUP see msaa Menu ROLE_MENU. These objects should not be exposed for a submenu if there is a parent menu item spawning the submenu AXMenu
menu element with a type attribute in the toolbar state no yes toolbar role ROLE_SYSTEM_TOOLBAR ROLE_SYSTEM_TOOLBAR ToolBar ROLE_TOOL_BAR AXToolbar
An element that defines a command, whose Type facet is "checkbox", and that is a descendant of a menu element whose type attribute in the list state no yes menuitemcheckbox role, with the aria-checked state set to "true" if the command's Checked State facet is true, and "false" otherwise ROLE_SYSTEM_CHECKBUTTON or ROLE_SYSTEM_MENUITEM IA2_ROLE_CHECK_MENU_ITEM + object attribute checkable="true" Checkbox ROLE_CHECK_MENU_ITEM + object attribute checkable="true" AXMenuItemRole
An element that defines a command, whose Type facet is "command", and that is a descendant of a menu element whose type attribute in the list state no yes menuitem role ROLE_SYSTEM_MENUITEM ROLE_SYSTEM_MENUITEM MenuItem ROLE_MENU_ITEM AXMenuItemRole
An element that defines a command, whose Type facet is "radio", and that is a descendant of a menu element whose type attribute in the list state no yes menuitemradio role, with the aria-checked state set to "true" if the command's Checked State facet is true, and "false" otherwise ROLE_SYSTEM_RADIOBUTTON or ROLE_SYSTEM_MENUITEM IA2_ROLE_RADIO_MENU_ITEM + object attribute checkable="true" RadioButton ROLE_RADIO_MENU_ITEM + object attribute checkable="true" AXMenuItemRole
meta element yes yes none N/A N/A N/A N/A N/A
meter element no yes none ROLE_SYSTEM_ TEXT ROLE_SYSTEM_ TEXT ? ROLE_TEXT AXStaticText
nav element no yes navigation role ROLE_SYSTEM_GROUPING Object attribute role="navigation" Expose as text string "complementary" in AriaRole   AXGroup, AXRoleDescription="navigation"
noscript element yes yes none N/A N/A N/A N/A N/A
object element yes yes no role depends on format of data file. examples include document, client, graphic and unknown (tested using object test suite). Refer to MSAA depends on format of data file. ROLE_EMBEDDED depends on format of data file.
ol element yes yes list role ROLE_SYSTEM_LIST + STATE_SYSTEM_READONLY ROLE_SYSTEM_LIST + STATE_SYSTEM_READONLY List ROLE_LIST + do not expose STATE_EDITABLE AXList
optgroup element yes yes group role ROLE_SYSTEM_GROUPING ROLE_SYSTEM_GROUPING ? ROLE_PANEL AXGroup
option element that is in a list of options or that represents a suggestion in a datalist element no yes option role, with the aria-selected state set to "true" if the element's selectedness is true, or "false" otherwise. ROLE_SYSTEM_LISTITEM ROLE_SYSTEM_LISTITEM ListItem ROLE_LIST_ITEM NSAccessibilityStaticTextRole
output element no yes status role ROLE_SYSTEM_STATUSBAR ROLE_SYSTEM_STATUSBAR StatusBar ROLE_STATUSBAR AXGroup, AXRoleDescription="status"
p element yes yes none ROLE_SYSTEM_TEXT IA2_ROLE_PARAGRAPH Text ROLE_PARAGRAPH  AXStaticText, AXRoleDescription="paragraph"
param element yes yes none

N/A

N/A N/A

N/A

N/A
pre element yes yes none ROLE_SYSTEM_ TEXT ROLE_SYSTEM_ TEXT Text ROLE_TEXT AXStaticText
progress element no yes progressbar role, with, if the progress bar is determinate, the aria-valuemax property set to the maximum value of the progress bar, the aria-valuemin property set to zero, and the aria-valuenow property set to the current value of the progress bar ROLE_SYSTEM_PROGRESSBAR + STATE_SYSTEM_READONLY ROLE_SYSTEM_PROGRESSBAR + STATE_SYSTEM_READONLY ProgressBar ROLE_PROGRESS_BAR + do not expose EXTENDED_STATE_EDITABLE AXProgressIndicator
q element yes yes none ROLE_SYSTEM_ TEXT ROLE_SYSTEM_ TEXT Text ROLE_TEXT AXStaticText
rp element no yes none ROLE_SYSTEM_ TEXT ROLE_SYSTEM_ TEXT Text ROLE_TEXT AXStaticText
rt element no yes none ROLE_SYSTEM_ TEXT ROLE_SYSTEM_ TEXT Text ROLE_TEXT AXStaticText
ruby element no yes none ROLE_SYSTEM_ TEXT ROLE_SYSTEM_ TEXT Text ROLE_TEXT AXStaticText
s element ? yes none ROLE_SYSTEM_ TEXT ROLE_SYSTEM_ TEXT Text ROLE_TEXT AXStaticText
samp element yes yes none ROLE_SYSTEM_ TEXT ROLE_SYSTEM_ TEXT Text ROLE_TEXT AXStaticText
script element yes yes none N/A N/A N/A N/A N/A
section element no yes region role ROLE_SYSTEM_PANE IA2_ROLE_SECTION Pane ROLE_PANEL AXGroup, AXRoleDescription="region"
select element with a multiple attribute yes yes listbox role, with the aria-multiselectable property set to "true"

ROLE_SYSTEM_LIST +
STATE_SYSTEM_MULTISELECTABLE + STATE_SYSTEM_READONLY

ROLE_SYSTEM_LIST +
STATE_SYSTEM_MULTISELECTABLE + STATE_SYSTEM_READONLY
list ROLE_LIST  + STATE_MULTISELECTABLE  ?
select element with no multiple attribute yes yes listbox role, with the aria-multiselectable property set to "false" ROLE_SYSTEM_COMBOBOX + STATE_SYSTEM_HASPOPUP. ROLE_SYSTEM_COMBOBOX + STATE_SYSTEM_HASPOPUP. Combobox ROLE_COMBO_BOX + STATE_EXPANDABLE + object attribute haspopup="true" AXComboBox
small element yes yes none ROLE_SYSTEM_ TEXT ROLE_SYSTEM_ TEXT Text ROLE_TEXT AXStaticText
source element no yes none

Do not expose this object

Do not expose this object Do not expose this object

Do not expose this object

AXRoleDescription="presentation"
span element yes yes none ROLE_SYSTEM_ TEXT ROLE_SYSTEM_ TEXT Text ROLE_TEXT AXStaticText
strong element yes yes none ROLE_SYSTEM_ TEXT ROLE_SYSTEM_ TEXT Text ROLE_TEXT AXStaticText
style element yes yes none

Do not expose this object

Do not expose this object Do not expose this object

Do not expose this object

AXRoleDescription="presentation"
sub element yes yes none ROLE_SYSTEM_ TEXT ROLE_SYSTEM_ TEXT Text ROLE_TEXT AXStaticText
summary element no yes none ROLE_SYSTEM_PUSHBUTTON ROLE_SYSTEM_PUSHBUTTON ?

ROLE_PUSHBUTTON +
STATE_EXPANDABLE

AXDisclosureTriangle
sup element yes yes none ROLE_SYSTEM_ TEXT ROLE_SYSTEM_ TEXT ? ROLE_TEXT AXStaticText
table element yes yes none ROLE_SYSTEM_TABLE Use IAccessibleTable2 interface DataGrid ROLE_TABLE AXTable
tbody element yes yes none ROLE_SYSTEM_GROUPING ROLE_SYSTEM_GROUPING ?   AXGroup, AXRoleDescription="table body"
td element yes yes none ROLE_SYSTEM_CELL ROLE_SYSTEM_CELL DataItem ROLE_TABLE_CELL AXCell
textarea element yes yes textbox role, with the aria-multiline property set to "true" ROLE_SYSTEM_TEXT

state:  IA2_STATE_MULTI_LINE

text ROLE_ENTRY AXTextArea
tfoot element yes yes none ROLE_SYSTEM_GROUPING ROLE_SYSTEM_GROUPING ? ROLE_PANEL AXGroup, AXRoleDescription="table footer"
th element that is neither a column header nor a row header yes yes none ROLE_SYSTEM_CELL ROLE_SYSTEM_CELL IUIAutomation TableItem Pattern ROLE_TABLE_CELL AXCell
th element that is a column header yes yes none ROLE_SYSTEM_COLUMNHEADER   header + OrientationType_Vertical ROLE_COLUMN_HEADER AXCell
th element that is a row header yes yes none ROLE_SYSTEM_ROWHEADER   header + OrientationType_Horizontal ROLE_ROW_HEADER AXCell
thead element yes yes none ROLE_SYSTEM_GROUPING ROLE_SYSTEM_GROUPING ? ROLE_PANEL AXGroup, AXRoleDescription="table header"
time element no yes none ROLE_SYSTEM_ TEXT ROLE_SYSTEM_ TEXT ? ROLE_TEXT AXStaticText
title element yes yes none

N/A

N/A N/A

N/A

N/A
tr element yes yes none ROLE_SYSTEM_ROW ROLE_SYSTEM_ROW DataItem ROLE_LIST_ITEM AXRow
ul element yes yes list role ROLE_SYSTEM_LIST + STATE_SYSTEM_READONLY ROLE_SYSTEM_LIST + STATE_SYSTEM_READONLY List ROLE_LIST + do not expose STATE_EDITABLE AXList
var element yes yes none ROLE_SYSTEM_ TEXT ROLE_SYSTEM_ TEXT ? ROLE_TEXT AXStaticText
video element no yes none ? ? ? ? ?
wbr element no yes none none none none none none

 

4. HTML attribute to Accessibility API State and Property Mapping Matrix

Mappings of HTML attributes (excluding event handler content attributes) to platform accessibility APIs: ARIA, MSAA, IAccessible2, UIA, AT-SPI, and AX
Attribute Element(s) HTML4 HTML5 WAI-ARIA MSAA Property or MSAA State IAccessible2 UIA AT-SPI States and properties AX comments
accesskey HTML elements Yes Yes none accKeyboardShortcut accKeyboardShortcut AcceleratorKey ? ?  
alt area; img; input Yes Yes none accName Name RELATION_LABEL_FOR AXDescription  
autocomplete form; input No Yes     Object attribute autocomplete

Expose the IA2_STATE_SUPPORTS_AUTOCOMPLETION equivalent state

  Object attribute autocomplete

Expose the STATE_SUPPORTS_AUTOCOMPLETION equivalent state

   
autofocus button; input; keygen; select; textarea No Yes              
autoplay audio; video No Yes              
checked (if present) command; input Yes Yes aria-checked (state)="true" (state) Set the STATE_SYSTEM_CHECKED state Expose object attribute checkable="true" Expose as ToggleState property in Toggle Control Pattern Expose object attribute checkable="true" AXValue="1"  
checked (if absent) command; input Yes Yes aria-checked (state)="false" Clear the STATE_SYSTEM_CHECKED state Expose object attribute checkable="true" Expose as ToggleState property in Toggle Control Pattern. Expose object attribute checkable="true" AXValue="0"  
cite blockquote; del; ins; q Yes Yes              
cols textarea Yes Yes              
colspan td; th Yes Yes              
contenteditable HTML elements No Yes              
contextmenu HTML elements No Yes aria-haspopup="true" Expose as STATE_SYSTEM_HASPOPUP. If on a push button, change the role to ROLE_SYSTEM_BUTTONMENU. Expose as STATE_SYSTEM_HASPOPUP. If on a push button, change the role to ROLE_SYSTEM_BUTTONMENU. Expose state of the pop-up activities in the ExpandCollapseState property in the ExpandCollapse Control Pattern. Object attribute haspopup="true" Expose AXShowMenu and AXPress actions  
controls audio; video No Yes              
datetime del; ins No Yes              
datetime time No Yes              
dir HTML elements ? Yes              
dirname input; textarea ? Yes              
disabled button; command; fieldset; input; keygen; optgroup; option; select; textarea yes Yes              
draggable HTML elements no Yes              
dropzone HTML elements no Yes              
headers td; th yes Yes              
hidden HTML elements no Yes              
high meter no Yes              
href a; area yes Yes              
href link yes Yes              
hreflang a; area; link yes Yes              
kind track no Yes              
label command; menu; optgroup; option; track ? Yes              
lang HTML elements yes Yes              
low meter no Yes              
max input no Yes              
max meter; progress no Yes              
maxlength input; textarea yes Yes              
media a; area; link; source; style ? Yes              
min input   Yes              
min meter no Yes              
multiple input; select yes Yes              
open details no Yes aria-expanded="true | false" STATE_SYSTEM_ EXPANDED
STATE_SYSTEM_COLLAPSED
STATE_SYSTEM_EXPANDED
STATE_SYSTEM_COLLAPSED
ExpandCollapsePattern STATE_COLLAPSED
STATE_EXPANDED
AXValue="0 | 1" Set properties on the summary element.
optimum meter no Yes              
placeholder input; textarea no Yes              
poster video no Yes              
radiogroup command no Yes              
readonly input; textarea yes Yes              
rel a; area; link   Yes              
required input; select; textarea no Yes aria-required N/A IA2_STATE_REQUIRED Expose as IsrequiredForForm property. Expose STATE_REQUIRED ? ?
reversed ol ? Yes              
rows textarea yes Yes              
rowspan td; th yes Yes              
spellcheck HTML elements no Yes              
scope th yes Yes              
size input; select yes Yes              
span col; colgroup yes Yes              
start ol   Yes              
summary table yes Yes              
title HTML elements yes Yes              
title abbr; dfn yes Yes              
title command no Yes              
title link yes Yes              
title link; style yes Yes              
type a; area; link   Yes              
type button Yes Yes              
type button; input Yes Yes              
type command No Yes              
type embed; object; script; source; style Yes Yes              
type menu No Yes              
value button; option Yes Yes              
value input Yes Yes              
value li   Yes              
value meter; progress No Yes              
value param Yes Yes              
width canvas; embed; iframe; img; input; object; video Yes Yes              

5. Accessible Name and Description calculation

The terms accessible name and accessible description are properties provided in all accessibility APIs. The name of the properties may differ across APIs but they serve the same function: as a container for a short (name) or longer (description) string of text.

Input type="text" or textarea element

If the control has an aria-label or an aria-labelledby attribute the accessible name is to be calculated using the algorithm defined in section 5.2.7. Accessible Name Calculation of the WAI-ARIA 1.0 specification.

Otherwise, the accessible name is derived from the following sources; non-empty placeholder attribute, non-empty associated label element or a non-empty title attribute.

The accessible description is derived from the following sources; non-empty placeholder attribute or a non-empty title attribute.

5.1 input type="button" , input type="submit", input type="reset" and input type="password"

If the control has an aria-label or an aria-labelledby attribute the accessible name is to be calculated using the algorithm defined in section 5.2.7. Accessible Name Calculation of the WAI-ARIA 1.0 specification.

Otherwise the accessible name is derived from the following sources; a non-empty value attribute, or a non-empty title attribute.

5.2 input type="image"

If the control has an aria-label or an aria-labelledby attribute the accessible name is to be calculated using the algorithm defined in section 5.2.7. Accessible Name Calculation of the WAI-ARIA 1.0 specification.

Otherwise the accessible name is derived from the following sources; a non-empty alt attribute, or a non-empty title attribute.

5.3 Other form elements

If the control has an aria-label or an aria-labelledby attribute the accessible name is to be calculated using the algorithm defined in section 5.2.7. Accessible Name Calculation of the WAI-ARIA 1.0 specification.

Otherwise the accessible name is derived from the following sources; a non-empty associated label element or a non-empty title attribute.

5.4 Figure and figcaption elements

to do

5.5 img element

to do

6. Interactive elements

6.1 summary and details elements

to do

7. Accessible Description calculation

to do

8. Accessible feature implementation examples:

8.1 summary and details elements

9. focus and keyboard interaction

The summary element should be focusable by default.

The details element should not focusable by default.

Pressing the spacebar key when the summary element has focus will show the details element content if the content is hidden. If the details element content is showing and the summary element has focus, pressing the spacebar key will hide the details element content.

10. Role, name, state and property mapping

The summary element should be mapped to a disclosure triangle role in accessibility APIs that have such a role. For example the Mac accessibility API includes the AXDisclosureTriangle role. In accessibility APIs that do not have such a fine grained role, the summary element should be mapped to a button role. The role mapping table contains recommended mappings for the summary element.

The accessible name for the summary element is the text content of the summary element.

When the details element content is hidden, the state of the content should be reflected by an accessible state or property. For example, in the Mac accessibility API on the summary element (AXDisclosureTriangle), set AXValue property to 0. When the details element content is showing on the summary element (AXDisclosureTriangle), set the AXValue property to 1. The hidden and showing states of the details element is reflected by the absence or presence of the open attribute.

A. References

A.1 Normative references

No normative references.

A.2 Informative references

No informative references.