- 
                            
 CONTENTS
 
- 
                            What files do I need to include to use the SAX Parser?
                        
- 
                            How do I get started with the SAX Parser?
                        - 
                            What SAX Events and Interfaces are supported?
                        
- 
                            Is there a pre-built event handler object available?
                        
- 
                            Do I need to catch every event fired by the SAX Parser?
                        
- 
                            What's this handleCharacterData function for?
                        
- 
                             
                        
- 
                            SAXDriver Object - Constructor
                        
- 
                            SAXDriver Object - parse method
                        
- 
                            SAXDriver Object - setDocumentHandler method
                        
- 
                            SAXDriver Object - setErrorHandler method
                        
- 
                            SAXDriver Object - setLexicalHandler method
                        
- 
                             
                        
- 
                            SAXEventHandler Object - Constructor
                        
- 
                            SAXEventHandler Object - characters event
                        
- 
                            SAXEventHandler Object - comment event
                        
- 
                            SAXEventHandler Object - endCDATA event
                        
- 
                            SAXEventHandler Object - endDocument event
                        
- 
                            SAXEventHandler Object - endElement event
                        
- 
                            SAXEventHandler Object - error event
                        
- 
                            SAXEventHandler Object - fatalError event
                        
- 
                            SAXEventHandler Object - processingInstruction event
                        
- 
                            SAXEventHandler Object - setDocumentLocator event
                        
- 
                            SAXEventHandler Object - startCDATA event
                        
- 
                            SAXEventHandler Object - startDocument event
                        
- 
                            SAXEventHandler Object - startElement event
                        
- 
                            SAXEventHandler Object - warning event
                        
- 
                            SAXEventHandler Object - _handleCharacterData method
                        
- 
                            SAXEventHandler Object - _fullCharacterDataReceived
                        
- 
                             
                        
- 
                            trim
                        
                        What files do I need to include to use the SAX Parser?
                    
                    
                        To use XML for <SCRIPT>'s SAX Parser, you need to include xmlsax.js from
                        the jsXMLParser directory.
                    
                    
                        If you wish to use a compressed version of the parser (comments, line breaks etc removed)
                        you may replace xmlsax.js with tinyxmlsax.js from the jsXMLParser/compressed directory.
                    
                    
                    
                    
                    
                        How do I get started with the SAX Parser?
                    
                    
                        It's actually very easy. XML for <SCRIPT> ships with a pre-built SAXEventHandler object that is ready to accept events from the SAXDriver object.
                        Simply copy the code in preMadeSaxEventHandler.js (located in the jsXMLParser directory) into your code (or link to the file) and write code to handle events as you see fit.
                    
                    
                        For example, if you wanted to show the user an alert box with the name of each element as it was parsed, you would write the following code:
                    
                    function startParser(xml) {
                    
var parser = new SAXDriver();
                    var eventHandler = new SAXEventHandler();
                    parser.setDocumentHandler(eventHandler);
                    parser.setLexicalHandler(eventHandler);
                    parser.setErrorHandler(eventHandler);
                    parser.parse(xml);
                    };  // end function startParser
                    
                       The code to show the alert box at the start of each element would reside in the startElement event sink and would look like the following:
                    
                    SAXEventHandler.prototype.startElement = function(name, atts) {
                    
alert(name);
                    } // end function startElement
                    
                    
                    
                        What SAX Events and Interfaces are supported?
                    
                    
                        The SAX "standard" defines the following interfaces. See below for the support offerred by XML for <SCRIPT>
                    
                    
                        Implemented Interfaces:
                    
                    
                        //Document Interface
                        SAXDocumentHandler.startDocument ()
                        SAXDocumentHandler.endDocument ()
                        SAXDocumentHandler.startElement (name, atts)
                        SAXDocumentHandler.endElement (name)
                        SAXDocumentHandler.characters (data, start, length)
                        SAXDocumentHandler.processingInstruction (target, data)
                        SAXDocumentHandler.setDocumentLocator (locator)
                        
                        //Lexical Interface
                        SAXLexicalHandler.startCDATA ()
                        SAXLexicalHandler.endCDATA ()
                        SAXLexicalHandler.comment (data, start, length)
                        
                        //Error Interface
                        SAXErrorHandler.warning (exception)
                        SAXErrorHandler.error (exception)
                        SAXErrorHandler.fatalError (exception)
                    
                    
                    
                        Unimplemented Interfaces:
                    
                    
                        SAXDocumentHandler.ignorableWhitespace (data, start, length)
                        SAXLexicalHandler.startDTD (name, publicId, systemId)
                        SAXLexicalHandler.endDTD ()
                        SAXLexicalHandler.startEntity (name)
                        SAXLexicalHandler.endEntity (name)
                    
                    
                    
                    
                    
                        Is there a pre-built event handler object available?
                    
                    
                        Yes! Please see the file preMadeSaxEventHandler.js in the jsXMLParser directory. This pre-built object supports all three event handling interfaces
                        (Document, Lexical and Error) as well as provides built in methods for correctly handling character data.
                    
                    
                        Please keep in mind that you don't *have* to use this pre-built object if you don't want to. You may certainly roll your own if it suits you needs better.
                    
                    
                    
                    
                    
                       Do I need to catch every event fired by the SAX Parser?
                    
                    
                        No. XML for <SCRIPT>'s SAX Driver object is capable of detecting whether or not an event handler exists for the event it wants to fire. If no event handler
                        exists, the event will not fire and the parsing will continue.
                    
                    
                    
                    
                    
                       What's this handleCharacterData function for?
                    
                    
                        During the parsing of an XML document, it is possible that the characters event may fire multiple times for a single element. If you place your characters event
                        handling code in this event, you may not get all of the character data you expect.
                    
                    
                        To compensate for this behavior, XML for <SCRIPT>'s pre-built event handler includes a function called _handleCharacterData. This function is designed
                        to capture all of the character data reported to the event handler and report it to the user all at once in the _fullCharacterDataReceived function.
                        This reporting is done only when the function is sure there is no more character data expected for that element.
                    
                    
                        For more information on the _handleCharacterData function, click here
                    
                    
                        For more information on the _fullCharacterDataReceived function, click here
                    
                    
                    
                    
                    
                       SAXDriver Object - Constructor
                    
                    
                        var saxParser = new SAXDriver();
                    
                    
                        Accepts:
                    
                    
                        N/A
                    
                    
                    
                        Returns:
                    
                    
                        new SAXDriver object
                    
                    
                    
                        Example:
                    
                    function parseXML(xml) {
                    
                        //instantiate the SAX Driver object
                        var saxParser = new SAXDriver();
                        
                        //instantiate the pre-built event handler object
                        var eventHandler = new SAXEventHandler();
                        
                        //tell the SAX driver object where to send events
                        saxParser.setDocumentHandler(eventHandler);
                        saxParser.setLexicalHandler(eventHandler);
                        saxParser.setErrorHandler(eventHandler);
                        
                        //start the parsing process
                        saxParser.parse(xml);
                    
                    }
                    
                    
                    
                    
                       SAXDriver Object - parse method
                    
                    
                        saxParser.parse(<xml>);
                    
                    
                        Accepts:
                    
                    
                        <xml> - String containing the XML to parse
                    
                    
                    
                        Returns:
                    
                    
                        N/A
                    
                    
                        The parse method begins the process of parsing the XML data. The processing will complete before the next line of code is called.
                    
                    
                        Example:
                    
                    function parseXML(xml) {
                    
                        //instantiate the SAX Driver object
                        var saxParser = new SAXDriver();
                        
                        //instantiate the pre-built event handler object
                        var eventHandler = new SAXEventHandler();
                        
                        //tell the SAX driver object where to send events
                        saxParser.setDocumentHandler(eventHandler);
                        saxParser.setLexicalHandler(eventHandler);
                        saxParser.setErrorHandler(eventHandler);
                        
                        //start the parsing process
                        saxParser.parse(xml);
                    
                    }
                    
                    
                    
                    
                      SAXDriver Object - setDocumentHandler method
                    
                    
                        saxParser.setDocumentHandler(<Handler Object>);
                    
                    
                        Accepts:
                    
                    
                        <Handler Object> - An object that supports the Document Event Interface
                    
                    
                    
                        Returns:
                    
                    
                        N/A
                    
                    
                        setDocumentHandler tells the SAX parser what code to call for the following events:
                    
                    
                        startDocument ()
                        endDocument ()
                        startElement (name, atts)
                        endElement (name)
                        characters (data, start, length)
                        processingInstruction (target, data)
                        setDocumentLocator (locator)
                    
                    
                        Your handler object does not need to support all of these events. Events that do not interest you can be left out with no ill-effect. However, for the events that you
                        do wish to trap, your handler object must implement the above functions exactly as shown.
                    
                    
                        For your convenience,  XML for <SCRIPT> provides a pre-built event handler in the file preMadeSaxEventHandler.js under the jsXMLParser directory. This handler implements
                        all three SAX interfacs for you so you do not have to code them yourself.
                    
                    
                        Example:
                    
                    function parseXML(xml) {
                    
                        //instantiate the SAX Driver object
                        var saxParser = new SAXDriver();
                        
                        //instantiate the pre-built event handler object
                        var eventHandler = new SAXEventHandler();
                        
                        //tell the SAX driver object where to send events
                        saxParser.setDocumentHandler(eventHandler);
                        saxParser.setLexicalHandler(eventHandler);
                        saxParser.setErrorHandler(eventHandler);
                        
                        //start the parsing process
                        saxParser.parse(xml);
                    
                    }
                    
					
                    
                    
                    
                      SAXDriver Object - setErrorHandler method
                    
                    
                        saxParser.setErrorHandler(<Handler Object>);
                    
                    
                        Accepts:
                    
                    
                        <Handler Object> - An object that supports the Error Event Interface
                    
                    
                    
                        Returns:
                    
                    
                        N/A
                    
                    
                        setErrorHandler tells the SAX parser what code to call for the following events:
                    
                    
                        SAXErrorHandler.warning (exception)
                        SAXErrorHandler.error (exception)
                        SAXErrorHandler.fatalError (exception)
                    
                    
                        Your handler object does not need to support all of these events. Events that do not interest you can be left out with no ill-effect. However, for the events that you
                        do wish to trap, your handler object must implement the above functions exactly as shown.
                    
                    
                        For your convenience,  XML for <SCRIPT> provides a pre-built event handler in the file preMadeSaxEventHandler.js under the jsXMLParser directory. This handler implements
                        all three SAX interfacs for you so you do not have to code them yourself.
                    
                    
                        Example:
                    
                    function parseXML(xml) {
                    
                        //instantiate the SAX Driver object
                        var saxParser = new SAXDriver();
                        
                        //instantiate the pre-built event handler object
                        var eventHandler = new SAXEventHandler();
                        
                        //tell the SAX driver object where to send events
                        saxParser.setDocumentHandler(eventHandler);
                        saxParser.setLexicalHandler(eventHandler);
                        saxParser.setErrorHandler(eventHandler);
                        
                        //start the parsing process
                        saxParser.parse(xml);
                    
                    }
                    
                    
                    
                    
                      SAXDriver Object - setLexicalHandler method
                    
                    
                        saxParser.setLexicalHandler(<Handler Object>);
                    
                    
                        Accepts:
                    
                    
                        <Handler Object> - An object that supports the Lexical Event Interface
                    
                    
                    
                        Returns:
                    
                    
                        N/A
                    
                    
                        setLexicalHandler tells the SAX parser what code to call for the following events:
                    
                    
                        SAXLexicalHandler.startCDATA ()
                        SAXLexicalHandler.endCDATA ()
                        SAXLexicalHandler.comment (data, start, length)
                    
                    
                        Your handler object does not need to support all of these events. Events that do not interest you can be left out with no ill-effect. However, for the events that you
                        do wish to trap, your handler object must implement the above functions exactly as shown.
                    
                    
                        For your convenience,  XML for <SCRIPT> provides a pre-built event handler in the file preMadeSaxEventHandler.js under the jsXMLParser directory. This handler implements
                        all three SAX interfacs for you so you do not have to code them yourself.
                    
                    
                        Example:
                    
                    function parseXML(xml) {
                    
                        //instantiate the SAX Driver object
                        var saxParser = new SAXDriver();
                        
                        //instantiate the pre-built event handler object
                        var eventHandler = new SAXEventHandler();
                        
                        //tell the SAX driver object where to send events
                        saxParser.setDocumentHandler(eventHandler);
                        saxParser.setLexicalHandler(eventHandler);
                        saxParser.setErrorHandler(eventHandler);
                        
                        //start the parsing process
                        saxParser.parse(xml);
                    
                    }
                    
                    
                    
                    
                       SAXEventHandler Object - Constructor
                    
                    
                        var eventHandler = new SAXEventHandler();
                    
                    
                        Accepts:
                    
                    
                        N/A
                    
                    
                    
                        Returns:
                    
                    
                        New SAXEvent handler object
                    
                    
                        The SAXEventHandler object is XML for <SCRIPT>'s pre-built event handler. It exists for your convenience. If you choose to roll your own event handler,
                        you may ignore the information contained in the constructor section of  the documentation. If you do roll your own event handler, it will need to have
                        the same function signatures as the pre-built event handler for the events you will be trapping.
                    
                    
                        Example:
                    
                    function parseXML(xml) {
                    
                        //instantiate the SAX Driver object
                        var saxParser = new SAXDriver();
                        
                        //instantiate the pre-built event handler object
                        var eventHandler = new SAXEventHandler();
                        
                        //tell the SAX driver object where to send events
                        saxParser.setDocumentHandler(eventHandler);
                        saxParser.setLexicalHandler(eventHandler);
                        saxParser.setErrorHandler(eventHandler);
                        
                        //start the parsing process
                        saxParser.parse(xml);
                    
                    }
                    
                    
                    
                    
                       SAXEventHandler Object - characters event
                    
                    
                        characters(data, start, length)
                    
                    
                        Provides:
                    
                    
                        data - the raw xml data provided to the parser
                        start - position to start getting characters
                        length - number of characters to get
                    
                    
                        During the parsing of an XML document, it is possible that the characters event may fire multiple times for a single element. If you place your characters event
                        handling code in this event, you may not get all of the character data you expect.
                    
                    
                        To compensate for this behavior, XML for <SCRIPT>'s pre-built event handler includes a function called _handleCharacterData. This function is designed
                        to capture all of the character data reported to the event handler and report it to the user all at once in the _fullCharacterDataReceived function.
                        This reporting is done only when the function is sure there is no more character data expected for that element.
                    
                    
                        The characters event traps the character data being reported by the parser, and appends the new data to an internal variable that keeps track
                        of all the previous character data that had been reported for the current element.
                    
                    
                        For more information on the _handleCharacterData function, click here
                    
                    
                        For more information on the _fullCharacterDataReceived function, click here
                    
                    
                        Example:
                    
                    characters (data, start, length) {
                    
                        this.characterData += data.substr(start, length);
                    
                    }
                    
                    
                    
                    
                       SAXEventHandler Object - comment event
                    
                    
                        comment(data, start, length)
                    
                    
                        Provides:
                    
                    
                        data - the raw xml data provided to the parser
                        start - position to start getting characters
                        length - number of characters to get
                    
                    
                        The comment event is fired whenever comment data is found in the XML stream. For example, the following XML will yield the events listed below if
                        XML for <SCRIPT>'s pre-built event handler is used.
                    
                     
                        NOTE: Only the event name is reported here. For a full description of the events fired with this XML, please see testsComment1() in saxTestSuite.js
                    
                    
                        NOTE: If the "characters" event is listed below, it is assumed to come from the function _fullCharacterDataReceived.
                    
                    
                        XML:
                    
                    <?xml version="1.0"?>
                    <root>
                    
<!--Comment Text-->
                    </root> 
                    
                    
                        Events:
                    
                    setDocumentLocator
                    startDocument
                    processingInstruction
                    startElement
                    comment
                    endElement
                    endDocument
                    
                    
                        Example:
                    
                    comments (data, start, length) {
                    
                        var commentData = data.substr(start, length);
                    
                    }
                    
                    
                    
                    
                       SAXEventHandler Object - endCDATA event
                    
                    
                        endCDATA()
                    
                    
                        Provides:
                    
                    
                        N/A
                    
                    
                        The endCDATA event is fired whenever the end of a CDATA section is found in the XML stream. For example, the following XML will yield the events listed below if
                        XML for <SCRIPT>'s pre-built event handler is used.
                    
                     
                        NOTE: Only the event name is reported here. For a full description of the events fired with this XML, please see testsCDATA1() in saxTestSuite.js.
                    
                    
                        NOTE: If the "characters" event is listed below, it is assumed to come from the function _fullCharacterDataReceived.
                    
                    
                        XML:
                    
                    <?xml version="1.0"?>
                    <root>
                    
<![CDATA[CDATA Text]]>
                    </root>
                    
                    
                    
                        Events:
                    
                    setDocumentLocator
                    startDocument
                    processingInstruction
                    startElement
                    startCDATA
                    characters
                    endCDATA
                    endElement
                    endDocument
                    
                    
                        Example:
                    
                    endCDATA() {
                    
                        //make note that we have reached end of CDATA tag
                    
                    }
                    
                    
                    
                    
                       SAXEventHandler Object - endDocument event
                    
                    
                        endDocument()
                    
                    
                        Provides:
                    
                    
                        N/A
                    
                    
                        The endDocument event is fired whenever the end of the document is found in the XML stream. For example, the following XML will yield the events listed below if
                        XML for <SCRIPT>'s pre-built event handler is used.
                    
                     
                        NOTE: Only the event name is reported here. For a full description of the events fired with this XML, please see testsElement1() in saxTestSuite.js
                    
                    
                        NOTE: If the "characters" event is listed below, it is assumed to come from the function _fullCharacterDataReceived.
                    
                    
                        XML:
                    
                    <?xml version="1.0"?>
                    <root>
                    </root> 
                    
                    
                        Events:
                    
                    setDocumentLocator
                    startDocument
                    processingInstruction
                    startElement
                    endElement
                    endDocument
                    
                    
                        Example:
                    
                    endDocument() {
                    
                        //make note that we have reached end of the document
                    
                    }
                    
                    
                    
                    
                       SAXEventHandler Object - endElement event
                    
                    
                        endElement(<Element Name>)
                    
                    
                        Provides:
                    
                    
                        <Element Name> - the name of the element that is ending
                    
                    
                        The endElement event is fired whenever the end of an element is found in the XML stream. For example, the following XML will yield the events listed below if
                        XML for <SCRIPT>'s pre-built event handler is used.
                    
                     
                        NOTE: Only the event name is reported here. For a full description of the events fired with this XML, please see testsElement1() in saxTestSuite.js
                    
                    
                        NOTE: If the "characters" event is listed below, it is assumed to come from the function _fullCharacterDataReceived.
                    
                    
                        XML:
                    
                    <?xml version="1.0"?>
                    <root>
                    </root> 
                    
                    
                        Events:
                    
                    setDocumentLocator
                    startDocument
                    processingInstruction
                    startElement
                    endElement
                    endDocument
                    
                    
                        Example:
                    
                    endElement(name) {
                    
                        alert("I have reached the end of the element " + name);
                    
                    }
                    
                    
                    
                    
                       SAXEventHandler Object - error event
                    
                    
                        error(<Exception object>)
                    
                    
                        Provides:
                    
                    
                        <Exception object> - Object containing information about the exception
                    
                    
                        The exception object has these methods:
                    
                    exception.getMessage() - returns an error string
                    exception.getLineNumber() - returns the line number of the error
                    exception.getColumnNumber() - returns the column number of the error
                    
                        At this time, XML for <SCRIPT>'s SAX parser does not throw this event. All error reporting is provided via the fatalError event. For more information on that event,
                        please click here In the future, this event may be utilized so it is highly recommended that
                        you place error trapping code in your handler for this event.
                    
                    
                        Example:
                    
                    error(exception) {
                    
                        //tell the user there is a problem 
                        alert(exception.getMessage());
                    
                    }
                    
                    
                    
                    
                       SAXEventHandler Object - fatalError event
                    
                    
                        fatalError(<Exception object>)
                    
                    
                        Provides:
                    
                    
                        <Exception object> - Object containing information about the exception
                    
                    
                        The exception object has these methods:
                    
                    exception.getMessage() - returns an error string
                    exception.getLineNumber() - returns the line number of the error
                    exception.getColumnNumber() - returns the column number of the error
                    
                        The fatalError event is fired whenever an error is found in the XML stream. For example, the following XML will yield the events listed below if
                        XML for <SCRIPT>'s pre-built event handler is used.
                    
                     
                        NOTE: Only the event name is reported here. For a full description of the events fired with this XML, please see testsElementError1() in saxTestSuite.js
                    
                    
                        NOTE: If the "characters" event is listed below, it is assumed to come from the function _fullCharacterDataReceived.
                    
                    
                        XML:
                    
                    <?xml version="1.0"?> 
                    <root
                    
                    
                    
                        Events:
                    
                    setDocumentLocator
                    startDocument
                    processingInstruction
                    fatalError
                    
                    
                        Example:
                    
                    fatalError(exception) {
                    
                        //tell the user there is a problem 
                        alert(exception.getMessage());
                    
                    }
                    
                    
                    
                    
                      SAXEventHandler Object - processingInstruction event
                    
                    
                        processingInstructiont(<Target>, <Data>)
                    
                    
                        Provides:
                    
                    
                        <Target> - the target of the processing instruction
                        <Data> - the data of the processing instruction
                    
                    
                        The processingInstruction event is fired whenever a processing instruction is found in the XML stream. For example, the following XML will yield the events listed below if
                        XML for <SCRIPT>'s pre-built event handler is used.
                    
                     
                        NOTE: Only the event name is reported here. For a full description of the events fired with this XML, please see testsPI1() in saxTestSuite.js
                    
                    
                        NOTE: If the "characters" event is listed below, it is assumed to come from the function _fullCharacterDataReceived.
                    
                    
                        XML:
                    
                    <?xml version="1.0"?>
                    <root>
                    </root> 
                    
                    
                        Events:
                    
                    setDocumentLocator
                    startDocument
                    processingInstruction
                    startElement
                    endElement
                    endDocument
                    
                        In the above example, the Target variable passed in would be set to xml while the data variable would be set to version="1.0"
                    
                        Example:
                    
                    processingInstructiont(target, data) {
                    
                        alert("Processing instruction target:" + target);
                        alert("Processing instruction data:" + data);
                    
                    }
                    
                    
                    
                    
                      SAXEventHandler Object - setDocumentLocator event
                    
                    
                        setDocumentLocator(<Parser Object>)
                    
                    
                        Provides:
                    
                    
                        <Parser Object> - A handle to the low level XML Parser
                    
                    
                        The setDocumentLocator event is always the first event fired when parsing an XML stream. The object provided is a handle to the actuall object behind the scenes
                        responsible for the parsing of the XML. In most cases, you will not need to do anything with this object and this event can safely be ignored. However, if you do need
                        raw access to the underlying parser, it is provided to you here. If you do need to add functionality to this underlying parser, the object that is being returned is defined
                        in xmlsax.js as XMLP.
                    
                    
                        For example, the following XML will yield the events listed below if XML for <SCRIPT>'s pre-built event handler is used.
                    
                     
                        NOTE: Only the event name is reported here. For a full description of the events fired with this XML, please see testsElement1() in saxTestSuite.js
                    
                    
                        NOTE: If the "characters" event is listed below, it is assumed to come from the function _fullCharacterDataReceived.
                    
                    
                        XML:
                    
                    <?xml version="1.0"?>
                    <root>
                    </root> 
                    
                    
                        Events:
                    
                    setDocumentLocator
                    startDocument
                    processingInstruction
                    startElement
                    endElement
                    endDocument
                    
                    
                        Example:
                    
                    setDocumentLocator(ParserObject) {
                    
                        //ignore this event
                    
                    }
                    
                    
                    
                    
                       SAXEventHandler Object - startCDATA event
                    
                    
                        startCDATA()
                    
                    
                        Provides:
                    
                    
                        N/A
                    
                    
                        The startCDATA event is fired whenever the start of a CDATA section is found in the XML stream. For example, the following XML will yield the events listed below if
                        XML for <SCRIPT>'s pre-built event handler is used.
                    
                     
                        NOTE: Only the event name is reported here. For a full description of the events fired with this XML, please see testsCDATA1() in saxTestSuite.js.
                    
                    
                        NOTE: If the "characters" event is listed below, it is assumed to come from the function _fullCharacterDataReceived.
                    
                    
                        XML:
                    
                    <?xml version="1.0"?>
                    <root>
                    
<![CDATA[CDATA Text]]>
                    </root>
                    
                    
                    
                        Events:
                    
                    setDocumentLocator
                    startDocument
                    processingInstruction
                    startElement
                    startCDATA
                    characters
                    endCDATA
                    endElement
                    endDocument
                    
                    
                        Example:
                    
                    startCDATA() {
                    
                        //make note that we have found the start of a CDATA tag
                    
                    }
                    
                    
                    
                    
                      SAXEventHandler Object - startDocument event
                    
                    
                        startDocument()
                    
                    
                        Provides:
                    
                    
                        N/A
                    
                    
                        The startDocument event is fired when the start of a the document is found in the XML stream. For example, the following XML will yield the events listed below if
                        XML for <SCRIPT>'s pre-built event handler is used.
                    
                     
                        NOTE: Only the event name is reported here. For a full description of the events fired with this XML, please see testsElement1() in saxTestSuite.js
                    
                    
                        NOTE: If the "characters" event is listed below, it is assumed to come from the function _fullCharacterDataReceived.
                    
                    
                        XML:
                    
                    <?xml version="1.0"?>
                    <root>
                    </root> 
                    
                    
                        Events:
                    
                    setDocumentLocator
                    startDocument
                    processingInstruction
                    startElement
                    endElement
                    endDocument
                    
                    
                        Example:
                    
                    
                    
                        Example:
                    
                    startDocument() {
                    
                        //make note that we have found the start of the document
                    
                    }
                    
                    
                    
                    
                      SAXEventHandler Object - startElement event
                    
                    
                        startElement(<Name>, <Attributes Object>)
                    
                    
                        Provides:
                    
                    
                        <Name> - The name of the element that is starting
                        <Attribute Object> - An object representing the element's attributes
                    
                    
                        The Attributes Object (atts) has these methods:
                    
                    atts.getName(<ordinal>) - gets the name of the attribute specified
                    atts.getValue(<ordinal>) - gets the value of the attribute specified
                    atts.getLength() -- gets the number of attributes for the element
                    atts.getValueByName(<name>) -- gets the value for the attribute specified
                    
                        The value expected for the methods getName and getValue is a zero based ordinal based on the position of the attribute you're looking for in the attribute list.
                    
                    
                        The startElement event is fired when the start of an element is found in the XML stream. For example, the following XML will yield the events listed below if
                        XML for <SCRIPT>'s pre-built event handler is used.
                    
                     
                        NOTE: Only the event name is reported here. For a full description of the events fired with this XML, please see testsElement1() in saxTestSuite.js
                    
                    
                        NOTE: If the "characters" event is listed below, it is assumed to come from the function _fullCharacterDataReceived.
                    
                    
                        XML:
                    
                    <?xml version="1.0"?>
                    <root>
                    
<tag att1="val1" att2="val2">
                    </tag>
                    </root>
                    
                    
                    
                        Events:
                    
                    setDocumentLocator
                    startDocument
                    processingInstruction
                    startElement
                    endElement
                    endDocument
                    
                    
                        Example:
                    
                    startElement(name, atts) {
                    
                        //get element name
                        var elm = "Element Name: " + name + "\n");
                        
                        //now loop through attributes
                        var intCount = atts.getLength();
                        if (intCount > 0) {
                        
                            elm += "Has element data of:\n";
                        
                        }
                        for (intLoop=0;intLoop<intCount;intLoop++) {
                        
                            elm += atts.getName(intLoop) + ": ";
                            elm += atts.getValue(intLoop) + "\n"
                        
                        }
                        
                        //display element info
                        alert(elm);
                    
                    }
                    
                    
                    
                    
                      SAXEventHandler Object - warning event
                    
                    
                        warning(<Exception object>)
                    
                    
                        Provides:
                    
                    
                        <Exception object> - Object containing information about the exception
                    
                    
                        The exception object has these methods:
                    
                    exception.getMessage() - returns an error string
                    exception.getLineNumber() - returns the line number of the error
                    exception.getColumnNumber() - returns the column number of the error
                    
                        At this time, XML for <SCRIPT>'s SAX parser does not throw this event. All error reporting is provided via the fatalError event. For more information on that event,
                        please click here In the future, this event may be utilized so it is highly recommended that
                        you place error trapping code in your handler for this event.
                    
                    
                        Example:
                    
                    warning(exception) {
                    
                        //tell the user there is a problem 
                        alert(exception.getMessage());
                    
                    }
                    
                    
                    
                    
                      SAXEventHandler Object - _handleCharacterData method
                    
                    
                        _handleCharacterData()
                    
                    
                        Provides:
                    
                    
                        N/A
                    
                    
                        During the parsing of an XML document, it is possible that the characters event may fire multiple times for a single element. If you place your characters event
                        handling code in this event, you may not get all of the character data you expect.
                    
                    
                        To compensate for this behavior, XML for <SCRIPT>'s pre-built event handler includes a function called _handleCharacterData.
                         Since the characters event can be fired multiple times for an element, the only way to be sure you have received all of the characters
                         for an element is to wait until an event other than characters is fired while at the same time storing all of the data reported by the
                         multiple characters events. Once this non-character event is fired, then you can be assured you have the complete character data for the element.
                    
                    
                         _handleCharacterData is the internal function that serves the purpose of checking for non-characters events. It is called at the beginning
                        every event which can signify that all of the characters data has been received. When _handleCharacterEvents is called, it checks the internal
                        variable that holds the collection of characters data. If that varable is non-blank, then the function calls the interal event _fullCharacterDataReceived and
                        resets the internal variable. _fullCharacterDataReceived is where you should put your character handling code.
                    
                    
                        Generally, it will not be necessary for you to modify this function.
                    
                    
                        For more information on the _fullCharacterDataReceived function, click here
                    
                    
                    
                    
                    
                      SAXEventHandler Object - _fullCharacterDataReceived
                    
                    
                        _fullCharacterDataReceived(fullCharacterData)
                    
                    
                        Provides:
                    
                    
                        fullCharacterData - all of the character data for the element
                    
                    
                        During the parsing of an XML document, it is possible that the characters event may fire multiple times for a single element. If you place your characters event
                        handling code in this event, you may not get all of the character data you expect.
                    
                    
                        XML for <SCRIPT>'s pre-built event handler compensates for this behavior for you. Once it is sure that all of the character data has been received for an
                        element, it fires _fullCharacterDataReceived. This event is where you should put your characters event handling code.
                    
                    
                        Example:
                    
                    _fullCharacterDataReceived(fullCharacterData) {
                    
                        //show the user all of the character data
                        alert("characters for this element: " + fullCharacterData);
                    
                    }
                    
                    
                    
                    
                        Convenience Functions - trim function
                    
                    
                        trim(<string>, |trim left true|false |, |trim right |true|false |)
                    
                    accepts:
                    
                        <string>: string to be trimmed
                        |trim left|: (optional) trim the left side of the string 
                        |trim right|: (optional) trim the right side of the string 
                    
                    
                    returns:
                    
                        string trimmed as desired.
                    
                    
                        In the trim function, trim left and trim right default to "true" if not passed in.