SAX: Resolving entity sysids

Lars Marius Garshol larsga at
Thu Mar 12 13:05:55 GMT 1998

I'm currently writing an SGML Open catalog parser in Python for
inclusion in a set of XML parsing tools I'm building at the moment and
I'm also writing a SAX EntityHandler to interact with the catalog

However, those SGML Open catalogs allow one to specify things like

ENTITY my-entity "sysid1"
ENTITY %my-entity "sysid2"

Which causes me grief, since SAX does not distinguish between these
two kinds of entities so there's no way to tell whether the entity
name given in the call to resolveEntity belongs to a general or
parameter entity.

If XML does not have separate name spaces for parameter and general
entities this won't be a problem, but as far as I understand the 1.0
spec, the name spaces are separate.

One way to solve this might be to use a preceding "%" in the entity
name to signal parameter entities. Since "%"s are not allowed to start
entity names this should be sufficient. Clients that aren't interested
in the difference can just disregard the leading "%".

BTW: This is actually the first "problem" I've had with the SAX
     specification. IMHO it is very clear and includes exactly what is
     needed. Well done! :)

"These are, as I began, cumbersome ways / to kill a man. Simpler, direct, 
and much more neat / is to see that he is living somewhere in the middle /
of the twentieth century, and leave him there."     -- Edwin Brock

xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at
Archived as:
To (un)subscribe, mailto:majordomo at the following message;
(un)subscribe xml-dev
To subscribe to the digests, mailto:majordomo at the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa at

More information about the Xml-dev mailing list