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.
|