lmi
[Top][All Lists]
Advanced

[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

reply via email to

[Prev in Thread] Current Thread [Next in Thread]