Arabica
=======
*Arabica is an XML and HTML processing toolkit*, providing *SAX2*, *DOM*, *XPath*, and *XSLT* implementations, written in *Standard C++*
* *SAX* is an event-based XML processing API. Arabica is a full SAX2 implementation, including the optional interfaces and helper classes. It provides uniform SAX2 wrappers for the Expat parser, Xerces, Libxml2 and, on Windows, for the Microsoft XML parser.
* The *DOM* is a platform- and language-neutral interface which models an XML document as a tree of nodes, defined by the W3C. Arabica implements the DOM Level 2 Core on top of the SAX layer.
* *XPath* is a language for addressing parts of an XML document. Arabica implements XPath 1.0 over its DOM implementation.
* *XSLT* is a language for transforming XML documents into other XML documents. Arabica builds XSLT over its XPath engine.
* In addition to the XML parser, Arabica includes Taggle, an *HTML parser* derived from TagSoup.
Arabica is written in Standard C++ and should be portable to most platforms. It is parameterised on string type. Out of the box, it can provide UTF-8 encoded std::strings or UTF-16 encoded std::wstrings, but can easily be customised for arbitrary string types.
Arabica is available under a BSD-style license.
For latest Arabica news, please see http://www.jezuk.co.uk/arabica
For build notes see http://www.jezuk.co.uk/arabica/howtobuild