- From: Robert Burns <rob@robburns.com>
- Date: Wed, 18 Jul 2007 21:42:08 -0500
- To: HTML WG <public-html@w3.org>
In an Earlier thread, we discussed the ways HTML5 could build-in
accessibility by providing commonly used widgets and UI controls that
UAss could then map to the accessibility hooks provided by the UA or
by the UAs host operating system. That idea had led me to propose
doing this with the @role attribute by having a a sensible default
@role value set for each element.
On Jun 27, 2007, at 1:36 PM, Robert Burns wrote:
> One idea that comes to mind from this discussion is that the new AT
> related elements (like <progress>) might be defined in terms of
> @role by indicating what the @role value would be by default (and
> cautioning that it should not be changed except in rare
> circumstances etc.). I think this would raise awareness about @role
> and demonstrate its proper use. Its this type of default usage that
> helps authors understand and properly extend these facilities.
The great advantage of this approach is it still allows simple
authoring techniques to accomplish decent accessibility, but it also
serves as a pedagogical device by demonstrating how to use the @role
attribute for other custom extensions of HTML's semantics. This
brings together many of our design principles: accessibility,
extensibility, backwards compatibility, etc.
Just to try to provide a more concrete example, consider the HTML5
progress element. By simply adding the @role attribute as a global
attribute[1], we would then specify a default value for each element.
The <progress> element would have a default value of "progressbar". A
UA running on Mac OS X (as just an example), would then map any
object created with a role of "progressbar" to the Mac OS X
accessibility API's[2] role of "kAXProgressIndicatorRole". Since the
<progress> element would have this default value for role, it too
would be mapped to this.
Summary:
HTML5 Element: <progress> with a default @role value of
"progressbar"
WAIrole: progressbar
Mac OS X Accessibility Services: kAXProgressIndicatorRole CFSTR
("AXProgressIndicator")
In this way, the use of role would be there and implemented by UAs
without authors doing anything. Authors would not require any
knowledge of @role it would simply "just work" behind their backs.
However, as a pedagogical device, some authors would notice these
@role attributes. As authors made new innovations and created new UI
from HTML markup, they could also make use of the WAI role values on
their new widgets. UAs would simply need to comprehensively map the
WAI role values to their own internal (OS) role values. If HTML5
identified any other roles missing from the WAI vocabulary, we would
simply add those to the available repertoire. The @role attribute,
all of the WAI role values, and any other role values we felt
necessary would all exist in the HTML namespace so there would be no
namespace headaches to deal with. Therefore when using role would not
require the explicit use of namespaces at all. However, in the xml
serialization authors would be free to use other role-value
namespaces so long as the targeted UAs support those namespaces.
This to me seems like a big win. This is one of those instances where
its hard to think of any disadvantages. To many authors the role
attribute would just be there doing its work behind the authors back.
Even those authors wanting to make use of role would do so without
the need to incorporate namespace declarations. More advanced use in
the xml serialization would permit the more advanced approach of
incorporating roles from other namespace.
Any thoughts? Any disadvantages, I'm missing here?
Take care,
Rob
[1]: <http://www.w3.org/WAI/PF/GUI/roleTaxonomy-20060221.html>
[2]: <http://developer.apple.com/documentation/Accessibility/
Reference/AccessibilityLowlevel/index.html>
Received on Thursday, 19 July 2007 02:42:37 UTC