SAX: Document Start and End (question 1 of 10)

David Megginson ak117 at
Sat Jan 3 15:10:28 GMT 1998

[SAX is a proposal for a simple, event-based XML API, using
callbacks.  This is one in a series of ten design questions that we
need to answer to implement the API.]

In addition to the core events, should SAX have additional callbacks
for the start and end of a document?

  public startDocument ()
  public endDocument ()


- two additional methods will make the API slightly larger; 

- the start of an XML document can be inferred from the first event
  (element or possibly PI or comment), and any start/end handling
  could be done outside of the callback interface (say, before and
  after running the parse); however, the end cannot be easily
  inferred within an event handler.


- avoids an "if/then" test in handlers to see if they are the
  first events;

- provides an easy and obvious place for initialization and cleanup,
  if startDocument() is always the first event reported and
  endDocument() is always the last;

- these are very easy to implement in a separate SAX front end,
  without modifying any of the core parsers.



These events will make code using SAX much simpler and cleaner, and
they come at a very low cost.  Furthermore, if a SAX-based application
extends the XmlAppBase base class, then it can simply ignore these if
they are not needed.


Should either of the events take arguments?  For example, the
startDocument event handler could take Strings giving the public ID
(if any) and URI of the document, and the endDocument event handler
could take integers giving the number of errors and warnings:

  public void startDocument (String publicID, String systemID);
  public void endDocument (int errors, int warnings);

The latter, however, is very easy to track, and the former can be
supplied to the constructor when the SAX event-handler is created, so
both are redundant (if slightly convenient).

All the best,


David Megginson                 ak117 at
Microstar Software Ltd.         dmeggins at

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