Matthew Raymond wrote:

The role attribute currently describes behavior, and is added so that users with disabilities know what the behavior for a given element is, according to well-known semantics. CSS is supposed to be for presentational. In your scenarior, will there be any way to easily know whether one of the items in the class attribute describes the behavior is purely presentational?

   Well, authors are not supposed to put in purely presentational class
names to begin with

Show me a spec that says that in a normative way. It is merely a "best practice". Class names, in general, are meaningless and meaningful class names should not be part of the core specification.

I have yet to hear an
argument with regards to why |class| can perform the same functions that
|role| can, especially given the allowance in the HTML 4.01 spec for
"general purpose processing".

Of course, if you plan to put all the semantics of a document in the class names, we could do away with many elements. Do you object to <div class="h1"> as a replacement for <h1>?

Otherwise, both authors and machine processors will be easily confused by it.

Eh?

   The values for |role| are nothing more than a new set of class names,
and there is nothing preventing the user from putting in unidentified
|role| values for presentational purposes and then styling them via CSS
using attribute selectors. So aside from being mildly harder to select
from CSS, |role| values are potentially no more semantic than |class|
values.

Authors can misuse anything. <h1 style="font-size:12px; font-weight:normal;">This is the main text of my document put in a heading so that search bots think that it's really relevant and useful</h1>.

   However, let's assume that people would only use semantic values in
|role|. What becomes of |class|? We use it only for styling? That won't
work, because HTML is supposed to be semantic.

We use it for it's purpose - to provide hooks to enable presentational languages to couple to arbitrary groups of elements on a page. This kind of non-semantic hook is _necessary_ so that the temptation to abuse the semantic elements is greatly reduced.

   So what we end up doing is replacing |class| with an attribute named
|role| that has more rules but otherwise does the same thing.

No. We add an attribute which conveys specific semantics ("this element is being used as a UI widget of a particular type). We standardize some well-researched values for that element that are applicable to the needs of non-visual UAs in the real world.


Reply via email to