ISAXLexicalHandler Interface

 

The ISAXLexicalHandler/IVBSAXLexicalHandler interface enables a Simple API for XML (SAX2) application to implement an optional extension handler for receiving information from the SAX2 reader, such as comments, the document type declaration, CDATA sections, and the start and end of an entity within a document. The events in the LexicalHandler apply to the entire document, not just to the document elements. All LexicalHandler events must appear between the startDocument and endDocument events of the ContentHandler.

To set the LexicalHandler for the reader, use the putProperty method with the property ID "http://xml.org/sax/properties/lexical-handler".

commentReceives XML comments from either inside or outside the document element, including comments in the external document type definition (DTD) or schema subset.
endCDATAReceives the end of a character data (CDATA) section.
startCDATAReceives the beginning of a CDATA section.
endDTDReceives the end of a document type declaration.
startDTDReceives the beginning of a document type declaration.
endEntityIndicates that the reader has opened and finished processing an externally defined entity in the content of the document.
startEntityIndicates that the reader has opened and started to process an internally or externally defined entity in the content of the document.

The IVBSAXLexicalHandler interface includes a series of methods that are invoked by the reader during the parsing operation. The reader passes the appropriate information to the method's parameters. To perform processing for a method, you simply add code to the method in the LexicalHandler implementation. In general, it's rare that you would call these methods yourself from within the LexicalHandler. The syntax shown for the IVBSAXLexicalHandler interface focuses on implementation rather than usage.

System_CAPS_ICON_important.jpg Important

The SAX2 reader passes string values to IVBSAXContentHandler methods by reference, rather than by value.

The code to register the LexicalHandler may look like the following.

... SAXXMLReader * r = ...
SAXLexicalHandler * lh = new SAXLexicalHandler ();
r->putProperty("http://xml.org/sax/properties/lexical-handler",_variant_t(lh));

Implementation:

msxml3.dll (MSXML 3.0)

msxml6.dll (MSXML 6.0)

Header and LIB files: msxml2.h, msxml2.lib, msxml6.h, msxml6.lib

Implemented in: MSXML 3.0 and later

endDocument Method
putProperty Method
startDocument Method

Show: