Release of libxml-1.8.8 and libxml2-2.1.0



  After numerous reports of problems related to the incompatibilities
and the fact that the suggested way to preserve compatibility using
a macro mechanism was not considered clean enough, I have tried to work
out a solution ensuring both libxml-1.x and libxml-2.x compatibility.

  Downloads:
     ftp://rpmfind.net/pub/libxml/

  home page: 
     http://xmlsoft.org/

  1.8.8 is mostly a comodity package for upgrading to libxml2 accoding to
        new instructions at http://xmlsoft.org/upgrade.html.
        It also fixes a nasty problem about & charref parsing
        it is intended to be binary compatible with 1.8.7, unless you're
        concerned about this you really should upgrade to 2.1.0 instead

  2.1.0 also ease the upgrade from libxml v1 to the recent version. it
        also contains numerous fixes and enhancements:
        - added xmlStopParser() to stop parsing (mostly untested)
        - improved a lot parsing speed when there is large CDATA blocs 
        - includes XPath patches provided by Picdar Technology 
        - tried to fix as much as possible DtD validation and namespace
          related problems 
        - output to a given encoding has been added/tested 
        - lot of various fixes

  If you are concerned by upgrading existing libxml v1 code to work
with libxml2, please read the following as well as the related page:
   http://xmlsoft.org/upgrade.html

Both versions now offers the following:
 - similar include naming, one should use #include<libxml/...> in both cases.
 - similar identifiers defined via macros for the child and root fields:
   respectively xmlChildrenNode and xmlRootNode
 - a new macro LIBXML_TEST_VERSION which should be inserted once in the
   client code

So the roadmap to upgrade your existing libxml applications is the following:
 - install the  libxml-1.8.8 (and libxml-devel-1.8.8) packages
 - find all occurences where the xmlDoc root field is used and change
   it to xmlRootNode
 - similary find all occurences where the xmlNode childs field is used
   and change it to xmlChildrenNode
 - add an LIBXML_TEST_VERSION macro somewhere in your main() or in the
   library init entry point
 - Recompile, check compatibility, it should still work
 - install libxml2-2.1.0, remove libxml-devel-1.8.8 and install
   libxml2-devel-2.1.0 (libxml-1.8.8 can be kept installed for legacy stuff)
 - remove your config.cache, relaunch your configuration mechanism,
   and recompile, if steps 2 and 3 were done right it should compile as-is
 - Test that your application is still running correctly, if not this
   may be due to extra empty nodes due to formating spaces being kept in
   libxml2 contrary to libxml1, in that case insert xmlKeepBlanksDefault(1)
   in your code before calling the parser (next to LIBXML_TEST_VERSION is
   a fine place).

At that point your code should be able to compile both with libxml2-devel-2.1.0
or libxml-devel-1.8.8 . Moreover in case of libxml.a mismatch with your
header, you will get a warning or an error. 

Daniel

-- 
Daniel.Veillard@w3.org | W3C, INRIA Rhone-Alpes  | Today's Bookmarks :
Tel : +33 476 615 257  | 655, avenue de l'Europe | Linux XML libxml WWW
Fax : +33 476 615 207  | 38330 Montbonnot FRANCE | Gnome rpm2html rpmfind
 http://www.w3.org/People/all#veillard%40w3.org  | RPM badminton Kaffe




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]