On the abolishment of IDs (Re: IDs - make them case sensitive)

 
> From: Tim Bray <tbray@textuality.com>
 
> At 05:14 AM 28/06/97 +1000, Rick Jelliffe wrote:
> >Everyone send in strings they have *actually* wanted to use as
unique
> >IDs. ...If you ever changed your
> >SGML declaration to add a symbol to namechar, that would be
acceptable
> >too.
> 
>
http://www.infoseek.com/Titles?qt=epistemology;col=WW;sv=IS;lk=noframes;
nh=10
> 
> No conceivable path of adding things to Namechar is a reasonable
> solution. -T.

But you have just given ":/?=;".  That satisfies your example. 

On thing that having all the types of internal names having the same
rules gives us is the ability to use attribute value lists to actually
point to names:

If Tim makes up his document where every 'ID' is a URL, and I want to
make
up a DTD that gives the user a choice of selecting some parts of it:

<!ATTLIST xxx
	inTim	( 
http://www.infoseek.com/Titles?qt=sophistry;col=WW;sv=IS;lk=noframes;nh=
10
|http://www.infoseek.com/Titles?qt=alchemy;col=WW;sv=IS;lk=noframes;nh=1
0
) 
http://www.infoseek.com/Titles?qt=alchemy;col=WW;sv=IS;lk=noframes;nh=10

>

I currently can do it, by adding ":/?;" to the NAMECHAR.  

I can also use attribute value lists to nominate element types,
attribute identifiers, notations, etc etc.   All the same mechanism.

If we abolish IDs in favour of unique CDATA, we lose this kind of
ability, without then adding another layer of indirection.  And we
complicate 
the syntax of anything that tries to use the unique CDATA as an ID. And
we increase the difficulty of reading the markup.  

On the other hand, CDATA IDs would dump on us the nasty:

<xxx
href="http://www.infoseek.com/Titles?XML-LINK=ID(
             http://www.infoseek.com/Contents?XML-LINK=ID(
               http://www.infoseek.com/book?qt=sophistry
		 ))..ID(
		 http://www.infoseek.com/Titles?qt=tyromancy)" />

Which is nasty because there is a transition between query
and ID that is not marked up: the outside () has a meaning
as part of XML-link, the inside () are just characters in IDs.
I think this is poor language design.  

We have just been removing overloading from SGML delimiters 
in XML.  Surely it is inconstant to then reintroduce overloading
en masse by allowing CDATA ID? Unless we then decide to have:

<xxx
href="http://www.infoseek.com/Titles?XML-LINK=ID(
             'http://www.infoseek.com/Contents?XML-LINK=ID(
               &apos;http://www.infoseek.com/book?qt=sophistry&apos;
		 )')..ID(
		 'http://www.infoseek.com/Titles?qt=tyromancy')" />
or

<xxx
href="http://www.infoseek.com/Titles?XML-LINK=ID(
        <[CDATA[http://www.infoseek.com/Contents?XML-LINK=ID(
              
&lt;[CDATA[http://www.infoseek.com/book?qt=sophistry&lsqb;]>)]]>
             )..ID(
             <[CDATA[
		 http://www.infoseek.com/Titles?qt=tyromancy]]>)" />

to  clearly markup the boundaries.   

Would the HTML people be happy about
 <a href="#<a href=#xxx><html></html><!--">  
for example?  I know this is a dumb thing to do, but is a dumb thing
people can do, and it will be valid.  


Rick -Jelliffe	


Rick Jelliffe

Received on Saturday, 28 June 1997 02:26:22 UTC