How is WAI-ARIA State & Role supposed to be implemented?

I've read through these specs:

    http://www.w3.org/TR/aria-state/
    http://www.w3.org/TR/aria-role/

I'm very confused as to how it's supposed to be implemented.

The specs effectively build on top of http://www.w3.org/TR/xhtml-role/  
which, AFAICT, has 0 conformance requirements for UAs. This makes it  
impossible to write test cases against the specs.

Some specific questions below...

The ARIA Roles spec says in Applying roles in XHTML:

    XHTML 1.0 does not support DTD modularization. It is therefore
    necessary to provide the role attribute using its own namespace. For
    example:

       <html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml"
       xmlns:xhtml10="http://www.w3.org/1999/xhtml"
       xmlns:wairole="http://www.w3.org/2005/01/wai-rdf/GUIRoleTaxonomy#"><body>

       <table id="table1" xhtml10:role="wairole:grid">
       ...
       </table>
       </body></html>

xhtml10:role? Where is this attribute defined? How does it solve the  
"problem" of XHTML 1.0 not being modular?

In the Conformance section, it says:

    User agents MUST make all roles provided by the author available in the
    DOM, using the attribute name, namespace, and values defined in this
    specification. This requirement parallels User Agent Accessibility
    Guidelines 1.0 Section 6.2: DOM access to HTML/XML content [UAAG,
    Section 6.2].

This is already required by the DOM Core specs. All attributes end up in  
the DOM with a localName, namespaceURI, prefix and value.

Then we have:

    User agents MUST override implicit roles of elements with roles
    provided by the author. This applies to elements that have particular
    default roles because of the semantics declared by the content
    technology. Processing and presentation must be appropriate to the
    declared role.

This doesn't make any sense to me at all. Are elements with specific roles  
supposed to have special processing and visual rendering in UAs? e.g., if  
role="wairole:separator" is supposed render as an HTML <hr>, what should  
happen with the following markup?:

    <input role="wairole:separator"/>

Should it behave and render as a separator or be a text field? What about  
the DOM interfaces of the element, e.g. HTMLInputElement.value?

-- 
Simon Pieters
Opera Software

Received on Monday, 20 August 2007 15:00:17 UTC