[
Lists Home |
Date Index |
Thread Index
]
At 6:17 PM -0800 2/23/04, Jeff Rafter wrote:
>> Yes. It's very careful to check that every document results in a
>> startDocument and an endDocument event, even in the face of a fatal
>> error. This is one of the most common mistakes that SAX parsers make.
>
>I brought this up because of a question I had asked a short while ago in
>this thread:
>
>http://lists.xml.org/archives/xml-dev/200312/threads.html#00345
>
>It was never adequately answered. And one could read the docs to imply that
>if the start of the document is never encountered then neither should be
>called but an error may be thrown-- of course even that is flimsy-- consider
>the following document:
>
>Error Before Prolog.xml
>=================
>Venienti occurrite morbo
><?xml version="1.0"?>
><foo/>
>
>Error In Prolog.xml
>=================
><?xml version="Venienti occurrite morbo"?>
><foo/>
>
>What do the SAX documents actually prescribe in this case?
>
My interpretation is that first you it must call startDocument(),
then fatalError(), then endDocument() (assuming both a ContentHandler
and an ErrorHandler have been registered), then throw a SAXException
from the build method. However, at least three major parsers
including Xerces do not do this, and several others do it only some
of the time. Failing to call endDocument is the most common mistake.
--
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
|