[XML-SIG] Documentation and problems

Lars Marius Garshol larsga@ifi.uio.no
07 Jan 1999 22:11:16 +0100


* Simon Pepping
| 
| Check it out at http://www.hobby.nl/~scaprea/XML/index.html.

I've now read through your document more thoroughly and have some
corrections to it:

 - the application should _not_ register the driver as a locator.
   The drivers that provide location information do this themselves
   before calling the startDocument method. Those that don't simply 
   do not register a locator.

   In fact, you have no guarantee that the parser and the locator are
   the same object...

 - In <URL:http://www.hobby.nl/~scaprea/XML/t128.html> the last
   paragraph repeats this.

 - In <URL:http://www.hobby.nl/~scaprea/XML/t141.html> you write:

   "A SAX application must contain the handler classes
   DocumentHandler, DTDHandler, EntityResolver, and ErrorHandler,
   which should implement the methods prescribed by the SAX
   specification."

   SAX applications don't have to implement any of these at all, and
   in fact there exists an application that doesn't (saxtimer.py).
   
   So the text should say 'can' instead of 'must'. (A nit, I know, but
   one that would confuse literal-minded people like myself. :)

 - In <URL:http://www.hobby.nl/~scaprea/XML/t141.html> it would be
   nice if you mentioned a little-known fact:

     - saxutils.py defines two useful error handlers: ErrorPrinter and
       ErrorRaiser, both of which can be used directly if their
       behaviour is what your application needs.

 - In the same page you write on the last line:

   "At the end of the parse, your application may stop. Or it may
   continue, especially if it has stored data in memory."

   Perhaps it's better to say:

   "At the end of the parse, the SAX driver returns from the parse or
   parseFile method and your application is free to do whatever it
   wants."

 - In <URL:http://www.hobby.nl/~scaprea/XML/t173.html> you write:

   "The saxexts module defines a ParserFactory class. Upon import it
   makes an instance of it, called XMLParserFactory, which lists all
   known SAX-compliant XML parsers (actually it lists their driver
   modules). [It also makes instances with known validating XML
   parsers, HTML parsers and SGML parsers.]"

   A consequence of this is that you are wrong when you write on the
   previous page that "SAXparser=xml.sax.saxexts.make_parser()" is
   always the best method. It's not if you have special parser
   requirements.

Despite this I think this is a very useful document and that it
definitely fills a need. I've linked to it from the saxlib home page.
(The link may not become visible before tomorrow.)

--Lars M.