Since putting the Arabica source up on GitHub there seems to have been a little surge in interest in it. It might be coincidence, of course, but I've received several emails and patches of the past few weeks. Once of those emails prompted me to do something I'd been putting off - parameterise the XSLT engine on string type. All the rest of the library is as string type agnostic as I could make it, allowing you to plug in std::string, std::wstring, or whatever other string class you might fancy. (In testing, I actually use a string type with no public member functions.) The XSLT engine was the last hold out, but no more and for the better.
If you've been using the XSLT engine what this means is that where you wrote
Arabica::XSLT::StylesheetCompiler compiler = ...
std::auto_ptr<Arabica::XSLT::Stylesheet> stylesheet = ...
you now have to write
Arabica::XSLT::StylesheetCompiler<std::string> compiler = ...
std::auto_ptr<Arabica::XSLT::Stylesheet<std::string> > stylesheet = ...
If you haven't been using the XSLT engine because the rest of your application uses std::wstring, then now there's nothing to stop you. Dive in!
... read more
The "Probably long overdue release" bringing a big chunk of new functionality.
Source tar.bz2
http://downloads.sourceforge.net/arabica/arabica-2008-october.tar.bz2
Source tar.gz
http://downloads.sourceforge.net/arabica/arabica-2008-october.tar.gz
Source zip
http://downloads.sourceforge.net/arabica/arabica-2008-october.zip
Exciting New Stuff
The exciting new stuff is Taggle, a port of John Cowan's rather super TagSoup package.... read more
This release fixes a build problem with older versions of GCC.
This is a re-release of the September 2007 release which fixes a couple of build issues, affecting some
platform/parser combinations.
The September 2007 release notes were:
The "certainly-break-your-build-but-it'll-be-easily-sorted-out" release.
This is the first Arabica release ever that knowingly breaks existing code,
but the changes required are all straightforward and shouldn't take more
than a few minutes to recover from.
The changes are
a) All Arabica header files now have a .hpp extension. Existing references
to something.h will need to be updated (or mitigated by added a forwarding
header).
b) The SAX namespace has been moved within the Arabica namespace. References
to SAX::something will need to be changed to Arabica::SAX::something, or
mitigated by a using declaration.
c) The DOM namespace and associated namespaces, like SimpleDOM, have been moved
within the Arabica namespace. References to DOM::something will need to be
changed to Arabica::DOM::something, or mitigated by a using declaration.
d) SAX classes named basic_something have been renamed something. Related typedefs
along the lines of typedef basic_something<string> something; have been removed.
References to SAX::something will need to be changed to SAX::something<std::string>,
or mitigated by adding your own typedef.
e) All SAX and DOM classes now take both a string and string adaptor template
parameters. This change should be transparent and require no changes.
f) Some header files in the Utils/ subdirectory have been moved:
Utils/uri.hpp -> io/uri.hpp
Utils/socket_stream.hpp -> io/socket_stream.hpp
Utils/convert_adaptor.hpp -> io/convert_adaptor.hpp
Utils/convertstream.hpp -> io/convertstream.hpp
Utils/codecvt.hpp -> convert/codecvt.hpp
Utils/normalize_whitespace.hpp -> text/normalize_whitespace.hpp
XML/UnicodeCharacters.hpp -> text/UnicodeCharacters.hpp
Utils/StringAdaptor.hpp -> Arabica/StringAdaptor.hpp
DOM/Utils/Stream.hpp -> DOM/io/Stream.hpp
There are some namespace changes along with these physical changes. Any class in
Arabica::Utils has been moved into Arabica::io or Arabica::convert.
The "certainly-break-your-build-but-it'll-be-easily-sorted-out" release.
This is the first Arabica release ever that knowingly breaks existing code,
but the changes required are all straightforward and shouldn't take more
than a few minutes to recover from.
The changes are
a) All Arabica header files now have a .hpp extension. Existing references
to something.h will need to be updated (or mitigated by added a forwarding
header).... read more
Here's the latest in what's becoming the tradional August Arabica release. It packages a number of incremental improvements, together with a major chunk of new code.
* Code
o This release includes the first release of Mangle, the Arabica XSLT engine. Still actively under development, mangle passes about 85% of the OASIS XSLT conformance test suite and covers most common cases. The Mangle code, in the Arabica::XSLT namespace, should be regarded as alpha quality.
o There are a number of new SAX filters for whitespace stripping, tracking namespace declarations, tracking xml:base, and buffering multiple character(...) callbacks into a single callback.
* Build
o Further improvements to the Autotools build. The test cases can now be built and run using 'make check'. Wide string detection has been further tweaked, as has finding libxml2. Thanks to Bob Wilkinson for that.
o Solution and project files for Visual Studio 2005 are now included.
o Visual Studio builds now produce distinct debug and release versions of the library. Thanks to Timo Geusch and David Grigsby who separately suggested that.... [read more](/p/arabica/news/2007/08/arabica-august-2007-release/)
Happy New Year
Here's Arabica first release of 2007. It contains a number of incremental improvements, but nothing you might describe as startling
* Build
o Further improvements to the configure system. The build can now be configured without the Boost libraries in which case the XPath components are skipped. Parser detection is improved, as is detecting the correct libraries for sockets.
o Added a Visual Studio solution file to build with Boost.
* Code
o Added TreeWalker and NodeFilter implementation, part of DOM Traversal. Thanks to craigp for that.
o Beefed up the MSXML version checking. Thanks to Sten Darre for that.
o Reworked the buffering in convertstream to reduce the number of dynamic allocations. This should make it quicker, and that will be particular noticeable on large documents. Thanks to Timo Guesch for profiling and suggesting the change.
o LexicalHandler and DeclHandler are now part of the XMLReader interface. They can now be set directly, rather than fiddling around with setProperty and the strange casting that involved. XMLFilterImpl has been extended to support them, as has the DefaultHandler. DefaultHandler2 is now redundant and has been deprecated.... [read more](/p/arabica/news/2007/01/arabica-january-2007-release/)
Another release. I feel giddy.
This release further improves the configuration options, allowing easier selection of the underlying XML parser library.
The Visual Studio 2003 solution and project files have been properly updated (something I unaccountably forgot to do), so that all the tests and examples are built. Compiling Arabica against MSXML also now compiles correctly again.
This release introduces no other new functionality.... read more
Arabica September 2006 Release 2
Yet another release. Alarming, I know.
This release follows hot on the heels of the previous one, adding
incremental tweaks and improvements to the new GNU Autotools based build.
Most significantly, Arabica can now be configured to build without the
Boost libraries. If Boost is not available, or is specifically turned
off using configures --without-boost option, the XPath engine is
excluded from the build, as is the ability to provide XMLReader template
parameters in any order. Chances are you aren't using that second one
anyway.... read more
Frighteningly, I've just cut a new Arabica release, a mere month after the previous one. On the one hand I'm happy to announce this, because it's a quite significant. On the other I'm not, because the reason I've had time to do it is because the reason I've had the time is because I haven't had any work. Don't be afraid to get in touch if you need an extra pair of hands.
This release significantly simplifies the build procedure, as I've finally abandoned my increasingly unwieldy collection of Makefile variables in favour if GNU Autotools. Arabica has been autoconfiscated, so on any reasonable Unix box the familiar incantation of ./configure - make - make install will do the business.... read more
Doesn't time go by?
This release extends the XPath engine to support arbitrary strings types. It now runs std::string and std::wstring out of the box.
A new dual DOM/Streaming parser has been added. By registering a callback function, partially built DOM trees can be processed, modified, manipulated or even discarded, before proceeding to build more of the tree.
The test suite has been extended to include std::string, std::wstring and a custom string type. ... read more
First release for a while, with a big new feature - Arabica now includes an XPath engine. It implements all of the XPath 1.0 recommendation with the exception of the id(o) and lang(s) functions. This initial release only supports DOM::Node<std::string>.
There are assorted smaller bug fixes:
SAX: libxml2 declHandler is zero intialised
DOM: hasNamespaceURI/getNamespaceURI fixed
Assorted compliance fixes and fiddles to ensure clean builds using gcc 3.3.3 and gcc 4.x... read more
This latest release is primarily a bug-fix release.
In the SAX library : SAXParseException copy constructor was corrected. DefaultHandler::fatalError now throws an exception, matching its documentation. Thanks to Ulrich Heinen of the University of Freiburg for picking that up. The MSXML2 wrapper now allows exceptions thrown from ErrorHandlers to propagate properly, rather than dropping them at the COM boundary. There are a few VS.NET specific fixes. The Writer SAX filter now also writes any internal DTD subset.... read more
This is primarily a bug-fix release. There are a number of fixes to the DOM implementation, particularly relating to namespace handling and error reporting. The convert_adaptors now handle binary data correctly. A Makefile for Mac OSX is now also available.
Source tar.gz download
http://prdownloads.sourceforge.net/arabica/arabica-2004-january.tar.gz?download
Source zip download
http://prdownloads.sourceforge.net/arabica/arabica-2004-january.zip?download... read more
This latest release adds both SAX and DOM writers, allowing SAX events and DOM trees to be serialised to iostreams (file, console, etc).
To support the writers are several codecvt facets providing several common conversions - UTF8 to UTF16, ISO8559-1 to UTF16, etc.
The release includes several minor portability improvements, and the library is now much easier to build than in the past.
Finally there have been several minor and one major bug fix, along with assorted improvements to the Xerces support, all largely provided by Arabica's Antipodean Correspondant, Philip Walford.... read more
This is the first 'full' Arabica release.
It has a number of incremental improvements over the previous SAXinC++ release - building the library is now less fiddly, the MSXML support has been inproved, it's been checked with Xerces 2.1 and expat 1.95.4, and there are a few minor bug fixes.
The release now includes a DOM Level 2 Core implementation. Like the SAX implementation it is fullly templated on string type and string construction policy, meaning it can deliver std::string, std::wstring or your choice of string class on top of any of the supported parsers.