PEReferences in comments

Ron Bourret (rbourret@dvs1.informatik.tu-darmstadt.de)
Thu, 6 Aug 1998 18:58:31 +0200


Are parameter entity references in comments in the external subset supposed to
be expanded? Section 4.4 defines "Reference in DTD" as "a reference within
either the internal or external subsets of the DTD, but outside of an
EntityValue or AttValue". Section 4.4.8 then states that such a reference is
replaced with the replacement text bracketed by single spaces. I take this to
mean that, outside of EntityValue and AttValue, all parameter entity references
are expanded; the spaces mandated by 4.4.8 limit the usefulness of parameter
references to replacing complete tokens.

It therefore seems that the following statements:

<!ENTITY % foo "here is my comment">
<!--%foo;-->

are equivalent to:

<!-- here is my comment -->

However, MSXML ignores such parameter references, and both IBTWSH
(http://www.ccil.org/~cowan/XML/ibtwsh.dtd) and part of the XML version of
DocBook (http://nwalsh.com/docbook/xml/0.7/dbpoolx.mod) use parameter references
in a way clearly not intended to be expanded. There is also no mention of them
in Chris Hubick's external DTD grammar. (He also doesn't include PubidLiteral,
which it seems would also allow PEReferences.)

Since the people who wrote these are not exactly slouches, I am hard-pressed to
say they are wrong, yet I can't figure out why they wouldn't be (modulo the
usual concerns about validating vs. non-validating parsers).

-- Ron Bourret