RE: [Docstring-develop] DTD patches
Status: Pre-Alpha
Brought to you by:
goodger
From: Garth T K. <ga...@de...> - 2001-07-26 11:05:04
|
>> I'd rather *not* put system identifiers in the DTDs themselves. I've looked into it a little more. From my `reading`_, system identifiers are compulsory:: External Entity Declaration [75] ExternalID ::= 'SYSTEM' S SystemLiteral | 'PUBLIC' S PubidLiteral S SystemLiteral .. _reading: http://www.w3.org/TR/2000/REC-xml-20001006#dt-extent We've got to give it a URI reference of some sort. Giving the http URL of the DTD doesn't make sense (otherwise we'd have to update the web site to test changes), so ``"gpdi.dtd"`` et al look like our only hope. What am I missing? <rummage rummage> It looks like SystemLiteral has been compulsory since `March 1997`_:: 5. Should production 69 (external ID) be changed to make the SystemLiteral optional? Unanimous: leave it required. .. _March 1997: http://lists.w3.org/Archives/Public/w3c-sgml-wg/1997Mar/0446.html It looks like there are other times when SystemLiterals are optional (for example, when specifying a NOTATION declaration in RDF), and that makes sense to me -- an RDF parser can't necessarily depend on having either net access or a copy of any DTD someone happens to refer to. In a DTD, though, the parser *must* be able to get hold of the external DTD to which you're referring otherwise it can't validate the XML being handed to it, hence SystemLiteral's compulsory nature. Not all parsers will know how to look up all PubidLiterals, so we need the SystemLiteral as a backup. There was an awful lot of thrash in the mailing list about the decision to make SystemLiterals compulsory. Having read a fair bit, I can see why -- they got so confused about the Moby Dick analogy that nobody could see beyond the cloud of dust. :) That said, three years after the thrash the spec still reads as above. Regards, Garth. |