static.html

— a blog about web development and whatnot by Steve Webster

I've been guilty of taking the <cite> element for granted, but what would a future with a more restrictive <cite> element be like, and is it the kind of future we really want our children to grow up in?

The HTML 4.01 spec defines the <cite> element thusly:

Contains a citation or a reference to other sources.

This allows content authors to use the <cite> element to cite or reference a publication, website, group or individual person as the source or reference to the topic being discussed. When used with the little-known <q> element for marking up quotations, the <cite> element is perfect for semantically attributing a quotation. HTML 4.01 specification even uses this as an example of how to use the <cite> element:

As <CITE>Harry S. Truman</CITE> said,
<Q lang="en-us">The buck stops here.</Q>

Fast forward to a future where Google knows more about you than your own parents and HTML4 is finally put out to pasture. If you think that in this not-so-mythical future you'll still be marking up quotations as above, think again. According to the latest WHATWG HTML5 working draft, the <cite> element is no longer suitable for referencing a person:

The cite element represents the title of a work (e.g. a book, a paper, an essay, a poem, a score, a song, a script, a film, a TV show, a game, a sculpture, a painting, a theatre production, a play, an opera, a musical, an exhibition, a legal case report, etc)… A person's name is not the title of a work — even if people call that person a piece of work — and the element must therefore not be used to mark up people's names.

Okay, so I'm open-minded enough to accept that there's probably a good reason for this, even if that reason is not made known as part of the specification. However, I don't think anyone would argue against the need some semantic element for attributing a quote to the person being quoted. What does the HTML5 spec recommend?

In some cases, the b element might be appropriate for names; e.g. in a gossip article where the names of famous people are keywords rendered with a different style to draw attention to them. In other cases, if an element is really needed, the span element can be used.

Yes, you read that correctly; we have a choice of the <b> or <span> tags, both of which are by design completely devoid of semantic meaning. Brilliant. I mean, that's genius on such a grand scale that it actually seems rather moronic. Or maybe it's just moronic.

It's not often that I agree with Jeremy Keith, but I'll make an exception in this case:

If we resolutely refuse to implement part of the HTML5 spec, then the spec becomes fiction.

Join me in a campaign of civil disobedience against the unnecessarily restrictive, backwards-incompatible change to the cite element. Start using HTML5 but start using it sensibly. Let’s ensure that bad advice remains fictitious.

Tantek has set up a page on the WHATWG wiki to document usage of the cite element for conversations. Please contribute to it.

Given that one of HTML5's design principles is to consider adopting widespread practices, I urge you to help us to document examples of the <cite> element being used in the wild to attribute people. Head on over to the WHATWG cite element wiki page to get involved.

Oh, and I've decided not to use any kind of semantic citation in this post as a protest. It has nothing to do with the fact that this blog post is written in Markdown format, which supports neither the <cite> element nor the cite attribute on blockquotes. Nothing at all. Honest.