W3C home > Mailing lists > Public > www-html@w3.org > May 2002

Re: Fragment identifiers and 'ID' attribute values: case matters

From: Etan Wexler <ewexler@stickdog.com>
Date: Sun, 26 May 2002 01:37:13 -0700
To: Bjoern Hoehrmann <derhoermi@gmx.net>, www-html@w3.org
Message-ID: <3CF03C49.25331.DE2BCD@localhost>
Bjoern Hoehrmann wrote:

> Thus the value of the id attribute in HTML 4 is case-insensitive.

No, not quite.  An author may write the 'ID' attribute value specification with lower-case 
letters, true.  But the resultant attribute value has all letters in upper case.  It does not 
even make sense to talk of the value itself as case-sensitive or -insensitive.  The 
processes and applications which use the value may be case-sensitive or -insensitive.

> The HTML 4 recommendation says, the value is case-sensitive.

Then processes and applications which use the value must be case-sensitive.

> Either the prose or the SGML declaration is in error in this case.

I do not find a contradiction.

> I guess the
> prose represents the intent of the working group, but it is not possible
> to force an SGML processor to treat IDs case-sensitive, while treating
> other names (entity names are the exception) case-insensitive, hence one
> cannot require them to in the prose.

The prose may contain traps for the unwary, but it is not in error.

> The problem is the
> name attribute value of some elements that also acts as anchor in HTML
> documents. It's also described as case-sensitive in the prose. In
> consequence this is an error. IDs and names are said to share the same
> namespace, they cannot do so, if they do not have the same rules about
> case-sensitivity.

The two attributes certainly may share the same namespace even if their preprocessing 
requirements differ.  The trick for authors is to write proper attribute specifications.  
Consider the following start tags and their status in HTML4.

<A ID="AnElement"> Legal: anchor name is "ANELEMENT".
<A NAME="AnElement"> Legal: anchor name is "AnElement".
<A ID="AnElement" NAME="AnElement"> Illegal: anchor names differ only in case.
<A ID="AnElement" NAME="ANELEMENT"> Legal: anchor names are identical.

The HTML4 specification gets this incorrect in an example.

Wisdom dictates that it is best not to confuse software or people, so, in HTML4, anchor 
names *specified* in upper case are safest.

Etan Wexler <mailto:ewexler@stickdog.com>
Received on Sunday, 26 May 2002 04:38:25 UTC

This archive was generated by hypermail 2.3.1 : Wednesday, 7 January 2015 15:05:59 UTC