[XML-SIG] ignoring "Undeclared entity" errors?

Andrew Clover and-xml at doxdesk.com
Tue Dec 7 18:49:53 CET 2004

Steven Knight <knight at baldmt.com> wrote:

> When I try to process an individual fragment without the declarations,
> I of course get "Undeclared entity" fatal errors for these entities,
> which terminates parsing of the fragment.

Yep. I think this comes from expat itself, so might not be avoidable 
without using/subclassing a different parser, eg. xmlproc.

If you aren't tied to SAX, the pxdom parser will cope with undeclared 
entities. (If you use a DOM Level 3 ErrorHandler it'll receive a 
DOMError 'pxdom-unbound-entity' with severity WARNING.)

> Having to declare a DTD just to be able to perform some specific
> preprocessing on an otherwise well-formed fragment of XML feels way
> too heavyweight to me.

For me too - pxdom's lenient behaviour was originally intended to allow 
PXTL to pass entities through without having to define them in a 
separate doctype for 'target doctype plus PXTL'.

Other Python DOM tools don't really support the idea of keeping hold of 
unexpanded entity references, so they can't do anything but complain if 
they get an undeclared one.

However note that in certain circumstances (in summary: when the parser 
can know that there are no unprocessed DTD declarations) undeclared 
entities are a well-formedness error instead of a validity error. So 
technically your document might not be well-formed, which would be a Bad 

In summary, entities suck, make everything harder, and should have been 
left out of XML completely. </controversy>

Andrew Clover
mailto:and at doxdesk.com

More information about the XML-SIG mailing list