The problem is that this programming model is relatively complex, not well standardized, cannot provide validation directly, makes entity, namespace and base processing relatively hard.
It is possible to change parser behaviors, such as requesting that an XML reader to validate (or not validate) a document, and register new types of event handlers using the While feature flags are always boolean, property values are arbitrary objects.
Outside parties are free to define handlers for any kinds of events, and to create properties for setting and querying them.
There is no fixed set of features or properties available for SAX2, except for two features that all XML parsers must support.
This tutorial will present the key points of this API, and working examples using both C and the Python bindings: Table of content: Libxml2 main API is tree based, where the parsing operation results in a document loaded completely in memory, and expose it as a tree of nodes all availble at the same time.
This is very simple and quite powerful, but has the major limitation that the size of the document that can be hamdled is limited by the size of the memory available.