NOTE: 
  - the head of this module is package libxml-2 . There is incompatibilities
    with the old libxml-1 headers. I posted on gnome-hackers a recipe to
    change your code to compile with both, check it out ! Also read
    http://xmlsoft.org/upgrade.html
  - in the meantime the old 1.x code has been tagged with LIB_XML_1_BRANCH
    extract this version and drop me a mail if you want me to take care of
    the update of your module to libxml-2 <daniel@veillard.com>
  - the 1.x branch has a separate commit policy, please check the HACKING
    file for this branch

     Rules for commits on the gnome-xml module
     =========================================

  BEFORE READING FURTHER: DO NOT COMMIT DIRECTLY !

 In the exceptional case where a serious breakage in this module
prevents other core projects from making progress, then feel free
to patch first and send mail afterward as long as the changes are limited.
Please keep in mind that a large part of my user base is on Windows, so
be careful with potential portability problems there.

Otherwise, send me (veillard@redhat.com) a mail and if it's a bug
issue, register it at bugzilla.gnome.org (module libxml). I check both
my mail and the bug database on a regular basis. If you don't get an
answer within a week (which is highly unprobable) then commit your changes.
This simply mean that I'm on holliday or on the road.

  thanks in advance for following the rule,

Daniel

P.S.: Bjorn Reese, William Brack, Thomas Broyer, Igor Zlatkovic and
      Aleksey Sanin get an exception for the send before commit rule
      as well as John Fleck for the doc maintenance Send them mail if
      I don't answer to request in a timely fashion

