Libxml2 is made of multiple components; some of them are optional, and
most of the block interfaces are public. The main components are:
- an Input/Output layer
- FTP and HTTP client layers (optional)
- an Internationalization layer managing the encodings support
- a URI module
- the XML parser and its basic SAX interface
- an HTML parser using the same SAX interface (optional)
- a SAX tree module to build an in-memory DOM representation
- a tree module to manipulate the DOM representation
- a validation module using the DOM representation (optional)
- an XPath module for global lookup in a DOM representation
(optional)
- a debug module (optional)
Graphically this gives the following: 
Daniel Veillard |