>Date: Sun, 25 Apr 1999 16:09:01 -0700 (PDT)
>From: Dan Vint <dvint@slip.net>
>I'm working with the REC-xml-19980210 version of the XML spec.
>
>I'm making an assumption that there should be a reference to a production rule
>in order for it to be used, and that if there isn't a rule allowing it, the
>examples and any textual reference to a feature doesn't imply that it is
>valid.
This assumption is not correct for the rule specifying the legal contents
of the external DTD subset.
>Given that I think I have found 2 problems:
>
>1) Although there is a section about external subsets and there are two rules in
>that section, nothing references rule [30] extsubsetdecl.
Right. The external subset has, as it were, a separately rooted parse
tree. The grammar for documents covers what is technically called the
'document entity': i.e. its grammar shows (in production [28]) how
to refer to the external subset. I suppose we could have introduced
the non-terminal for the external subset in production 28, but that does
not seem very clear, either. (The grammar in ISO 8879, which defines
SGML, does things roughly that way, and it took me several years to
understand what was going on in that part of the grammar.)
>2) Parameter entities are shown as being allowed in the Name or the content model in the examples for the [45]elementdecl, but I don't see any productions
>that allow parameter entities to be defined in a [5]Name.
Parameter entities for parts of declarations don't appear in the
grammar, only parameter entities for whole declarations, since the
rules adopted for parameter entities turned out to be rather hard to
express in EBNF. We did try various ways of dealing with the problem,
some of which did explicitly appear in the productions of the grammar;
while I am not over-happy at what we came up with, I believe it has
the virtue of being better than any of the other approaches discussed
or tried.
>I haven't tried these out with a parser yet, so I'm not sure how they are
>being implemented, but it seems that there are a couple of problems here.
>
>Also I notice a duplication in rules that isn't needed:
>
>pubidliteral in externalID [75] creates a PUBLIC id, but the nnotationdecl [82]
>references externalid and a new publicID [83]. It seems that externalID does
>it all.
Note that an externalId which begins with the keyword PUBLIC is required
to have a system identifier; the notation declaration may use that form,
or may use a form with a PUBLIC identifier and no SYSTEM identifier.
>Is there an ademdem or list of corrections that are available that I should
>be looking at?
The list of known errata is pointed to from the text at the beginning
of the spec. That list was neglected for some time, but has recently
been attended to, so the pointer is no longer vacuous.
I hope this helps.
-C. M. Sperberg-McQueen
Co-chair, W3C XML Schema Work Group
Senior Research Programmer, University of Illinois at Chicago