SAX, non-validating parsers, and external parsed entity references

John Cowan (cowan@locke.ccil.org)
Fri, 31 Jul 1998 16:48:13 -0400


There seems to be no way for a SAX-compliant parser that does
*not* expand external parsed entity references (as explicitly
permitted in clause 5.1, to report that it has encountered one.
Thus, given an resource with the URI "foo" whose content is
"<TEST/>", and a document as follows:

<!DOCTYPE MAIN [
<!ENTITY FOO SYSTEM "foo">
]>
<MAIN>
This document is a &foo;
</MAIN>

a conformant parser may return either of the following event streams:

startDocument(); startElement("MAIN");
characters("\tThis document is a ");
startElement("TEST"); endElement("TEST");
characters("\n"); endElement("MAIN"); endDocument();

or

startDocument(); startElement("MAIN");
characters("\tThis document is a ");
characters("\n"); endElement("MAIN"); endDocument();

Parsers of the first kind cannot even report that they have left
something out! This seems to me to be a substantial deficiency
in SAX.

-- 
John Cowan	http://www.ccil.org/~cowan		cowan@ccil.org
	You tollerday donsk?  N.  You tolkatiff scowegian?  Nn.
	You spigotty anglease?  Nnn.  You phonio saxo?  Nnnn.
		Clear all so!  'Tis a Jute.... (Finnegans Wake 16.5)