W3C

States and Adaptable Properties Module

A Syntax for adding accessible state information and author settable properties for XML

PFWG Editor's Draft 06 November 2005

This version:
http://www.w3.org/WAI/PF/adaptable/StatesAndProperties-20051106.html
Latest version:
http://www.w3.org/WAI/PF/adaptable (changes from this version)
Previous version:
http://www.w3.org/WAI/PF/adaptable/StatesAndProperties-20050825.html
Editors:
Lisa Seeman, UB Access

Abstract

The attributes defined in this specification provide XML languages with the ability to add extra information about the behavior of an element. States and Adaptable Properties are mapped to accessibility frameworks (such as a screen reader) that use this information to provide alternative access solutions. Similarly state and author properties can be used to dynamically change the rendering of content using different style sheet properties. The result is to provide an interoperable way for associating behaviors with document-level markup.

Request for Comments

The PF working group has developed a roadmap on making dynamic web content more accessible to people with disabilities. To assure these technologies will interoperate in a manner that improves accessibility for the widest range of web technologies, the PF wokring group asks for comments and suggestions on how this specification can be improved for use in the technologies that you or your working group are developing. In general we prefer public comments so that all people (including the general public) reviewing the document can be aware of your comments, but you may also send member confidential comments that will be available only to the working group and other W3C members.

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 can be found in the W3C technical reports index at http://www.w3.org/TR/. This report has not been published to the W3C technical reports index.

This document is a Draft by the Protocols & Formats Working Group of the Web Accessibility Initiative.

This specification adds semantics to content to improve the accessibility and interoperability of Web Content and Applications. This document and the Role Taxonomy for Accessible Adaptable Applications are the result of the gap analysis of the Dynamic Accessible Web Content Roadmap to enable accessible dynamic Web content and applications.

This document is for review purposes only. The web address, URL and file name of this document will change. The Working Group expects to advance this document to Working Draft and to Recommendation.

Publication as a 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 under the 5 February 2004 W3C Patent Policy. The Working Group maintains a public list of patent disclosures relevant to this document; that page also includes instructions for disclosing [and excluding] a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) with respect to this specification should disclose the information in accordance with section 6 of the W3C Patent Policy

Contents

1.Introduction

This section is informative.

States and Adaptable Properties are a simple interoperable way for an author to declare common, important properties of an element that affect and/or describe interaction. The user agent or operating system can then know how to handle the element by mapping the States and Adaptable Properties to an adaptive interface or to the accessibility API of the operating system. For example, alternative input and output technology such as screen readers, speech dictation software and on-screen keyboards need to know the state of an element (such as: if an object is disabled, checked, focused, collapsed, hidden, etc). This specification declares semantics and terms so that the user agent can understand and handle the content correctly, even when these properties are altered dynamically by scripts.

The Dom contract model with accessibility API's

Figure 1.0 illustrates a typical DOM node. Placed within the DOM node and the assistive technology is a box containing the contract provided by the user agent to the assistive technology. This data includes typical accessibility information found in the accessibility API for many of our accessible platforms for GUIs (role, state, caret, selection, event notification, parent/child information, relationship, and descriptions).

For more information see the Dynamic Accessible Web Content Roadmap for the use of roles making dynamically generated content accessible.

1.1 Example

This section is informative. This example shows a role being used to make a simple widget known to the user agent, so that the user agent can handle it correctly.

In this example a div has been used in place of a standard form element checkbox. The State and Adaptable Properties of checked has been set to true.

Also note that the XHTML role element informs use agent information that the behavior of the widget is similar to an HTML checkbox. For more information on Roles see the Role Taxonomy for Accessible Adaptable Applications.

   <span class="checkbox" id="chbox1" x2:role="wairole:checkbox" aaa:checked="true" tabindex="0"
onkeydown="return checkBoxEvent(event);" onkeyup="return checkBoxEvent(event);" > A checkbox label </span>

Javascripts can then manipulate the widget via the Dom. However, because States and Adaptable Properties are mapped to accessibility platforms and API's, the assistive technology and user agents can understand the widget behavior and respond appropriately.

java script snippet : 
if ((event.type == "keyup" && event.button == 0){
// Toggle checkbox
var checkbox = event.target;
if (checkbox.getAttributeNS("http://www.w3.org/2005/07/aaa", "checked") == "true") {
checkbox.removeAttributeNS("http://www.w3.org/2005/07/aaa", "checked");
}
return false; // Don't continue propagating event}
return true; // Browser can still use event
}

In many case States and Adaptable Properties will work well with other supporting technologies, such as Role Taxonomy for Accessible Adaptable Applications, xml-events.

1.2. Terms and Definitions

This section is informative.

While some terms are defined in place, the following definitions are used throughout this document. Familiarity with the W3C XHTML 1.1 Recommendation [XHTML] an the W3C XML 1.0 Recommendation [XML] is highly recommended.

accessibility API
This is the accessibility API for a given platform. Examples of this are the Java Accessibility API (JAPI) [JAPI], Microsoft Active Accessibility (MSAA) [MSAA], and the Gnome Accessibility Toolkit (ATK) [GAP].

1.3 Design Aims

This section is informative. The design aims of creating this specification included: It is the intent of the working group to increase the scope of this specification to support individualized content adaptation and knowledge representation of web content.

2.Conformance Requirements

This section is normative.

The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].

2.1.Document Conformance

States and Adaptable Properties is not a stand-alone document type. It is intended to be integrated into other host languages such as XHTML. A conforming document is a document that requires only the facilities described as mandatory in this specification and the facilities described as mandatory in its host language. Such a document must meet all the following criteria:

  1. The document must conform to the constraints expressed in Appendix A. DTD Implementation combined with the constraints expressed in its host language implementation.

  2. The document must use either of the following:
    1. The following Doctype declaration: <DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 For Accessible Adaptable Applications//EN" "http://www.w3.org/2005/07/aaa/xhtml11-aaa.dtd"> This extends XHTML with States and Adaptable Properties added to the common attribute set.
    2. The document may also contain an xmlns declaration for the author properties namespace. The namespace for States and Adaptable Properties module is defined to be: http://www.w3.org/2005/07/aaa. An example start tag of a root element might look like:
      <html xmlns="http://www.w3.org/2002/06/xhtml2" xml:lang="en"      xmlns:aaa="http://www.w3.org/2005/07/aaa" >

2.2.Host Language Conformance

When States and Adaptable Properties are included in a host language, all of the facilities required in this specification must be included in the host language.

2.3.User Agent Conformance

A conforming user agent must support all of the features required in this specification in the DOM.

3.The States and Adaptable Properties Module

This section is normative.

This specification defines the States and Adaptable Properties module for XHTML.

All examples are informative. Examples in this document that use the namespace prefix "aaa" all assume a valid xmlns declaration xmlns:aaa="http://www.w3.org/2005/07/aaa" in the document involved.

The remainder of this section describes the elements and attributes in this module, the semantics, and provides an abstract module definition as required in [XHTMLMOD].

3.1 Using States and Adaptable Properties Attached to an Element

3.1.1 XHTML

To make XHTML authoring simpler a single doctype has been constructed that extends XHTML with States and Adaptable Properties as defined in this specification.

Use of XHTML with States and Adaptable Properties (XHTML 1.1 For Accessible Adaptable Applications) requires the following doctype declaration:

<DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 For Accessible Adaptable Applications//EN" "http://www.w3.org/2005/07/aaa/xhtml11-aaa.dtd">
3.1.1.1 XHTML with prefixes
The default prefix

Attributes for States and Adaptable Properties should be used with prefix "aaa".

For example:

<?xml version="1.0" encoding="UTF-8"?>
<DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 For Accessible Adaptable Applications//EN">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>DHTML Checkbox</title>
</head>
<body>
<p>Here's a checkbox that you can click on.</p>
<div class="checkbox " id=" chbox1" aaa:required="true" aaa:readonly="true " aaa:random="sometext " onkeydown="return checkBoxEvent(event);" onclick="return checkBoxEvent(event);" >
Sign me up for weekly rdf newsletter :)
</div>
</body>
</html>
Changing the prefix

You can change the default prefix by extending the DOCTYPE of your XHTML document.
For example:

<!DOCTYPE html PUBLIC "-//W3C//ELEMENTS DTD XHTML 1.1 For Accessible Adaptable Applications//EN"
"http://www.w3.org/2005/07/aaa/xhtml11-aaa-base.dtd" [
<!ENTITY % aaa.prefixed "INCLUDE">
<!ENTITY % aaa.prefix "state">
]>
Tabindex

Tabindex is not a state and has not been added to the basic namespace. However to help the accessibility of accessible XHTML applications Tabindex has been added to the tags div, span, p, td, th and li in the extended XHTML Doctype. Tabindex should not be used with a prefix.

3.1.1.2 XHTML without prefixes

Prefixes can sometimes be dropped when using XHTML 1.1 For Accessible Adaptable Applications. For example:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//ELEMENTS DTD XHTML 1.1 For Accessible Adaptable Applications//EN" "http://www.w3.org/2005/07/aaa/xhtml11-aaa-base.dtd"> <html xmlns="http://www.w3.org/1999/xhtml " xml:lang="en ">
<head>
<title>DHTML Checkbox</title >
</head>
<body>
<p >Here's a checkbox that you can click on.</ p>
<div class="checkbox " id="chbox1 " required="true" readonly="true " random="sometext " onkeydown="return checkBoxEvent(event);" onclick="return checkBoxEvent(event);">
Sign me up for weekly rdf newsletter :)
</div>
</body>
</html>

However, this is not advisable because of name space conflict. XHTML 1.1 For Accessible Adaptable Applications extends already existing attributes such as readonly. These attributes therefore require prefixing. We therefore recommend always using the default "aaa" prefix.

The list of conflicts are:

3.1.2 States and Adaptable Properties with other XML languages

States and Adaptable Properties can also be used with other XML languages using the following namespace :

 xmlns:aaa="http://www.w3.org/2005/07/aaa"

The following example demonstrates using States and Adaptable Properties with SVG:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-flat-20030114.dtd">
<svg xmlns="http://www.w3.org/2000/svg " xmlns:aaa="http://www.w3.org/2005/07/aaa " width="100% " height="100% ">
<desc>
Example of using state-attributes from Accessible Adaptable Applications Namespace: 
</desc>
<!-- an expanded group of rectangles -->
<g aaa:expanded="true ">
<!-- this rectangle is zoomed -->
aaa:zoom="150 " x="1cm " y="3cm " width="1cm " height="1cm " />
<rect x="3cm " y="3cm " width="1cm " height="1cm " />
</g>
</svg>

3.2 States and Adaptable Properties

The States and Adaptable Properties Module supports the following attributes:

State Value Description Base and Related Concepts
checked (true | false) Is set, usually, answers to Boolean true state for 2-state widgets. For all non-HTML checkboxes, this state is determined from the value property. If the value is true for the designated roles the corresponding checked state must be set to true. Otherwise, the checked state is determined from the form input control
iconed (true | false) Indicates that the widget has in icon form
disabled (true | false) Indicates that the widget is present, but is not allowed for user actions - disabled elements cannot have focus.

Should also remove element from tab order and change appearance (grayed out, etc.), and prevent it from being

interacted with.


readonly (true | false) Indicates that the widget is present, but is not allowed for user actions - However readonly elements can have focus.

The user agent should not allow value to be changed in the case that this is set to true on an element.

related concept from XFORMS
multiselectable (true | false) Indicates that user may select more than one item from the current list.
domactive (true | false) The DOM activate event occurs when an element is activated, for instance, through a mouse-click or a key-press SVG DOM active
zoom CDATA Defines the zoom of the element (e.g. 150%). SVG
expanded (true | false) Indicates that an expandable/collapsible group of elements is currently expanded, i.e. all its child elements are shown DOM ?
selected (true | false) Indicates that a selectable element is actually selected domActive
pressed (true | false) Indicates that the button is pressed down

Q: Do we want it? Is it the same as selected?

selected
important (true | false) Indicates an important widget. XHTML roles Main / secondary
required (true | false) Indicates that some user-input is required before submission.
haseffect CDATA Special effects working on a widget, such as fadeout
valueNew CDATA The (default) value of a widget. XFORMS Range start
valuemax CDATA Maximum allowed value for a Range type of widget XFORMS range
valuemin CDATA Minimum allowed value for a Range type of widget XFORMS range
step CDATA Minimal value by which a Range element value may be increased or decreased XFORMS Range step
invalid (true | false) Indicates that the element's value is currently invalid, which prevents the form from being submitted. If the state is computed to be invalid, out-of-range, or required this value should be returned as true.
describedby IDREF Points to element which describes the widget
labeledby IDREF Points to element which labels the widget
hasparent IDREF Points to parent element such as the menu item of which this is a pop up menu baseConcept: DC:Source, DC:isPartOf
haschild IDREF Points to the child
haspopup CDATA (Q: what values do we want) Type of has child (Q: do we need it? ) haschild
alternatestyle CDATA Lists alternate styles for the element
tabindex Number (Q: what values do we want) The ordinal number of the element on the screen/page Note: Tabindex has not been added to the basic namespace but only to div, span, p, td, th and li tags in the extended XHTML Doctype. Tabindex should not be used with a prefix.




flowto IDREF The ID of the next element in the default page reading order
flowfrom IDREF The ID of the previous element in the default page reading order
controls IDREF The ID of the element that is controlled by this element XML events object
controlledby IDREF The ID of the element that controls this element XML events
subpageof CDATA (Q: what values do we want) Points to the parent page of the page Q: do we need it? hasParent

3.3 XForms managed states

This section is informative. XForms is designed based on a model view controller architecture. Data model and styling are separated from the actual form elements. This provides for a much more flexible forms model. The rendering is up to the user agent and styling. If the author knows the type of widget that will be generated they may simply add role information to the element or this information could be provided by the User Agent depending on the deployment. The appearance may be suggested as parameters to the form elements such as in the case of a select1, which may be used to represent a radio button. In these situations it is less important to know what the rendering of the element is as the tag defines the semantics. Note: Invalid is a managed state in XFORMS. However in most other languages (such as HTML forms) it is not managed.

A. DTD Implementation

This section is normative.

A.1 Qualified Names Module

Note that this module defines the parameter entity aaa.attrs.qname;. This entity is intended to be used in the attribute lists of elements in any host language that permits the use of AAA attributes on elements in its own namespace. In this case the Host Language driver should set a parameter entity %aaa.prefixed; to INCLUDE. The default prefix to be used is aaa:.

<!-- ...................................................................... -->
<!-- aaa-qname Module ................................................... -->
<!-- file: aaa-qname.mod

PUBLIC "-//W3C//DTD XHTML 1.1 For Accessible Adaptable Applications Namespace//EN"
SYSTEM "http://www.w3.org/2005/07/aaa/aaa-qname.mod">

xmlns:aaa="http://www.w3.org/2005/07/aaa "
...................................................................... -->

<!ENTITY % XHTML.version
"-//W3C//DTD XHTML 1.1 For Accessible Adaptable Applications Namespace//EN" >

<!-- 1. Namespace declarations ::::::::::::::::::::::::::::: -->

<!ENTITY % NS.prefixed "IGNORE" >
<!ENTITY % aaa.prefixed "%NS.prefixed;" >

<!-- Declare the actual namespace of this module -->
<!ENTITY % aaa.xmlns "http://www.w3.org/2005/07/aaa" >

<!ENTITY % aaa.prefix "aaa" >
<![%aaa.prefixed;[
<!ENTITY % aaa.xmlns.extra.attrib "" >
]]>
<!ENTITY % aaa.xmlns.extra.attrib
"" >

<![%aaa.prefixed;[
<!ENTITY % aaa.pfx "%aaa.prefix;:" >
<!ENTITY % aaa.xmlns.attrib
"xmlns:%aaa.prefix; CDATA #FIXED '%aaa.xmlns;'
%aaa.xmlns.extra.attrib;"
>
]]>
<!ENTITY % aaa.pfx "" >
<!ENTITY % aaa.xmlns.attrib
"xmlns CDATA #FIXED '%aaa.xmlns;'
%aaa.xmlns.extra.attrib;"
>

<![%NS.prefixed;[
<!ENTITY % XHTML.xmlns.extra.attrib
"%aaa.xmlns.attrib;" >
]]>

<!-- 2. XML Qualified Names for AAA ::::::::::::::::::::::::::::: -->

<!-- This section declares parameter entities used to provide
namespace-qualified names for all element types.
-->

<!ENTITY % xhtml-datatypes.mod
PUBLIC "-//W3C//ENTITIES XHTML Datatypes 1.0//EN"
"http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-datatypes-1.mod" >
%xhtml-datatypes.mod;

<!-- core attributes to add to all elements; -->

<!-- states -->
<!ENTITY % aaa.checked.qname "%aaa.pfx;checked" >
<!ENTITY % aaa.disabled.qname "%aaa.pfx;disabled" >
<!ENTITY % aaa.expanded.qname "%aaa.pfx;expanded" >
<!ENTITY % aaa.iconed.qname "%aaa.pfx;iconed" >
<!ENTITY % aaa.multiselectable.qname "%aaa.pfx;multiselectable" >
<!ENTITY % aaa.pressed.qname "%aaa.pfx;pressed" >
<!ENTITY % aaa.readonly.qname "%aaa.pfx;readonly" >
<!ENTITY % aaa.selectable.qname "%aaa.pfx;selectable" >
<!ENTITY % aaa.selected.qname "%aaa.pfx;selected" >

<!-- properties -->
<!ENTITY % aaa.alternatestyle.qname "%aaa.pfx;alternatestyle" >
<!ENTITY % aaa.controls.qname "%aaa.pfx;controls" >
<!ENTITY % aaa.controlledby.qname "%aaa.pfx;controlledby" >
<!ENTITY % aaa.describedby.qname "%aaa.pfx;describedby" >
<!ENTITY % aaa.domactive.qname "%aaa.pfx;domactive" >
<!ENTITY % aaa.flowfrom.qname "%aaa.pfx;flowfrom" >
<!ENTITY % aaa.flowto.qname "%aaa.pfx;flowto" >
<!ENTITY % aaa.haschild.qname "%aaa.pfx;haschild" >
<!ENTITY % aaa.haseffect.qname "%aaa.pfx;haseffect" >
<!ENTITY % aaa.hasparent.qname "%aaa.pfx;hasparent" >
<!ENTITY % aaa.haspopup.qname "%aaa.pfx;haspopup" >
<!ENTITY % aaa.invalid.qname "%aaa.pfx;invalid" >
<!ENTITY % aaa.important.qname "%aaa.pfx;important" >
<!ENTITY % aaa.labeledby.qname "%aaa.pfx;labeledby" >
<!ENTITY % aaa.readonly.qname "%aaa.pfx;readonly" >
<!ENTITY % aaa.required.qname "%aaa.pfx;required" >
<!ENTITY % aaa.state.qname "%aaa.pfx;state" >
<!ENTITY % aaa.step.qname "%aaa.pfx;step" >
<!ENTITY % aaa.subpageof.qname "%aaa.pfx;subpageof" >
<!ENTITY % aaa.value.qname "%aaa.pfx;value" >
<!ENTITY % aaa.valuemax.qname "%aaa.pfx;valuemax" >
<!ENTITY % aaa.valuemin.qname "%aaa.pfx;valuemin" >

<!-- tabindex -->
<!ENTITY % aaa.tabindex.qname "tabindex" >


<!-- The following defines a PE for use in the attribute sets of elements in
other namespaces that want to incorporate the XML Role attributes. Note
that in this case the XML-ROLES.pfx should always be defined. -->

<!ENTITY % aaa.states.qname
"%aaa.checked.qname; (true | false) #IMPLIED
%aaa.disabled.qname; (true | false) #IMPLIED
%aaa.expanded.qname; (true | false) #IMPLIED
%aaa.iconed.qname; (true | false) #IMPLIED
%aaa.multiselectable.qname; (true | false) #IMPLIED
%aaa.pressed.qname; (true | false) #IMPLIED
%aaa.readonly.qname; (true | false) #IMPLIED
%aaa.selectable.qname; (true | false) #IMPLIED
%aaa.selected.qname; (true | false) #IMPLIED"
>

<!ENTITY % aaa.props.qname
"%aaa.alternatestyle.qname; CDATA #IMPLIED
%aaa.controls.qname; IDREF #IMPLIED
%aaa.controlledby.qname; IDREF #IMPLIED
%aaa.describedby.qname; IDREF #IMPLIED
%aaa.domactive.qname; (true | false) #IMPLIED
%aaa.flowfrom.qname; IDREF #IMPLIED
%aaa.flowto.qname; IDREF #IMPLIED
%aaa.haschild.qname; IDREF #IMPLIED
%aaa.haseffect.qname; CDATA #IMPLIED
%aaa.hasparent.qname; IDREF #IMPLIED
%aaa.haspopup.qname; CDATA #IMPLIED
%aaa.invalid.qname; (true | false) #IMPLIED
%aaa.important.qname; (true | false) #IMPLIED
%aaa.labeledby.qname; IDREF #IMPLIED
%aaa.required.qname; (true | false) #IMPLIED
%aaa.state.qname; CDATA #IMPLIED
%aaa.step.qname; CDATA #IMPLIED
%aaa.subpageof.qname; CDATA #IMPLIED
%aaa.value.qname; CDATA #IMPLIED
%aaa.valuemax.qname; CDATA #IMPLIED
%aaa.valuemin.qname; CDATA #IMPLIED"
>

<!ENTITY % aaa.attrs.qname
"%aaa.states.qname;
%aaa.props.qname;"
>

<!ENTITY % aaa.extra.attrs.qname
"%aaa.tabindex.qname; %Number.datatype; #IMPLIED"
>


<!ENTITY % aaa-qname.module "IGNORE" >

<!-- End aaa-qname Module ................................................... -->

A.2 ELEMENTS XHTML 1.1 For Accessible Adaptable Applications DTD

This DTD extends XHTML 1.1 and adds the States and Adaptable Property attributes to all its elements.

The attribute tabindex is added to elements p, div, span, th, td and li

<!-- ELEMENTS  DTD XHTML 1.1 For Accessible Adaptable Applications -->
<!-- File: xhtml11-aaa-base.dtd

Copyright (c) 2005, Unbounded Access,
All Rights Reserved.

This DTD module is identified by the PUBLIC and SYSTEM identifiers:

PUBLIC "-//W3C//ELEMENTS DTD XHTML 1.1 For Accessible Adaptable Applications//EN"
SYSTEM "http://www.w3.org/2005/07/aaa/xhtml11-aaa-base.dtd"

xmlns:aaa="http://www.w3.org/2005/07/aaa"

The DOCTYPE declaration that should be used is as follows;

<!DOCTYPE html
PUBLIC "-//W3C//ELEMENTS DTD XHTML 1.1 For Accessible Adaptable Applications//EN"
"http://www.w3.org/2005/07/aaa/xhtml11-aaa-base.dtd">

...................................................................... -->

<!ENTITY % XHTML.version
"-//W3C//ELEMENTS DTD XHTML 1.1 For Accessible Adaptable Applications//EN" >

<!ENTITY % aaa-qname.mod
PUBLIC "-//W3C//DTD XHTML 1.1 For Accessible Adaptable Applications Namespace//EN"
"http://www.w3.org/2005/07/aaa/aaa-qname.mod" >
%aaa-qname.mod;


<!-- add AAA attribute set to all XHTML elements -->
<!ENTITY % Common.extra.attrib
"%aaa.attrs.qname;"
>

<!ENTITY % xhtml11.mod
PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" >
%xhtml11.mod;

<!-- add tabindex to text containers -->
<!ATTLIST %div.qname;
%aaa.extra.attrs.qname;
>

<!ATTLIST %span.qname;
%aaa.extra.attrs.qname;
>

<!ATTLIST %p.qname;
%aaa.extra.attrs.qname;
>

<!ATTLIST %th.qname;
%aaa.extra.attrs.qname;
>

<!ATTLIST %td.qname;
%aaa.extra.attrs.qname;
>

<!ATTLIST %li.qname;
%aaa.extra.attrs.qname;
>

<!ENTITY % aaa.prefixed "INCLUDE">

<!-- End xhtml11-aaa-base.dtd -->

A.3 XHTML 1.1 For Accessible Adaptable Applications DTD

This DTD requires the use of the "aaa" prefix.

<!-- DTD XHTML 1.1 For Accessible Adaptable Applications -->
<!-- File: xhtml11-aaa.dtd

Copyright (c) 2005, Unbounded Access,
All Rights Reserved.

This DTD module is identified by the PUBLIC and SYSTEM identifiers:

PUBLIC "-//W3C//DTD XHTML 1.1 For Accessible Adaptable Applications//EN"
SYSTEM "http://www.w3.org/2005/07/aaa/xhtml11-aaa.dtd"

xmlns:aaa="http://www.w3.org/2005/07/aaa"

The DOCTYPE declaration that should be used is as follows;

<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.1 For Accessible Adaptable Applications//EN"
"http://www.w3.org/2005/07/aaa/xhtml11-aaa.dtd">

...................................................................... -->

<!ENTITY % XHTML.version
"-//W3C//DTD XHTML 1.1 For Accessible Adaptable Applications//EN" >

<!-- Enable prefixing -->
<!ENTITY % aaa.prefixed "INCLUDE">

<!ENTITY % xhtml11-aaa.mod
PUBLIC "-//W3C//ELEMENTS DTD XHTML 1.1 For Accessible Adaptable Applications//EN"
"http://www.w3.org/2005/07/aaa/xhtml11-aaa-base.dtd" >
%xhtml11-aaa.mod;

<!-- End xhtml11-aaa.dtd -->

B. Managed States

This section is informative.

Managed states are state attributes managed and controlled by the user agent. Often these states have corresponding CSS pseudo classes to reflect necessary style changes. The states in this specification are typically controlled by the author and are not managed (unmanaged) states.

Accessibility API's typically map to both managed and unmanaged states. An example of a managed state would be element focus and hover.

Note: Invalid is a managed state in XFORMS. However in most other languages (such as HTML forms) it is not managed.

C. Mapping States and Adaptable Properties to Accessibility API's

This section is informative.

Mapped properties

States and Adaptable Properties module User Agent mapping via MSAA User Agent mapping via ATK
disabled MSAA:STATE_SYSTEM_UNAVAILABLE ATK:ATK_STATE_DISABLED
checked . MSAA: STATE_SYSTEM_CHECKED ATK: ATK_STATE_CHECKED
expanded If the hidden property is set to true : MSAA:STATE_SYSTEM_COLLAPSED

If the hidden property is set to false: MSAA:STATE_SYSTEM_EXPANDE

If the hidden property is set to true : ATK: ATK_STATE_EXPANDABLE

If the hidden property is set to false: ATK:ATK_STATE_EXPANDED

haspopup This state should be mapped to true on Windows systems when an event handler has a role of pop-up menu.

MSAA: haspopup

ATK: not necessary in ATK because it has multiple actions with description
invalid MSAA: no mapping

In the case of MSAA the user agent should provide a specialized API to return its value. Alternatively, if the user agent provides a specialized API for XForms it may provide invalid(), outOfRange(), or empty() (returns true when required but not available). This information is computed from the instance data associated with the form element.

ATK:ATK_STATE_INVALID
multiselectable MSAA:STATE_SYSTEM_EXTSELECTABLE ATK:ATK_STATE_MULTISELECTABLE
pressed MSAA: STATE_SYSTEM_PRESSED is true when checked. ATK: ATK_STATE_PRESSED is true when checked
readonly MSAA:STATE_SYSTEM_READONLY

ATK:ATK_STATE_READONLY=inverse of readonly
required MSAA: There is no mapping.

User agent must make available through the DOM or a specialized API.

Note: While optional could be combined with required this is kept to be consistent with CSS3 pseudo classes and XForms.

ATK: There is no mapping.
selected MSAA:STATE_SYSTEM_SELECTED ATK:ATK_STATE_SELECTED
unknown MSAA:mixed ATK:indeterminate
value MSAA: should return the value for getValue(). ATK: should return this as part of of the AccessibleValue structure.
(As yet) unmapped properties are:

Appendix D : References

[RFC2119]
"Key words for use in RFCs to indicate requirement levels", RFC 2119, S. Bradner, March 1997. Available at: http://www.rfc-editor.org/rfc/rfc2119.txt
[XML]
"Extensible Markup Language (XML) 1.0 (Second Edition)", W3C Recommendation, T. Bray et al., eds., 6 October 2000. Available at: http://www.w3.org/TR/2000/REC-xml-20001006 The latest version is available at: http://www.w3.org/TR/REC-xml
[XHTMLMOD]
"Modularization of XHTML", W3C Recommendation, M. Altheim et al., eds., 10 April 2001. Available at: http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410 The latest version is available at: http://www.w3.org/TR/xhtml-modularization
[MSAA]
"Microsoft Active Accessibility (MSAA) state information". Available at: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msaa/msaaccrf_8y2b.asp
[GAP]
"Gnome Accessibility Project (GAP) State and StateSets". Available at: http://developer.gnome.org/projects/gap/tech-docs/at-spi-docs/at-spi-cspi-state-and-statesets.html
[AAC]
"Apple Accessibility for Cocoa". Available at: http://developer.apple.com/documentation/Cocoa/Conceptual/Accessibility/index.html
[JAPI]
"Java Accessibility API (JAPI)". Available at: http://java.sun.com/products/jfc/accessibility/index.jsp