Revision history for Perl extension XML::LibXML

2.0210  2024-01-24
    - Fix copying external entity from an ext_ent_handler handler
        - thanks to Petr
    - libxml-mm: Fix function prototypes in function pointers
        - thanks to Khem Raj

2.0209  2023-07-15
    - t/35huge_mode.t: fix test with libxml2 2.11
        - thanks to Dominique Martinet
    - Add clearer reference to using cloneNode to extract node with namespaces
        - thanks to Timothy Legge
    - initialize xmlValidCtxt
        - thanks to Alexander Bluhm

2.0208  2022-09-30
    - Fix
        - Bug #144415 for XML-LibXML: createElementNS & setNamespace get
          confused by Readonly scalars
        - thanks to DAKKAR and haarg.

2.0207  2021-04-17
    - Small cleanups:
        - Thanks to @Grinnz , @Kritzefitz and @atoomic .

2.0206  2020-09-15
    - Add expand_entities => 1 to the instantiation at lib/XML/LibXML/
        - in order to fix
        - failing XML-Simple tests
        - Thanks to SREZIC , and GRANTM .
    - Update HACKING.txt .

2.0205  2020-05-08
    - Add XML::LibXML to the XML/SAX/ParserDetails.ini configuration file
    upon installation.
        - Thanks to SREZIC , @genio , and @plicease .

2.0204  2020-03-17
    - Require a recent Alien::Libxml2.
        - Thanks to SREZIC

2.0203  2020-03-11
    - Use Alien::Base::Wrapper for better portability.
        - Thanks to @plicease

2.0202  2020-01-13
    - Disable loading external DTDs or external entities by default
        - Thanks to Tim Retout
    - Docs: Noting that HTTPS doesn't work for schema-loading either.
        - Thanks to Jason McIntosh
    - Allow to parse RelaxNG without accessing network
        - Thanks to PALI
    - Allow to parse XML Schema without accessing network
        - Thanks to PALI
    - Add Test-Count assertion count checking using

2.0201  2019-05-25
    - Set MIN_PERL_VERSION to 5.8.1.
    - Alien::Libxml2 Makefile.PL cleanups.
    - Update the README for grammar and info.
    - Link to XML-LibXML "by Example"
        - Thanks to @Grinnz .

2.0200  2019-03-23
    - Convert to use Alien::Libxml2 .
        - Thanks to @genio and @plicease .

2.0134  2019-02-10
    - Fix overzealous POD escaping in the docs' synposes
        - Thanks to @davorg.

2.0133  2019-02-02
    - Mark as working with libxml2 2.9.9 ( and below ).
    - Allow LibParser to be provided for all methods
        - Thanks to @lavock .
    - Portability fixes by Reini Urban and others.
        - .
        - Thanks!

2.0132  2017-10-28
    - Revert setNamespace() enhancements that broke some dependent tests:
        - commit df9fdc6659cb2e4e9bc896e58c02dfd79b430fbb
        - add t/48_rt123379_setNamespace.t .
        - Thanks to Alexander Bluhm and Slaven Rezic for the reports and
        the test.

2.0131  2017-10-24
    - Re-include the missing *.pod documents.
        - Thanks to Stephen for the report.
        - Add t/pod-files-presence.t to test for it in the future.
    - Merge
        - Fix bug in Node::replaceChild()
        - Thanks to @Mipu94 .

2.0130  2017-10-18
    - Fix the tests with libxml2-2.9.6 .
        - Thanks to Daniel Macks for the report and ppisar for a patch.
    - setNamespace() Enhancements.
        - Thanks to E. Choroba.

2.0129  2017-03-14
    - Add example/ .
    - Add support for the set_document_locator() SAX method .
        - Thanks to Alexander Batyrshin for the pull-request.
    - Make parsing of large perl strings much faster.
        - Thanks to Cedric Cellier for the pull-request.

2.0128  2016-07-24
    - Hopefully add the .pod files again as they were missing from 2.0127.
        - Thanks to Paul Howarth for the report.
        - This was caused by ExtUtils::Manifest just warning that the files
        referenced in the "MANIFEST" file were not present and still
        continuing to prepare the archive as usual. A "do-what-I-don't-want-to"

2.0127  2016-07-22
    - Make sure t/release-kwalitee.t and other tests do not run by default.
        - Only with AUTHOR_TESTING or RELEASE_TESTING specified.
        - Thanks to Lance Wicks for the pull request.

2.0126  2016-06-24
    - Workaround RT#114638:
        - 2.9.4 broke XSD Schema support.
        - Thanks to Paul for the report and to RURBAN for a pull-req.
    - Add t/release-kwalitee.t for testing CPANTS Kwalitee.

2.0125  2016-05-30
    - Moved the repository from Mercurial and BitBucket to Git and GitHub:
        - This was done to better encourage contributions to XML::LibXML and
        to be able to use the better Continuous Integration options that
        are available for GitHub projects.

2.0124  2016-02-27
    - Fix XML::LibXML::Text->attributes() to return an empty list in list
        - Thanks to Rob Dixon for the report.

2.0123  2015-12-06
    - Get rid of an undef-warning in XML::LibXML::Reader .
        - Thanks to Rich for the report and testcase.
    - Apply patch from Debian for rewording the documentation.
        - Some extra rewording has been done by SHLOMIF.
        - Thanks to Gregor Herrman and the Debian Team

2.0122  2015-09-01
    - Enable the memory test on cygwin as well as Linux.
        - Thanks to for
        the report.
    - Fix a typo in createElementNS
        - Thanks to Rich for the report.

2.0121  2015-05-03
    - Mention CVE-2015-3451 and related links in the Changes (= this file)
    entry for 2.0119.
        - Thanks to Tilmann Haak for pointing it out.

2.0120  2015-05-01
    - Replace the test for the previous change with a more meaningful one.
        - Change was to preserve unset options after a _clone() call.
        - Thanks to Salvatore Bonaccorso from Debian for the report and
        for a proposed fix (which was further refined by Shlomi Fish).

2.0119  2015-04-23
    - SECURITY: Preserve unset options after a _clone() call (e.g: in
        - This caused expand_entities(0) to not be preserved/etc.
        - This is a security problem which was assigned the CVE number of
        CVE-2015-3451 .
        - Thanks to Tilmann Haak from for the report.

2.0118  2015-02-05
    - Add $Config{incpath} to the include paths on Win32.
        - Fixes
        - Thanks to Marek for the report and propsed fix.

2.0117  2014-10-26
    - Support libxml2 builds with disabled xmlReader
    - Makefile.PL : don't require a recentish ExtUtils::MakeMaker.
        - Thanks to Slaven Rezic for the report.
    - Fix broken t/02parse.t with non-English locale with recent perls.
        - Thanks to Slaven Rezic for the report.

2.0116  2014-04-12
    - t/cpan-changes.t : minimum version of Test::CPAN::Changes.
        - This is to avoid test failures such as:

2.0115  2014-04-03
    - Fix double free when calling $node->addSibling with text nodes.
          - Thanks to Jeff Trout for the report.

2.0114  2014-04-03
    - Fix memory leaks and segfaults related to removal and insertion of
      DTD nodes.
    - Fix memory leak in $node->removeChildNodes

2.0113  2014-03-14
    - Fix test failures with older libxml2 versions.
        - Thanks to Nick Wellnhofer for the patch.
        - Thanks to the CPAN Testers for reporting this issue.

2.0112  2014-03-13
    - Fix segfaults when accessing attributes of DTD nodes
        - Thanks to Ralph Merridew for the report.
    - Make $schema->validate work with elements. This uses
      xmlSchemaValidateOneElement under the hood.
        - Thanks to Jeremy Marshall for the report.
    - Fix .
        - Thanks to Nick Wellnhofer for the report and test.
    - Apply patch to build with MSVC on Windows.
        - Thanks to Nick Wellnhofer for the investigation and the patch.

2.0111  2014-03-05
    - Skip t/40reader_mem_error.t with libxml2 < 2.7.4
      The failure is probably due to a known double-free bug.
        - Thanks to Nick Wellnhofer for the pull request.
    - Die if a file handle with an encoding layer returns more bytes
      than requested in parse_fh.
    - Make insertData, deleteData, replaceData work correctly with UTF-8
    - Fix substringData
    - Fix "Threads still failing?" Bug report.
        - Thanks to Daniel for the bug report and a test case, and to
        YOREEK for the patch.

2.0110  2014-02-01
    - Add "use strict;" and "use warnings;" to all modules (CPANTS).
    - Add a LICENSE section to the POD (CPANTS).

2.0109  2014-01-31
    - Fix for requiring XML::LibXML inside two loops in perl-5.19.6 and up.
        - Thanks to Father Chrysostomos for the investigation, the test
        case, and the fix.
        - There are other ways to reproduce the bug, but the tests tests
        for a require inside two loops.

2.0108  2013-12-17
    - Replace local $^W with << no warnings 'portable'; >> in t/15nodelist.t
        - Should fix
        - Thanks to "pagenyon" for the report.
    - Fix hash key typo in SAX/ - "LocalName" was mis-capitalised.
        - Thanks to Thomas Berger for the report and for a reproducing
    - Convert from "use base" to the more modern "use parent".

2.0107  2013-10-31
    - Add a unique_key method for namespace objects.
        - Thanks to garfieldnate for the pull request.
    - Grammar fixes in the documentation.
        - Thanks to Gregor Herrman and the Debian Team

2.0106  2013-09-17
    - Import croak from "use Carp;" to fix a missing croak definition.
    - Update Devel::CheckLib under "./inc" to 1.01 :
        - Should fix

2.0105  2013-09-07
    - Pull some commits from Jason Mash (JRMASH) to add convenience methods
      to the XML::LibXML::NodeList module.
          - New method 'to_literal_delimited($separator)'
          - New method 'to_literal_list()'
    - Fix t/35huge_mode.t on libxml2 versions less than 2.7.0.
        - Fixes
        - Thanks to Yuriy / YOREEK for the patch.
    - Add toStringC14N_v1_1() to XML::LibXML::Node.
        - Fixes
        - Thanks to Ulrich for the report and for a patch of sorts.

2.0104  2013-08-30
    - Fix
        - Use quoted version number in the SYNOPSIS.
        - Thanks to Philipp Gortan for the report.
    - Apply a patch from Yuriy / YOREEK for test failures with a
    directory component that contains whitespace.

2.0103  2013-08-22
    - Apply patch from Yuriy / YOREEK for test failures in t/40reader.t:
        - Changed the variable name to start with an underscore for internal

2.0102  2013-08-19
    - Fixed
        - XPathContext memory leak on registerFunction.
        - Thanks to DGINEV for the report and Yuriy for the patch.
    - Apply proposed fix for
        - "replaceNode() segfaults when copying DTD nodes with ATTLISTs"
        - Thanks to for the report and to YOREEK for
        the patch.
    - Apply fix for
        - "building on RHEL-5-64 fails"
        - Thanks to for the report,
        and for taking part and Yuriy for the patch.

2.0101  2013-08-15
    - Fixed .
        - "HTML doctype differs for string/scalar input"
        - Thanks to NGLENN for the report and to Yuriy for the tests and

2.0100  2013-08-14
    - Added the unique_key() method to XML::LibXML::Node.
    - t/40reader.t: assigning from $@ to a lexical so it won't be
        - Thanks to Douglas Christopher Wilson for the report.

2.0019  2013-07-01
    - Correct typos reported in RT #86599.
        - Thanks to dsteinbrunner.

2.0018  2013-05-13
    - Revert previous change of minimal version of libxml2.
        - This change proved to be unpopular and didn't prevent
        the CPAN test failures.
        - By SHLOMIF

2.0017  2013-05-09
    - Made the minimal version of libxml2 2.9.0 as previous versions were
    too buggy due to spuriourous CPAN test failures.
        - Please upgrade.
        - By SHLOMIF

2.0016  2013-04-13
    - Don't enable XML_PARSE_HUGE by default.
        - Fix the previous version due to a mercurial SNAFU.

2.0015  2013-04-13
    - Don't enable XML_PARSE_HUGE by default.
        - Thanks to Grant McLean ( ) for
        the bug report and patch.

2.0014  2012-12-05
    - Got 40reader_mem_error.t to not fetch the external DTDs.
        - Thanks to Alexandr Ciornii (CHORNY) for the report and Slaven
        Rezic (SREZIC) for the analysis and a proposed fix.

2.0013  2012-12-04
    - Fix a memory error (double-free) in XML::LibXML::Reader if we reached
    EOF and
    then called destroy.
        - discovered by Shlomi Fish.
        - Fixed by Shlomi Fish.
        - see t/40reader_mem_error.t

2.0012  2012-11-09
    - Fix support for references to scalars with overloaded stringification
        - Thanks to Christian Hansen (CHANSEN) for a report, a testcase, and
        a patch.

2.0011  2012-11-08
    - Fix crash in removeChild() when not expanding entities
            - "removeChild() segfaults when not expanding entities"
        - Thanks to for the report, for a test case (that
        was adapted into t/48_removeChild_crashes_rt_80395.t ) and for
        a patch to fix it.

2.0010  2012-11-01
    - Passing debug (an undocumented option) to check_lib in Makefile.PL.
        - This way we get more meaningful traces on perl Makefile.PL DEBUG=1.
        - Thanks to MSTROUT for the report and a proposed fix.

2.0009  2012-11-01
    - Fix libxml2 detection in Strawberry Perl.
        - Another Devel::CheckOS fallout.
        - Thanks to KMX for the report and for a proposed fix. The actual fix
        was made to be more generic considering the use-cases.

2.0008  2012-10-22
    - Fix build error when using non-standard libxml2 installation
        - Thanks to L RW for the report.

2.0007  2012-10-17
    - Fix for build failures on Windows with Microsoft Visual C++.
        - Thanks to Desmond Daignault for the report and an initial patch.
        - Patch modified by Shlomi Fish

2.0006  2012-10-13
    - When xml2-config returns several paths, the configuration failed.
    Fixed that.
        - Thanks to VOVKASM for the report and fix.

2.0005  2012-10-13
    - Added t/style-trailing-space.t and removed trailing space.
    - Add a check for the existence of included C headers (*.h) files
    in Makefile.PL to avoid failed compilations.
        - Using Devel::CheckLib.
        - Thanks to its maintainers!

2.0004  2012-08-07
    - Add a way to specify a different compiler to be used in the
    "Makefile" by calling Makefile.PL with the CC environment variable
    set to the path to the alternate compiler.
        - This way we can use «CC=/usr/bin/clang perl Makefile.PL»
        in order to compile faster.
    - (_clone): Fix typo in line_numbers handling.
        - Thanks to Bernhard Reutner-Fischer for the report and fix.

2.0003  2012-07-27
    - Patch to a potential NULL dereference in xpath.c.
        - Thanks to Ville Skyttä <> and cppcheck.
    - Fix NodeList::item() calling a 1-indxed array reference.
        - See:
        - Thanks to Tim Brody
    - Add the scripts/ script to tag a release using

2.0002  2012-07-08
    - Applied spelling fixes correction patch by
    Ville Skyttä <>.
        - Thanks, Ville!

2.0001  2012-06-20
    - Remove the leftover perl-libxml-libxml.h from the distribution.
        - Thanks to Martin Mann for the report.

2.0000  2012-06-19
    - Fix warnings that appear when compiling using the clang C compiler by
        - Thanks to duvny for the report, and to seldon, doy and Zefram
        for their assistance in fixing the warnings.
    - Fix tests and run-time errors when Hash::FieldHash is installed
    by no longer using Hash::FieldHash.
        - Thanks to for reporting it, and to
        Father Chrysostomos ( ) and
        Mons Anderson for some diagnosis.

1.99    2012-05-31
    - Apply a patch from Mons Anderson ( ) for fixing the
        - t/62overload.t
        - Thanks to Mons.
    - Fix test failures (and general functionality) on 64-bit big endian
        - Thanks to Gregor Herrmann and Niko Tyni from the
        Debian Perl group.

1.98    2012-05-13
    - Make sure parse_string() and load_xml() also accept references to
    strings (to avoid unnecessary copying).
        - See:

1.97    2012-04-30
    - Apply a test and a fix to correct keep_blanks having no effect on
        - fixes
        - Add t/30keep_blanks.t .
        - Thanks to SREZIC for the report, the test and the fix.

1.96    2012-03-16
    - Apply a patch to add leading minus signs to the commands of
        - This makes the make process succeed even if they fail.
        - Fixes
        - Thanks to POPEL for the report, and to Petr Pajas for the patch.
    - Apply a patch from Tim Brody to skip_all on
    t/49callbacks_returning_undef.t when's version is below 1.35.
        - Thanks to Tim Brody for the patch.
        - Fixes the problem reported in

1.95    2012-03-06
    - Got rid of a broken test (at least with recent libxml2s) in
    t/03doc.t :
        - The problem was that the test tested for an undefined XML
        namespace, a behaviour which was changed in a recent libxml2
        - Thanks to vcizek for the report.

1.94    2012-03-03
    - Fix XML::LibXML::Element tests for ineqaulity with == and eq.
        - Fixes .
        - Thanks to Mark Overmeer for the report and for a preliminary patch
        to t/71overload.t .

1.93    2012-02-27
    - Fix XML::LibXML::Element comparison with == and eq.
        - Fixes , , .
        - Thanks to Toby Inkster for a preliminary patch (that was modified by
        me) and to the various people who reported the problem.

1.92    2012-02-21
    - Fix for test failure on perls < 5.10.
        - Fixes
        - Thanks to Paul for the report, and for a patch that was not

1.91    2012-02-21
    - Overload hash dereferencing on XML::LibXML::Elements, to provide
    access to the element's attributes.
        - See XML::LibXML::AttributeHash for details.
        - Thanks to Toby Inkster.
    - Pull some commits from Toby Inkster to add more convenient methods
    to XML::LibXML::NodeList such as sort, map, grep, etc.
        - Thanks, Toby!
    - Printed some warnings regardless if DEBUG is on.
        - Thanks to for the suggestion.

1.90    2012-01-08
    - Pull a commit from Aaron Crange to fix compilation bugs in Devel.xs:
        - local variable declarations must be in the PREINIT section,
        not `CODE`, at least for some compiler/OS combinations.
        - Thanks, Aaron!

1.89    2011-12-24
    - Apply a patch with spelling fixes by Kevin Lyda :
        - Thanks to Kevin.
    - Apply a pull request by ElDiablo with the implementation of
    lib/XML/LibXML/ .
    - Adjust the Win32 Build Instructions in the README file.
        - Thanks to Christopher J. Madsen.

1.88    2011-09-21
    - Add libxml2 2.7.8 as tested and working fine for the Makefile.PL.
    (Thanks to H. Merijn Brand.).
    - Apply a patch to perl-libxml-sax.c to use xmlChar * instead of char *.
    (Thanks to H. Merijn Brand.).
    - Correct the README so it won't read XML-LibXML-Common.
        - see
    - Add a patch to implement the no_defdtd option in recent libxml2's:
        - Thanks to .
    - Add scripts/ to modify the version number globally.
        - Up to then, the version numbers of the modules under lib/ had
        been 1.73.

1.87    2011-08-27
    - Fix t/49callbacks_returning_undef.t to not read /etc/passed which may
    not be valid XML. Instead, we're reading a local file while using
    URI::file (assuming it exists - else - we skip_all.)

1.86    2011-08-25
    - Changed SvPVx_nolen() to SvPV_nolen() in LibXML.xs for better compatibility.
        - SvPVx_nolen() appears to be undocumented API.
        - Resolves
        - Thanks to Paul for the report.

1.85    2011-08-24
    - Gracefully handle returned undef()s in the read callback under -w ($^W):
        - t/49callbacks_returning_undef.t
    - Add a patch from Mithaldu to get XML::LibXML to compile on Win32:
        - I'm applying it by faith, so if it breaks, blame him. (;-).
        - the patch adds -lllibgettextlib.dll to the Makefile.PL.

1.84    2011-07-23
    - Fix for perl 5.8.x before 5.8.8:
        - "You can now use the x operator to repeat a qw// list. This used to raise a syntax error."
        - fixes .
        - thanks to for the report.

1.83    2011-07-23
    - Fixed missing declarations after statements:
        - resolves again.
        - thanks to Vadim / VKON.
    - Fix docbook source validity
        - resolves
        - thanks to Ville Skytta / SCOP for the patch.
    - Applied patch from
        - [PATCH] Documentation spelling fixes
        - thanks to Ville Skytta / SCOP for the patch.
        - minor correction by the current maintainer (SHLOMIF).
    - Convert t/14sax.t to Counter and Stacker so the tests will be more
        - SHLOMIF

1.82    2011-07-20
    - Moved some if blocks after the dSP; (which contains declarations) to be
    compliant with C89/C90, which don't allow declarations in the middle of
    a C function.
        - resolves
        - thanks to Vadim / VKON.
    - Fix :
        - "install_sax_driver doesn't like custom INSTALLARCHLIB"
        - thanks to Milki from U.Cal Berkeley.

1.81    2011-07-16
    - Add scripts/ to remove the explicit objects dependency on
    the "Makefile" file so after running scripts/ one won't have to
    rebuild the C-files.
    - Add no warnings 'recursion' to lib/XML/LibXML/ to get rid of
    a "Deep recursion" warning.
    - Fix "IDs of elements is lost when importing nodes"
        - With t/48importing_nodes_IDs_rt_69520.t .
        - Thanks to Yuriy Ustushenko.
    - Convert all remaining test scripts except t/14sax.t to
    Test::More .

1.80    2011-07-12
    - Fix :
        - Compilation on strawberry perl.
        - The problem was that stderr required a dTHX; call previously.
    - DOM Normalisation patches and a fix for #69096
        - Thanks to Daniel Frett.
        - "findvalue from XML::LibXML 1.74 is very slow (regression)"
    - Fix :
        - "t/19die_on_invalid_utf8_rt_58848.t assumes errors will be objects:"
        - Thanks to TODDR.
        - Failed on older libxml2's.
    - Add a skip for t/60error_prev_chain.t in case $@ is true but not a ref.
        - Thanks to TODDR.

1.79    2011-07-08
    - t/46err_column.t : add a skip for a test for CentOS/RHEL 4:
        - old version of libxml2 .
    - t/49global_extent.t : fix the double plan (present on libxml2
    below 2.6.27):
        - Thanks to Chris for reporting it.
    - double plan in t/61error.t .
        - in accordance to the previous change.

1.78    2011-07-06
    - Change t/02parse.t to test for the localized error message:
    - Fix the skip() and 'plan skip_all' syntax in t/06elements.t and
    t/49global_extent.t for old versions of XML::LibXML:
        - It did not match the one specified in Test::More.
    - Convert more test scripts from to Test::More.

1.77    2011-07-01
    - Change the signature of XML::LibXML::Reader::byteConsumed to be
    "long" instead of "int", so it can return values above 2**31 in
    64-bit platforms.
        - should fix
    - Change "a XML::LibXML::*" to "an XML::LibXML::*" in the documentation.
    - Document XML::LibXML::NamedNodeMap :
        - .
    - Add an external entity resolver (for XSLT/etc.):
        - Fixing .
        - Thanks to SAMSK for the patch.
    - Add the missing string comparison overload in
    lib/XML/LibXML/ :
        - Thanks to MSCHWERN .
    - Fix :
        - <<< In XML::LibXML, warnings are not suppressed when specifying the
        recover() or recover_silently() flags as per the following excerpt from
        the manpage: >>>
        - Now XML-LibXML requires perl-5.8.x (to print to a buffer trick.).
        - Thanks to Michael Ludwig for the report.
    - Fix :
        - limit the length of the chain of the previous errors.
        - New files:
            - t/60error_prev_chain.t
            - example/JBR-ALLENtrees.htm
        - Thanks to SCOP.
    - Fix :
        - "Malformed UTF-8 character (fatal) at" exception thrown on invalid
        - Thanks to David E. Wheeler (DWHEELER) for the report.

1.76    2011-06-30
    - Cleaned up t/28new_callbacks_multiple.t - convert to a Counter
     and Stacker class.
        - After that, the regression test for was added:
        - Already fixed in the trunk.
    - Add the file HACKING.txt with style guidelines.
    - Fix (with a test
    in t/49_load_html.t ) - uncovered some more bugs in the process
    documented in TODO.
        - << suppress_errors option not honored by load_html() method if set in
        parser object >>
    - Created t/lib/ with slurp(), utf8_slurp() and, in the
    future, some other routines.
    - skipping for LIBXML_RUNTIME_VERSION() *less than* 2.7 instead of
    *more than* in t/09xpath.t :
        - Thanks to DOUGW .

1.75    2011-06-24
    - Correct some typos reported in
    - Fix the handling of XML::LibXML::InputCallbacks at load_xml().
        - The problem was that the input callbacks were not cloned in
    - Apply the patches from
        - Convert t/02parse.t to Test::More .
        - Thanks to TODDR .
        - Removed the diag() messages which were annoying.
    - Add 'make runtest' and 'make distruntest' targets to run the tests using
    Test::Run ( ).
        - Adds colours and stuff like that.
    - Add << LICENSE => 'perl' >> to the Makefile.PL for a license
    meta-data in the META.YML.
    - Feature implementation: joining congruent character data together in
    SAX driver .
        - Apply a somewhat modified patch from:
    - Add t/pod.t .
    - Fix :
        - Apply modified patch in the bug report.
        - << If an element contains both a default namespace declaration and a
        second namespace declaration, adding an attribute using the default
        namespace declaration will cause that attribute to have the other
        prefix. >>

1.74    2011-06-23
    - More work on the t/*.t test scripts.
    - Add scripts/ to semi-automatically
    convert a test script from to Test::More.
    - Change NodeSet to NodeList in the documentation of
    lib/XML/LibXML/ .
        - Resolved
    - Makefile.PL: now saying we are trying to link against -lm, -lz
    and -lxml2 . Not only -lxml2:
        - << $node = XML::LibXML::Comment( $content ); >> is wrong.
    - Documentation: moved away from Indirect-object-notation and added
    some missing "my"s:
    - Fix failing t/01basic.t when compiling against libxml2 that comes from
        - Thanks to Evan Carroll ( ) for the

1.73    2011-06-18
    - Calculating $err->column() properly, so it won't be maxed out at
        - the context still maxes at 80 (to avoid wasting RAM) but we
        still continue past that to get the accurate verdict.
        - Thanks to SCOP.
    - Update the repository in the documentation to point to the one.
    - Revamped Makefile.PL:
        - Got rid of "\t" characters.
        - Add "use strict" and "use warnings".
        - Add resources and keywords to the META_MERGE.
        - Other changes.
    - Fix :
        - << when calling normalize on a node, processing of children nodes
        will stop when an empty element node is encountered. >>
        - Thanks to Daniel Frett for the patch.
    - Apply the patch from Daniel Frett's InputCallbackFix branch.
        - a partial fix to .
        - Call two $parser->parse_string() in succession.
    - Apply the NestedParsing patch.
        - more of
        - Thanks to Daniel Frett for the patch.

        Updated how legacy parser local callbacks are utilized by
        init_callbacks so that the XML::LibXML::InputCallback object doesn't
        have to be temporarily modified during the parsing process.

        This change could break code for users that have subclassed
        XML::LibXML::InputCallback and overridden the init_callbacks method
    - Documentation fixes patch from Daniel Frett on:
        - From .

1.72    2011-06-16
    - Removed a stray file from the MANIFEST
        - Warned on "kit not complete".
        - Thanks to obrien.jk

1.71    2011-06-14
   - Apply 0001-XML-LibXML-Error-no-need-to-AUTOLOAD-domain.patch from - no need to
     AUTOLOAD 'domain' because a method like that exists.
        -- Applied by SHLOMIF.
        -- Thanks to Aaron Crane.
    - Apply 0002-XML-LibXML-Error-avoid-AUTOLOAD.patch from - get rid of
      AUTOLOAD completely.
        -- Applied by SHLOMIF.
        -- Thanks to Aaron Crane.
    - Apply 0003-XML-LibXML-Error-make-domain-work-for-unknown-domain.patch
      from - handle
      unknown domains.
        -- Applied by SHLOMIF.
        -- Thanks to Aaron Crane.
    - Apply 0004-XML-LibXML-Error-add-domains-from-newer-libxml2.patch
      from - add more
        -- Applied by SHLOMIF.
        -- Thanks to Aaron Crane.
    - Apply 0005-XML-LibXML-Error-avoid-malformed-UTF-8-warnings.patch
        -- Applied by SHLOMIF.
        -- Thanks to Aaron Crane.
    - In replaceDataString - use instead of a long (and
    incomplete) list of characters to escape.
        -- With test.
        -- also fix deleteDataString by making it use replaceDataString
        for help.
        -- Fixing
        -- Thanks to Daniel Perrett .

1.70     Unknown
   - various fixes and improvements in the documentation
   - added (convenient yet non-standard) methods nonBlankChildNodes,
     firstNonBlankChild, nextNonBlankSibling, prevNonBlankSibling
     that skip empty or whitespace-only Text and CDATA nodes
   - exposed and documented external entity handler
   - XPathContext can now be passed to toStringC14N and toStringEC14N
     (e.g. to provide NS mapping for the XPath expression)
   - avoid using libxml2's globals (Nick Wellnhofer)
   - added interface to libxml2's regexp implementation: XML::LibXML::RegExp
   - added XML::LibXML->load_xml and XML::LibXML->load_html with
     uniform and cleaner API than the old parse_* family
   - cleanup code dealing with parsing flags
   - fix bogus validation results if revalidating a modified document
   - added 'eq' and 'cmp' overloading on XML::LibXML::Error and set fallback to 1
   - lots of bugs fixed

1.69_2   Unknown
   - provide context and more accurate column number in
     structured errors
   - clarify license and copyright
   - support for Win32+mingw+ActiveState

1.69_1   Unknown
   - merge with XML::LibXML::Common
   - fix compilation on Windows with mingw or msvc
   - fix a bug in structured errors preventing the previous errors from being reported
   - fix compilation bugs
   - fix encoding problem in reader
   - added getAttributeHash to the reader interface
   - fix segfaults: reconcileNs in domReplaceChild, findnodes with a doc fragment (S. Rezic)

1.69     Unknown
   - fix incorrect output of getAttributeNS and possibly other methods on UTF-8
   - added $node_or_xpc->exists($xpath) method
   - remove accidental debug output from XML::LibXML::SAX::Builder

1.68     Unknown
   - compilation problem fixes

1.67     Unknown
   - many bugfixes (
   - added XML::LibXML::Pattern module and extended pattern support in Reader
   - added XML::LibXML::XPathExpression module that can pre-compile an XPath
   - reimplementation of the thread support (mostly by Tim Brody)
   - structured errors XML::LibXML::Error
   - memory leak fixes
   - documentation fixes
   - README - notes for building on Win32 (C.J. Madsen)

1.66     Unknown
   - Perl-thread support contributed by Tim Brody [ #31945]
   - fix [ #30610] possible segmentation fault when importing nodes from a document to an element created with XML::LibXML::Element->new
   - fix [ #30261] Segmentation fault when extracting elements from an XML chunk
   - make Makefile.PL require Perl 5.6.1
   - minor fixes and additions to the documentation
   - portability patch from [ #29627]
   - give registered Ns declarations precedence over document-specific ones
     in XML::LibXML::XPathContext; fixes [ #29650]

1.65     Unknown
   - fix bug in t/40reader.t revealed by a bugfix in Test::More 0.71 (Jonathan Rockway)
   - fix possible SIGSEGV when PI's or attrs created with
     createDocument can get garbage-collected after their owning
     document (old-standing bug suddenly caught by XML::Compile regression tests)
   - skip tests for unsupported features on unsupported versions of Perl/libxml2
   - make Reader interface require Perl 5.8 (patches to extend to 5.6 are welcome)

1.64     Unknown
   - fix reconciliation of the "xml" namespace [ #26450]
   - make tests pass with libxml2 2.9.29 - PI regression tests now
     accept "" as data of an empty PI [ #27659]
   - strip-off UTF8 flag with $node->toString($format,1) for consistent
     behavior independent on the actual document encoding
   - fix in XML::LibXML::Reader::nextSiblingElment
   - fix synopsis for XML::LibXML::Reader
   - skip tests that require Encode module if not available (perl 5.6)
   - finally removed the iterator() method deprecated since 1.54
   - set_document_locator support in XML::LibXML::SAX::Parser
   - SYNOPSIS sections of the docs now mention which module to use
     and which other manpage to look into for inherited methods
   - XML::LibXML::Namespace API fixed in order to achieve
     an agreement between the docs and the implementation

1.63     Unknown
   - added no_network parser flag
   - added support for exclusive canonicalization (
   - make XInclude reflect parser flags
   - documentation fixes
   - better namespace reconciliation implemented by Tim Brody
   - $doc->toString always returns octets
   - $doc->actualEncoding returns UTF8 if no document encoding is declared
     (unlike $doc->getEncoding, which returns undef)

1.62     Unknown
   - interface to libxml2's pull-parser XML::LibXML::Reader
     (initiated by Heiko Klein)
   - make error messages intended to the user report the line of the
     application call rather than that of the internal XS call
   - XML::LibXML::Attr->serializeContent added (convenience function)
   - fix getAttributeNode etc. w.r.t. #FIXED attributes (as well as some
     cases with old buggy libxml2 versions)
   - warn if runtime libxml2 is older than the one used at the compile time
   - if compiled against libxml2 >= 2.6.27, new parse_html_* implementation is used
     allowing encoding and other options to be passed to the parser
   - DOM-compliant nodeNames: #comment, #text, #cdata, #document, #document-fragment
   - toString on empty text node returns empty string, not undef
   - cloneNode copies attributes on an element as required by the DOM spec

1.61     Unknown
   - get{Elements,Children}By{TagName,TagNameNS,LocalName} now
     obey wildcards '*', getChildrenByLocalName was added.
   - XML::LibXML::XPathContext merged in
   - many new tests added
   - the module should now be fully compatibile with libxml2 >= 2.6.16
     (some older versions compile but have problems with namespaced attributes)
   - threads test skipped by default
   - documentation updates (namely DOM namespace conformance in XML::LibXML::DOM)
   - added setNamespaceDecl{URI,Prefix}
   - get/setAttribute(NS)? implementation made xmlns aware
   - all sub-modules have the same version as XML::LibXML

1.60     Unknown
   - getElementsById corrected to getElementById and the old name kept
     as an alias. Also re-implemented without XPath for improved
   - DOM Level 3 method $attr->isId() added
   - make {get,set,has}Attribute(Node)? methods work with full
     attribute names rather than just localnames.
     (Although DOM Level 3 is not very clear about the behavior of
     these methods for an attributes with namespaces, it certainly
     does not imply that getAttribute('foo') should return value of a
     bar:foo, which was the old behavior.)
   - added publicId and systemId methods to XML::LibXML::Dtd

1.59     Unknown
   - new parser and callback code (Christian Glahn)
   - new XML::LibXML::InputCallback class
   - many bug fixes (including several memory leaks)
   - documentation and regression fixes and enhancements
   - Perl wrappers for parse_html_*
   - make sure parse_* methods are not called on class (bug 11126)
   - DOM Layer 3 conformance fixes:
     * lookupNamespaceURI(empty_or_undef) now returns the default NS
   - faster getChildrenByTagNameNS implementation
   - remove the SGML parser code no longer supported by libxml (Michael Kröll)

1.58     Unknown
   - fixed a pointer initialization in parse_xml_chunk(), fixes
     random several segmentation faults on document fragments.
   - added NSCLEAN feature to the parser interface (bug 4560)
   - minor code cleanups
   - updated libxml2 blacklist.
   - fixed croak while requesting nodeName() of CDATA sections (bug 1694).
   - more documentation updates

1.57     Unknown
   - added cloneNode to XML::LibXML::Document
   - include Schema/RelaxNG code only with libxml2 >= 2.6.0 (to support old libxml2)
   - applied patch to example/ (bug 4262)
   - fixed insertBefore/insertAfter on empty elements (bug 3691)
   - more DOM conformant XML::LibXML->createDocument API (by Robin Berjon)
   - fixed encoding problems with API calls in document encoding
   - improved support for importing DTD subsets
   - fixed DTD validation error reporting problems with libxml2-2.6.x
   - fixed compilation problems with libxml2-2.6.x
   - fixed XML::LibXML::Number to support negative numbers
   - added XML Schema validation interface (XML::LibXML::Schema)
   - added XML RelaxNG validation interface (XML::LibXML::RelaxNG)
   - Michael K. Edwards' patch applied with some amendments from Petr Pajas:
     * add debian build files (I added SKIP_SAX_INSTALL flag for
       Makefile.PL and changed the patch so that it doesn't disable
       sax parser registration completely by default, and rather made
       debian build use this flag)
     * general cleanup (use SV_nolen, etc.)
     * SAX parsers cleanup
     * general error reporting code cleanup/rewrite, try preventing
       possible memory leaks
     * recover(1) now triggers warnings (disable with $SIG{__WARN__}=sub {})
       (fixes bug 1968, too)
     * slighlty more strict parse_string behavior (now same as when
       parsing fh, etc): e.g. parse_string("<foo:bar>"), i.e prefix without
       NS declaration, raises error unless recover(1) is used
     * documentation fixes/updates
     * slightly updated test set to reflect the new slightly more strict
   - fixed default c14n XPath to include attributes and namespaces (Petr Pajas)
   - make libxml2's xmlXPathOrderDocElems available through a new
     $doc->indexElements method
   - added version information of libxml2
   - Les Richardson's documentation patch applied.

1.56     Unknown
   - added line number interface (thanks to Peter Haworth)
   - patch to make perl 5.8.1 and XML::LibXML work together (thanks to François Pons)
   - added getElementById to XML::LibXML::Document (thanks to Robin Berjon)
   - fixes symbol problem with versions of libxml2 compiled without
     thread support (reported by Randal L. Schwartz)
   - tiny code clean ups
   - corrected tested versions after a local setup problem

1.55     Unknown
   - fixed possible problems with math.h
   - added C14N interface "toStringC14N()" (thanks to Chip Turner)
   - fixed default namespace bug with libxml2 2.5.8 (by Vaclav Barta)
   - fixed a NOOP in the XPath code.
   - fixed insertBefore() behaviour to be DOM conform
   - fixed a minor problem in Makefile.PL
   - improved more documentation
   - converted documentation to DocBook

1.54     Unknown
   - fixed some major bugs, works now with libxml2 2.5.x
   - fixed problem with empty document fragments
   - bad tag and attribute names cannot be created anymore
   - Catalog interface is aware about libxml2 configuration
   - XML::LibXML should work now on systems without having zlib installed
   - cleaned the error handling code, which
     - fixes bad reporting of the validating parser
     - fixes bad reporting in xpath functions
   - added getElementsBy*Name() functions for the Document Class
   - fixed memory management problem introduced in 1.53
     (that fixes a lot strange things)
   - interface for raw libxml2 DOM building functions
     (currently just addChild() and addNewChild(), others will follow)
   - fixed namespace handling if nodes are imported to a new DOM.
   - fixed segmentation fault during validation under libxml2 2.4.25
   - fixed bad CDATA handing in XML::LibXML::SAX::Builder
   - fixed namespace handing in XML::LibXML::SAX
   - fixed attribute handing in XML::LibXML::SAX
   - fixed memory leak       in XML::LibXML::SAX
   - fixed memory leak       in XML::LibXML::Document
   - fixed segfault while appending entity ref nodes to documents
   - fixed some backward compatibility issues
   - fixed cloning with namespaces misbehaviour
   - fixed parser problems with libxml2 2.5.3+
   - moved iterator classes into a separate package
     (after realizing some CPAN testers refuse to read their warnings
     from Makefile.PL)
   - improved parser testsuite
   - improved M
   - more documentation

    - *NOTE:*
    - Version 1.54 fixes potentional buffer overflows were possible with
    - earlier versions of the package.

1.53     Unknown
   - catalog interface
   - enabled SGML parsing
   - implemented libxml2 dom recovering
   - parsing into GDOME nodes is now possible
   - XML::LibXML::SAX is now faster
   - made XML::LibXML::SAX parser running without errors in most (all?) cases
     (DTD handling is still not implemented).

   DOM interface
   - Node Iterator class
   - NodeList Iterator class
   - introduced XML::GDOME import and export. (EXPERIMENTAL)
   - more security checks

   general blur
   - removed code shared with XML::GDOME to a separate XML::LibXML::Common
     module (check CPAN)
   - removed some redundand code
   - more documentation (and docu fixes) (thanks to Petr Pajas)

   major fixes:
   - possible buffer overflow with broken XML:
     This may effect all older versions of XML::LibXML, please upgrade!

   - a bug while replacing the document element.
   - very stupid encoding bug. all UTF8 strings will now be marked as
     UTF8 correctly
   - namespace functions to work with empty namespaces
   - toFH()
   - namespace setting in XPath functions:
     the namespaces of the document element will always be added now
   - threaded perl 5.8.0 issues
   - calling external entity handlers work again
   - XML::LibXML::SAX::Parser will not throw warnings on DTD nodes

1.52     Unknown
   - fixed some typos (thanks to Randy Kobes and Hildo Biersma)
   - fixed namespace node handling
   - fixed empty Text Node bug
   - corrected the parser default values.
   - added some documentation

1.51     Unknown
   - fixed parser bug with broken XML declarations
   - fixed memory management within documents that have subsets
   - fixed some threaded perl issues
     (special thanks to Andreas Koenig for the patch)
   - applied Win32 tests
     (special thanks to Randy Kobes for the patch)
   - fixed findnodes() and find() to return empty arrays in array context
     if the statement was legal but produced no result.
   - fixed namespace handling in xpath functions
   - fixed local namespace handling in DOM functions
   - pretty formating to all serializing functions
     *NOTE* the XML::LibXML::Node::toString interface changed
     check the XML::LibXML::Node man page
   - made xpath functions verbose to perl (one can wrap evals now)
   - improved native SAX interface
   - improved XML::LibXML::SAX::Builder
   - added getNamespaces to the node interface
   - better libxml2 version testing
   - more documentation

1.50     Unknown
   - fixed major problems with the validating parser
   - fixed default behaviour of the generic parser
   - fixed attribute setting of the string parser
   - fixed external entity loading for entity expansion
   - fixed nodeValue() to handle entities and entity refs correctly
   - SAX::Parser ignores now hidden XINCLUDE nodes.
   - fixed SAX::Builder to recognize namespace declarations correctly
   - compatibility fixes
   - importNode() bug fix
   - fixed library tests and output in Makefile.PL
   - added setOwnerDocument() again
   - XML::LibXML::Document::process_xincludes reintroduced
   - global callbacks reintroduced
     NOTE: the Interface changed here, read XML::LibXML manpage!
   - code cleanings
   - push parser interface
   - basic native libxml2 SAX interface
   - cloneNode clones now within documents
   - more documentation

1.49     Unknown
   - memory management has been completely rewritten.
        now the module should not cause that many memory leaks
        (special thanks to Merijn Broeren and Petr Pajas for providing
   - more libxml2 functions are used
   - DOM API is more Level 3 conform
   - ownerDocument fixed
   - parser validation bug fixed (reported by Erik Ray)
   - made parse_xml_chunk() report errors
   - fixed the PI interface
   - example
   - better namespace support
   - improved NamedNodeMap support
   - restructured the interfaces
   - HTML document nodes are recognized as HTML doc nodes instead of plain nodes
   - XML::LibXML::SAX::Parser able to handle HTML docs now
     (patch by D. Hageman [])
   - added serialization flags ($setTagCompression, $skipDtd and
   - more documentation

1.40     Unknown
   - new parsefunction: $parser->parse_xml_chunk($string);
   - appendChild( $doc_fragment ) bug fixed
   - removed obsolete files (parser.?)
   - fixed getElementsByTagName and getElementsByTagNameNS to fit the spec
   - new functions in XML::LibXML::Element:
   - minor fixes and extensions of the tests
   - more docu ;)
   - SAX added comment and PI support
   - SAX added start_prefix_mapping/end_prefix_mapping
   - Fixed find() bug with no results
   - Added use IO::Handle so FH reads work
   - A number of segfault fixes
   - constants added without XML_ prefix

1.31     Unknown
    - Removed C-layer parser implementation.
    - Added support for prefixes in find* functions
    - More memory leak fixes (in custom DOMs)
    - Allow global callbacks

1.30     Unknown
    - Full PI access
    - New parser implementation (safer)
    - Callbacks API changed to be on the object, not the class
    - SAX uses XML::SAX now (required)
    - Memory leak fixes
    - applied a bunch of patches provided by T.J. Mather

1.00     Unknown
    - Added SAX serialisation
    - Added a SAX builder module
    - Fixed findnodes in scalar context to return a NodeList object
    - Added findvalue($xpath)
    - Added find(), which returns different things depending on the XPath
    - Added Boolean, Number and Literal data types

0.99     Unknown
    - Added support for $doc->URI getter/setter

0.98     Unknown
    - New have_library implementation

0.97     Unknown
    - Addition of Dtd string parser
    - Added support for namespace nodes (e.g. $element->getNamespaces())
    - Some memory leak and segfault fixes
    - Added $doc->validate([$dtd]) which throws exceptions (augments
    - Added doc files and test files to CPAN distro

0.96     Unknown
    - Addition of HTML parser
    - getOwner method added
    - Element->getAttributes() added
    - Element->getAttributesNS(URI) added
    - Documentation updates
    - Memory leak fixes
    - Bug Fixes

0.94     Unknown
    - Some DOM Level 2 cleanups
    - getParentNode returns XML::LibXML::Document if we get the
      document node

0.93     Unknown
    - Addition of DOM Level 2 APIs
    - some more segfault fixes
    - Document is now a Node (which makes lots of things easier)

0.92     Unknown
    - Many segfault and other bug fixes
    - More DOM API methods added

0.91     Unknown
    - Removed from XML::LibXSLT distribution
    - Added DOM API (phish)

0.01    2001-03-03
	- original version; created by h2xs 1.19