In the "add type to mark element" discussion which I started, a side argument about ids and classes was brought up. I conveyed my opinion that I think classes should only be used as style handles and not to convey extra semantic meaning.
The HTML4 spec states:

"The class attribute has several roles in HTML:

* As a style sheet selector (when an author wishes to assign style information to a set of elements).
   * For general purpose processing by user agents."

The first role is clear, it is used for styles (not semantics) the second is a bit more muddy I think, but the important part there is: "processing BY user agents". User agents have no interest in semantics, so I fail to see here also why classes may be used to define semantic roles. The fact that a class should be named "footnote" for example is only so you will not get in trouble (unlike when you use a name like "red" or "left"). But this only tells me (the author) that this element should be styled like a footnote and for the user agent that it should render it like a footnote. It should not tell me (or anything else) that it IS a footnote. This would lead inevitably to inflexibility.

Let me however put forth a -maybe silly- idea I have had for a long time. In seperating content from style it would seem logical to me that the next step would be to place most attributes (except id and a new role-attribute) also in an external file. Assignment of attributes and purpose can then also be done externally from the html-file leaving it only to contain pure content. (this would benefit SEO, machine readability, accessibility and maintainability).

The obvious benefits would be that one can maintain things externally like: links, images, accesskeys, list-numbering, hiding, etc. and if we would assign a common attribute to all elements called "edit" we could set that externally too (like "draft, deleted, approved, date, etc.). but the biggest benefit (I think) is that we can set classnames externally. this way we do not have to touch the html-file to change styles, but simply change the properties in the external attribute sheet. The new role attribute would be completely semantic and classes are no longer indide the html so their naming can be more style-related. And changing a style would no longer mean changing the stylesheet, but changing the attributesheet. It would make CSS a little bit more modular (and flexible).

Well, let me have it ;-)

Bert

Reply via email to