Re: IDs - make them case sensitive

Rick Jelliffe <ricko@allette.com.au> wrote:
>> TIM BRAY: Why, historically, was the value of an ID restricted to
> Name?
> Because people use the Reference Concrete Syntax.  

Er, no, you are answering the wrong question, I think.

My guess for Tim and Debbie would be this:

Recall that the writers of the SGML standard actually thought that
NAMELEN would improve implementations...  SGML was written in a culture
of what now seem to be very small computers, and placing arbitrary limits
on things reduced memory requirements.

An ID attribute is a NAME, and hence can only contain NAME characters.
In other words, SGML conflates the concepts of uniqueness and data type.

One can imagine a language (to borrow terminology) in which one could write:
    <!AttList Boy
	SocialSecurityID NAME (#REQUIRED, NAMESPACE SocialSecurityID)
	FullName CDATA (#REQUIRED, NAMESPACE Boy/FullName)
    >
to mean that all the boys have to have distinct SocialSecurityIDs, and that
these must be unique on all elements bearing attributes so named, and
that boys' names must also be unique, but don't conflict with NAME attributes
on other elements.

Obviously if you can check that NAMEs are unique, you can check that other
strings are unique.

Case folding and the baroque SGML type system are parts of a sad legacy
that we must retain, I suspect.

Lee

-- 
Liam Quin                   | lq-text freely available Unix text retrieval
Unemployed SGML consultant  | FAQs: Metafont fonts, OPEN LOOK UI, OpenWindows
liamquin@interlog.com       | xfonttool (Unix xfontsel in XView)
+1 416 594 9646 (home)      | the barefoot programmer

Received on Friday, 27 June 1997 23:48:48 UTC