[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi] upgrade to xmlwrapp-0.6.0
From: |
Vaclav Slavik |
Subject: |
[lmi] upgrade to xmlwrapp-0.6.0 |
Date: |
Mon, 23 Feb 2009 17:31:16 +0100 |
Hi,
I released xmlwrapp-0.6.0 yesterday with several enhancements needed by
LMI. Full changelog is here:
http://sourceforge.net/project/shownotes.php?release_id=663181&group_id=142403
Changes of particular interest for LMI are:
Ported Unix build system to Autotools.
It is no longer necessary to instantiate xml/xslt::init object
before using the library; this is now done automatically (thread
safety is preserved) and new code shouldn't do it. Moreover,
creating multiple xml/xslt::init object instances is now
possible and doesn't result in multiple initialization/shutdown
of the library.
Improved iterators performance (only if Boost.Pool is available).
Added xml::node::elements() methods for efficient iteration over child
elements. In most cases, this is a better alternative to find().
I created https://savannah.nongnu.org/patch/index.php?6753 ticket on
Savannah and attached several patches to take advantage of the new
features to it. It would be nice to have at least the makefiles-related ones
applied relatively soon, so that we can rely on 0.6.0's features.
The patches:
lmi-xmlwrapp-0.6-autoconf-require.patch
Bumps configure's dependency on xmlwrapp to require at least
version 0.6.0. In build system, this allows us to rely on
separate libxsltwrapp library; other patches add dependency on
0.6.0's new API, so this is needed for them too.
lmi-xmlwrapp-0.6-msw-build.patch
This upgrades xmlwrapp to 0.6.0 on Windows. Unlike my previous
(unapplied) patch to upgrade to 0.5.1, this one is more
complicated, because xmlwrapp now uses standard Autotools build
system and so LMI no longer needs to build it on its own.
I'm not sure if I did the right thing here: should xmlwrapp stay
in install_miscellanea.make and be installed
in /opt/lmi/third_party, or should it install
into /opt/lmi/local like libmxl2 and wx? If the latter, which
install_*.make file should the rules go into?
lmi-xmlwrapp-0.6-use-xsltwrapp.patch
Instead of homegrown XSLT code, use xsltwrapp library. The new
code doesn't replicate the following parts of xslt_lmi.cpp:
int substitute_entities_copy =
xmlSubstituteEntitiesDefault(1);
int load_ext_dtd_default_copy = xmlLoadExtDtdDefaultValue;
xmlLoadExtDtdDefaultValue = 0;
The former is xmlwrapp's default already. The latter's default
is 1, but as far as I can tell, no DTD parts are loaded anywhere
in LMI, so there's no risk of needless network access, is there?
Perhaps more importantly, if the default should be 0, then I'd
say it should be 0 _globally_ for all of LMI and not just for
XSLT transformations, and we should simply call
xml::init::load_external_subsets(false);
sometimes during initialization.
lmi-xmlwrapp-0.6-use-new-api.patch
Upgrades LMI code to take advantage of new xmlwrapp APIs. In
particular, removes xml::init (no longer necessary) and replaces
xml_lmi::child_elements() with xml::node::elements() and
xml::nodes_view. In input_xml_io.cpp, nodes_view is a tiny bit
more efficient than the current manually written code (and
therefore much faster than the commented-out
child_elements()-based one).
Thanks,
Vaclav
- [lmi] upgrade to xmlwrapp-0.6.0,
Vaclav Slavik <=