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. It implements the DOM Level 2 Core on top of the SAX layer. Arabica implements XPath 1.0 over its DOM implementation. It 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.