Thursday, August 09, 2007

HTML 5

WHOA!!!

(Will update this with something more coherent later after lunch)

Okay, so it took a whole day for me to update this, but here I go. The first draft of HTML 5 and XHTML 5 (the eventual successors of HTML 4 and XHTML 1.1, respectively), has recently been released by W3C's HTML Working Group. They've created a bunch of new elements and attributes, as well as modified or removed a quite a few of the existing ones. If you're like me, you'll enjoy reading this document detailing the changes made in the language.

One very interesting they did is to redefine the use of some of the presentational tags of HTML 4 (<b>, <i>, etc.) so that they're now mostly semantic in nature. In other words, most of HTML 5 elements are used to give things meaning, not just mainly to change their appearance. For example, when before <i> is used for the sole general purpose of italicizing text, HTML 5 now tells you to use <i> only for text that's of an "alternate voice or mood", like keywords, foreign phrases, thoughts (in a narrative, for instance), etc. Yes, programmers could still abuse the element by placing <i> tags to italicize other things, but at least there is now a proper semantic definition that good web programmers could refer to.

Other notable changes:

  • No more font tag. Hmmm...loss of convenience, but I suppose html riddled with font tags had always been ugly and confusing.
  • No more frames!
  • The new dialog element is interesting but weird. First, why overload the dt and dd elements to indicate the speaker and the speech (respectively), instead of creating new, more aptly named child elements for the dialog? I also wonder what the attributes for the dialog tags would be; it'd be cool if an individual speech had an optional time attribute for such purposes as imitating recorded conversations.
  • Basically by adding a lot of semantic tags, they made it so that the rather vague div and span tags are less used. Now we have such elements like article, footer, time, and figure that put more meaning to your CSS layout, making your HTML and CSS files easier to understand by humans and machines (e.g. search engines) alike.