Re: ARIA as stop-gap (was Re: Next steps for the ARIA syntax discussion)

Anne van Kesteren 2008-05-30 17.03:

> On Fri, 30 May 2008 16:57:27 +0200, Elliotte Harold ...
>> 1. Accept that HTML is monolithic. Merge ARIA into the core HTML spec, 
>> or incorporate it by reference. Make an ARIA attribute 
>> programmatically no different  than class or style or id. ARIA is just 
>> a part of HTML 5, and provides no support for other host languages.
> 
> I don't really see why only this is plausible. class, style, and id work 
> in HTML, SVG, and MathML. Why can't the same go for ARIA?


How about making it a true statement that aria can be compared to 
class, id and style? I.e. *one* aria attribute instead of aria-* ?

The aria-* syntax creates a multitude of attributes. It is as if 
one decided to go for style-font="*" instead of style="font:*".

OTOH <element aria="prefix-value" > would work fine with CSS 
selectors, and the content of the aria attribute could also be 
directly copied to the class attribute, for legacy support -- 
which seems to be a mayor concern.

If we really want it to be simple for authors to select elements 
based the element's aria values, then a *new* selector is needed. 
Perhaps it is for the CSS selectors, that we need "aria:" as a 
prefix. Or may be a aria(value) selector. See examples below.

I must say that I look with unhappiness at the aria-* attributes. 
Where is authors' benefit of using ARIA instead of class= ?

ARIA is supposed to provide "semantic hooks" in addition to the 
semantic free "class" and "id" hooks. (Of course, it is low-level 
semantics, close to behaviour, we talk about.) Hence implementing 
ARIA as a kind of class attribute should make sence. The challenge 
only is that we need a syntax for its "predefined class names".

	Example - markup:

<h1 id="someHeader>Some header</h1>
<ul role="group"  aria="labelledby-someHeader" 
class="labelledby-someHeader">
   <li id="cb1" class="describedby-someHiddenElement 
checked-false" tabindex="0"
       role="checkbox"
       aria="describedby-someHiddenElement checked-false" >
       Lettuce
   </li><li></li></ul>

	Example - CSS:

li.aria:checked-false {/* = new ARIA CSS selector, alt. 1 */}
li.aria(checked-false){/* = new ARIA CSS selector  alt. 2 */}
li.checked-false      {/* = old class selector            */}
li[aria|="checked"]   {/* = old attribute value selector  */}

Note that the last selector will select any ARIA attribute with a 
value that begins with "checked-*". Also note, of course, that 
having a single aria attribute lets you select all elements which 
include it -- *[aria]{}. Something which is not possible with 
aria-*, since we do not have any *[aria-*]{} selector.
-- 
leif halvard silli

Received on Wednesday, 4 June 2008 17:04:31 UTC