Hixie's Natural Log

2007-02-28 09:00 UTC Fixing the "usemap" attribute

Back in 2001, the XHTML working group published XHTML 1.1, a set of XML DTDs to allow people to use HTML4's semantics together with XHTML Ruby in XML.

That document contained a very minor mistake. In HTML4, the usemap attribute of img elements is defined to take a URI, but in the XHTML 1.1 specification, it's defined as taking an IDREF. The working group actually had already known about it in 2000, but had decided it wasn't a big deal to break compatibility here. (Sorry, that's a W3C member-only link — the XHTML working group is not an open working group; it does all its work in secret.)

In late 2001, the group discussed the issue and decided to reopen it (secret link again).

In early 2002, Jukka K. Korpela reported the issue to the working group. The XHTML working group replied saying they'd discussed this and agreed to fix it (secret link again, sorry). They even actually did agree (secret) to fix it, a few weeks after announcing they had so agreed.

It was reported in passing in mid-2002 in the HTML validator mailing list, where it was reiterated by the HTML working group that this was a mistake that would be fixed.

Tantek then proposed to the HTML working group (secret) that the real solution would be to allow the "#" character but not make it a URI.

The issue was once again reported in 2004 by Bjoern Hoehrmann. This time, the working group replied (in secret) that they had decided that it wasn't in fact an error, but that it would be changed in future versions of XHTML, just not in the XHTML 1.1 version. (No trace of Tantek's proposal remaining.)

At the end of 2004, it was again reported on the validator mailing list. The HTML working group did not reply.

It was once again reported in 2006 by Anne van Kesteren. There, the working group said they agreed "in principle" (and in secret) but that they would do the change in a later version, rather than fixing the XHTML 1.1 specification. Anne made it clear that this wasn't satisfactory, but the working group dismissed (secretely) his concerns saying it was the group's explicit goal not to fix problems while they updated the specification.

While all that was happening: in 2004 a group of people including myself formed an open working group known as the WHAT working group and started working on a specification for HTML5. As of today, that specification is mostly complete; I'm now going through the thousands of e-mails of feedback we received over the past few years. One of the things that spec does is specify exactly how usemap should work, both for HTML and XHTML: it's really neither a URI nor an IDREF, it's what we're calling a hashed ID reference, and it has very specific parsing rules and processing models, which are detailed carefully and completely.

Meanwhile, the XHTML working group has published a new draft of XHTML 1.1, which still has the IDREF problem.

In fact, the only change I can see is that they added XML Schema support, along with a boatload of new boilerplate text to put at the top of the document. Your XHTML 1.1 conformant documents now start with (the emphasised parts are the required bits, the rest can thankfully still be skipped):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"

In contrast, an HTML5 conformant documents start with:


So. To recap. In the time it took the closed and secretive XHTML working group to release a new version of this specification which did not fix one of its simplest problems despite that problem being reported multiple times, the open and transparent WHAT working group wrote an entire HTML specification, more detailed than any previous such effort, and fixed the problem in the process.

Pingbacks: 1