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

David Megginson (ak117@freenet.carleton.ca)
Sat, 3 Jan 1998 09:47:09 -0500


[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 ()

CON

---

- 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.

PRO

---

- 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.

MY RECOMMENDATION -----------------

Yes.

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.

OTHER CONSIDERATIONS --------------------

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

-- 
David Megginson                 ak117@freenet.carleton.ca
Microstar Software Ltd.         dmeggins@microstar.com
      http://home.sprynet.com/sprynet/dmeggins/

xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev@ic.ac.uk Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/ To (un)subscribe, mailto:majordomo@ic.ac.uk the following message; (un)subscribe xml-dev To subscribe to the digests, mailto:majordomo@ic.ac.uk the following message; subscribe xml-dev-digest List coordinator, Henry Rzepa (mailto:rzepa@ic.ac.uk)