[
Lists Home |
Date Index |
Thread Index
]
At 1:58 PM -0500 3/7/04, Kirk Allen Evans wrote:
>endDocument should only be raised after exception if the rest of the
>document continues to be parsed after exception.
>
><?xml version="1.0" encoding="UTF-8"?>
><root>
> <foo/>
> <foo>&bar;</foo>
> <foo/>
> <foo/>
></root>
>
>The entity "bar" is not declared here. If you are parsing this document,
>how many times do you expect startElement to be invoked? If you argue it
>raised three times, then endDocument should not be invoked because you imply
>that you reached the end of the document when you did not. You should only
>invoke endDocument when you actually parse the end of the document.
This is not how this works. As soon as the undefined entity is
detected a fatal error is reported. the parser may not then continue
to report the remainder of the content of the document in the usual
way. This is according to the XML 1.0 specification, not SAX
specifically. Fortunately I've only seen one uncommon parser that
does this wrong, and continues to call startElement after a
fatalError.
I guess what you're saying is logically endDocument should be called
only if the end of the document is seen. Logically that make sense.
However, the SAX docs are clear that this is not the case.
endDocument really indicates the end of parsing, not the end of the
document. It is not incorrect to call endDocument after a fatal error.
--
Elliotte Rusty Harold
elharo@metalab.unc.edu
Effective XML (Addison-Wesley, 2003)
http://www.cafeconleche.org/books/effectivexml
http://www.amazon.com/exec/obidos/ISBN%3D0321150406/ref%3Dnosim/cafeaulaitA
|