The XML C parser and toolkit of Gnome
Note: this is the flat content of the web
site
libxml, a.k.a. gnome-xml
"Programming
with libxml2 is like the thrilling embrace of an exotic stranger." Mark
Pilgrim
Libxml2 is the XML C parser and toolkit developed for the Gnome project
(but usable outside of the Gnome platform), it is free software available
under the MIT
License. XML itself is a metalanguage to design markup languages, i.e.
text language where semantic and structure are added to the content using
extra "markup" information enclosed between angle brackets. HTML is the most
well-known markup language. Though the library is written in C a variety of language bindings make it available in
other environments.
Libxml2 is known to be very portable, the library should build and work
without serious troubles on a variety of systems (Linux, Unix, Windows,
CygWin, MacOS, MacOS X, RISC Os, OS/2, VMS, QNX, MVS, VxWorks, ...)
Libxml2 implements a number of existing standards related to markup
languages:
- the XML standard: www.w3.org/TR/REC-xml
- Namespaces in XML: www.w3.org/TR/REC-xml-names/
- XML Base: www.w3.org/TR/xmlbase/
- RFC 2396 :
Uniform Resource Identifiers www.ietf.org/rfc/rfc2396.txt
- XML Path Language (XPath) 1.0: www.w3.org/TR/xpath
- HTML4 parser: www.w3.org/TR/html401/
- XML Pointer Language (XPointer) Version 1.0: www.w3.org/TR/xptr
- XML Inclusions (XInclude) Version 1.0: www.w3.org/TR/xinclude/
- ISO-8859-x encodings, as well as rfc2044 [UTF-8]
and rfc2781
[UTF-16] Unicode encodings, and more if using iconv support
- part of SGML Open Technical Resolution TR9401:1997
- XML Catalogs Working Draft 06 August 2001: www.oasis-open.org/committees/entity/spec-2001-08-06.html
- Canonical XML Version 1.0: www.w3.org/TR/xml-c14n
and the Exclusive XML Canonicalization CR draft www.w3.org/TR/xml-exc-c14n
- Relax NG, ISO/IEC 19757-2:2003, www.oasis-open.org/committees/relax-ng/spec-20011203.html
- W3C XML Schemas Part 2: Datatypes REC 02 May
2001
- W3C xml:id Working Draft 7
April 2004
In most cases libxml2 tries to implement the specifications in a
relatively strictly compliant way. As of release 2.4.16, libxml2 passed all
1800+ tests from the OASIS XML Tests
Suite.
To some extent libxml2 provides support for the following additional
specifications but doesn't claim to implement them completely:
- Document Object Model (DOM) www.w3.org/TR/DOM-Level-2-Core/
the document model, but it doesn't implement the API itself, gdome2 does
this on top of libxml2
- RFC 959 :
libxml2 implements a basic FTP client code
- RFC 1945 :
HTTP/1.0, again a basic HTTP client code
- SAX: a SAX2 like interface and a minimal SAX1 implementation compatible
with early expat versions
A partial implementation of XML Schemas Part
1: Structure is being worked on but it would be far too early to make any
conformance statement about it at the moment.
Separate documents:
- the libxslt page providing an
implementation of XSLT 1.0 and common extensions like EXSLT for
libxml2
- the gdome2 page
: a standard DOM2 implementation for libxml2
- the XMLSec page: an
implementation of W3C XML
Digital Signature for libxml2
- also check the related links section for more related and active
projects.
Hosting sponsored by Open Source CMS services from AOE media.
Logo designed by Marc Liyanage.
Introduction
This document describes libxml, the XML C parser and toolkit developed for the
Gnome project. XML is a standard for building tag-based
structured documents/data.
Here are some key points about libxml:
- Libxml2 exports Push (progressive) and Pull (blocking) type parser
interfaces for both XML and HTML.
- Libxml2 can do DTD validation at parse time, using a parsed document
instance, or with an arbitrary DTD.
- Libxml2 includes complete XPath, XPointer and XInclude implementations.
- It is written in plain C, making as few assumptions as possible, and
sticking closely to ANSI C/POSIX for easy embedding. Works on
Linux/Unix/Windows, ported to a number of other platforms.
- Basic support for HTTP and FTP client allowing applications to fetch
remote resources.
- The design is modular, most of the extensions can be compiled out.
- The internal document representation is as close as possible to the DOM interfaces.
- Libxml2 also has a SAX like interface;
the interface is designed to be compatible with Expat.
- This library is released under the MIT
License. See the Copyright file in the distribution for the precise
wording.
Warning: unless you are forced to because your application links with a
Gnome-1.X library requiring it, Do Not Use libxml1, use
libxml2
FAQ
Table of Contents:
- License(s)
- Installation
- Compilation
- Developer corner
License(s)
- Licensing Terms for libxml
libxml2 is released under the MIT
License; see the file Copyright in the distribution for the precise
wording
- Can I embed libxml2 in a proprietary application ?
Yes. The MIT License allows you to keep proprietary the changes you
made to libxml, but it would be graceful to send-back bug fixes and
improvements as patches for possible incorporation in the main
development tree.
Installation
- Do Not Use
libxml1, use libxml2
- Where can I get libxml ?
The original distribution comes from xmlsoft.org or gnome.org
Most Linux and BSD distributions include libxml, this is probably the
safer way for end-users to use libxml.
David Doolin provides precompiled Windows versions at www.ce.berkeley.edu/~doolin/code/libxmlwin32/
- I see libxml and libxml2 releases, which one should I install ?
- If you are not constrained by backward compatibility issues with
existing applications, install libxml2 only
- If you are not doing development, you can safely install both.
Usually the packages libxml and libxml2 are
compatible (this is not the case for development packages).
- If you are a developer and your system provides separate packaging
for shared libraries and the development components, it is possible
to install libxml and libxml2, and also libxml-devel
and libxml2-devel
too for libxml2 >= 2.3.0
- If you are developing a new application, please develop against
libxml2(-devel)
- I can't install the libxml package, it conflicts with libxml0
You probably have an old libxml0 package used to provide the shared
library for libxml.so.0, you can probably safely remove it. The libxml
packages provided on xmlsoft.org provide
libxml.so.0
- I can't install the libxml(2) RPM package due to failed
dependencies
The most generic solution is to re-fetch the latest src.rpm , and
rebuild it locally with
rpm --rebuild libxml(2)-xxx.src.rpm
.
If everything goes well it will generate two binary rpm packages (one
providing the shared libs and xmllint, and the other one, the -devel
package, providing includes, static libraries and scripts needed to build
applications with libxml(2)) that you can install locally.
Compilation
- What is the process to compile libxml2 ?
As most UNIX libraries libxml2 follows the "standard":
gunzip -c xxx.tar.gz | tar xvf -
cd libxml-xxxx
./configure --help
to see the options, then the compilation/installation proper
./configure [possible options]
make
make install
At that point you may have to rerun ldconfig or a similar utility to
update your list of installed shared libs.
- What other libraries are needed to compile/install libxml2 ?
Libxml2 does not require any other library, the normal C ANSI API
should be sufficient (please report any violation to this rule you may
find).
However if found at configuration time libxml2 will detect and use the
following libs:
- libz : a
highly portable and available widely compression library.
- iconv: a powerful character encoding conversion library. It is
included by default in recent glibc libraries, so it doesn't need to
be installed specifically on Linux. It now seems a part
of the official UNIX specification. Here is one implementation of the
library which source can be found here.
- Make check fails on some platforms
Sometimes the regression tests' results don't completely match the
value produced by the parser, and the makefile uses diff to print the
delta. On some platforms the diff return breaks the compilation process;
if the diff is small this is probably not a serious problem.
Sometimes (especially on Solaris) make checks fail due to limitations
in make. Try using GNU-make instead.
- I use the SVN version and there is no configure script
The configure script (and other Makefiles) are generated. Use the
autogen.sh script to regenerate the configure script and Makefiles,
like:
./autogen.sh --prefix=/usr --disable-shared
- I have troubles when running make tests with gcc-3.0
It seems the initial release of gcc-3.0 has a problem with the
optimizer which miscompiles the URI module. Please use another
compiler.
Developer corner
- Troubles compiling or linking programs using libxml2
Usually the problem comes from the fact that the compiler doesn't get
the right compilation or linking flags. There is a small shell script
xml2-config
which is installed as part of libxml2 usual
install process which provides those flags. Use
xml2-config --cflags
to get the compilation flags and
xml2-config --libs
to get the linker flags. Usually this is done directly from the
Makefile as:
CFLAGS=`xml2-config --cflags`
LIBS=`xml2-config --libs`
- I want to install my own copy of libxml2 in my home directory and
link my programs against it, but it doesn't work
There are many different ways to accomplish this. Here is one way to
do this under Linux. Suppose your home directory is /home/user.
Then:
- Create a subdirectory, let's call it
myxml
- unpack the libxml2 distribution into that subdirectory
- chdir into the unpacked distribution
(
/home/user/myxml/libxml2
)
- configure the library using the "
--prefix
" switch,
specifying an installation subdirectory in
/home/user/myxml
, e.g.
./configure --prefix /home/user/myxml/xmlinst
{other
configuration options}
- now run
make
followed by make install
- At this point, the installation subdirectory contains the complete
"private" include files, library files and binary program files (e.g.
xmllint), located in
/home/user/myxml/xmlinst/lib,
/home/user/myxml/xmlinst/include
and
/home/user/myxml/xmlinst/bin
respectively.
- In order to use this "private" library, you should first add it to
the beginning of your default PATH (so that your own private program
files such as xmllint will be used instead of the normal system
ones). To do this, the Bash command would be
export PATH=/home/user/myxml/xmlinst/bin:$PATH
- Now suppose you have a program
test1.c
that you would
like to compile with your "private" library. Simply compile it using
the command
gcc `xml2-config --cflags --libs` -o test test.c
Note that, because your PATH has been set with
/home/user/myxml/xmlinst/bin
at the beginning, the xml2-config
program which you just installed will be used instead of the system
default one, and this will automatically get the correct
libraries linked with your program.
- xmlDocDump() generates output on one line.
Libxml2 will not invent spaces in the content of a
document since all spaces in the content of a document are
significant. If you build a tree from the API and want
indentation:
- the correct way is to generate those yourself too.
- the dangerous way is to ask libxml2 to add those blanks to your
content modifying the content of your document in the
process. The result may not be what you expect. There is
NO way to guarantee that such a modification won't
affect other parts of the content of your document. See xmlKeepBlanksDefault
() and xmlSaveFormatFile
()
- Extra nodes in the document:
For an XML file as below:
<?xml version="1.0"?>
<PLAN xmlns="www.argus.ca/autotest/1.0/">
<NODE CommFlag="0"/>
<NODE CommFlag="1"/>
</PLAN>
after parsing it with the function
pxmlDoc=xmlParseFile(...);
I want to the get the content of the first node (node with the
CommFlag="0")
so I did it as following;
xmlNodePtr pnode;
pnode=pxmlDoc->children->children;
but it does not work. If I change it to
pnode=pxmlDoc->children->children->next;
then it works. Can someone explain it to me.
In XML all characters in the content of the document are significant
including blanks and formatting line breaks.
The extra nodes you are wondering about are just that, text nodes with
the formatting spaces which are part of the document but that people tend
to forget. There is a function xmlKeepBlanksDefault
() to remove those at parse time, but that's an heuristic, and its
use should be limited to cases where you are certain there is no
mixed-content in the document.
- I get compilation errors of existing code like when accessing
root or child fields of nodes.
You are compiling code developed for libxml version 1 and using a
libxml2 development environment. Either switch back to libxml v1 devel or
even better fix the code to compile with libxml2 (or both) by following the instructions.
- I get compilation errors about non existing
xmlRootNode or xmlChildrenNode
fields.
The source code you are using has been upgraded to be able to compile with both libxml
and libxml2, but you need to install a more recent version:
libxml(-devel) >= 1.8.8 or libxml2(-devel) >= 2.1.0
- Random crashes in threaded applications
Read and follow all advices on the thread
safety page, and make 100% sure you never call xmlCleanupParser()
while the library or an XML document might still be in use by another
thread.
- The example provided in the web page does not compile.
It's hard to maintain the documentation in sync with the code
<grin/> ...
Check the previous points 1/ and 2/ raised before, and please send
patches.
- Where can I get more examples and information than provided on the
web page?
Ideally a libxml2 book would be nice. I have no such plan ... But you
can:
- check more deeply the existing
generated doc
- have a look at the set of
examples.
- look for examples of use for libxml2 function using the Gnome code
or by asking on Google.
- Browse
the libxml2 source , I try to write code as clean and documented
as possible, so looking at it may be helpful. In particular the code
of xmllint.c and of the various testXXX.c test programs should
provide good examples of how to do things with the library.
- What about C++ ?
libxml2 is written in pure C in order to allow easy reuse on a number
of platforms, including embedded systems. I don't intend to convert to
C++.
There is however a C++ wrapper which may fulfill your needs:
- How to validate a document a posteriori ?
It is possible to validate documents which had not been validated at
initial parsing time or documents which have been built from scratch
using the API. Use the xmlValidateDtd()
function. It is also possible to simply add a DTD to an existing
document:
xmlDocPtr doc; /* your existing document */
xmlDtdPtr dtd = xmlParseDTD(NULL, filename_of_dtd); /* parse the DTD */
dtd->name = xmlStrDup((xmlChar*)"root_name"); /* use the given root */
doc->intSubset = dtd;
if (doc->children == NULL) xmlAddChild((xmlNodePtr)doc, (xmlNodePtr)dtd);
else xmlAddPrevSibling(doc->children, (xmlNodePtr)dtd);
- So what is this funky "xmlChar" used all the time?
It is a null terminated sequence of utf-8 characters. And only utf-8!
You need to convert strings encoded in different ways to utf-8 before
passing them to the API. This can be accomplished with the iconv library
for instance.
- etc ...
Developer Menu
There are several on-line resources related to using libxml:
- Use the search engine to look up
information.
- Check the FAQ.
- Check the extensive
documentation automatically extracted from code comments.
- Look at the documentation about libxml
internationalization support.
- This page provides a global overview and some
examples on how to use libxml.
- Code examples
- John Fleck's libxml2 tutorial: html
or pdf.
- If you need to parse large files, check the xmlReader API tutorial
- James Henstridge wrote some nice
documentation explaining how to use the libxml SAX interface.
- George Lebl wrote an article
for IBM developerWorks about using libxml.
- Check the TODO
file.
- Read the 1.x to 2.x upgrade path
description. If you are starting a new project using libxml you should
really use the 2.x version.
- And don't forget to look at the mailing-list archive.
Reporting bugs and getting help
Well, bugs or missing features are always possible, and I will make a
point of fixing them in a timely fashion. The best way to report a bug is to
use the Gnome
bug tracking database (make sure to use the "libxml2" module name). I
look at reports there regularly and it's good to have a reminder when a bug
is still open. Be sure to specify that the bug is for the package libxml2.
For small problems you can try to get help on IRC, the #xml channel on
irc.gnome.org (port 6667) usually have a few person subscribed which may help
(but there is no guarantee and if a real issue is raised it should go on the
mailing-list for archival).
There is also a mailing-list xml@gnome.org for libxml, with an on-line archive (old). To subscribe to this list,
please visit the associated Web page and
follow the instructions. Do not send code, I won't debug it
(but patches are really appreciated!).
Please note that with the current amount of virus and SPAM, sending mail
to the list without being subscribed won't work. There is *far too many
bounces* (in the order of a thousand a day !) I cannot approve them manually
anymore. If your mail to the list bounced waiting for administrator approval,
it is LOST ! Repost it and fix the problem triggering the error. Also please
note that emails with
a legal warning asking to not copy or redistribute freely the information
they contain are NOT acceptable for the mailing-list,
such mail will as much as possible be discarded automatically, and are less
likely to be answered if they made it to the list, DO NOT
post to the list from an email address where such legal requirements are
automatically added, get private paying support if you can't share
information.
Check the following before
posting:
- Read the FAQ and use the
search engine to get information related to your problem.
- Make sure you are using a recent
version, and that the problem still shows up in a recent version.
- Check the list
archives to see if the problem was reported already. In this case
there is probably a fix available, similarly check the registered
open bugs.
- Make sure you can reproduce the bug with xmllint or one of the test
programs found in source in the distribution.
- Please send the command showing the error as well as the input (as an
attachment)
Then send the bug with associated information to reproduce it to the xml@gnome.org list; if it's really libxml
related I will approve it. Please do not send mail to me directly, it makes
things really hard to track and in some cases I am not the best person to
answer a given question, ask on the list.
To be really clear about support:
- Support or help requests MUST be sent to
the list or on bugzilla in case of problems, so that the Question
and Answers can be shared publicly. Failing to do so carries the implicit
message "I want free support but I don't want to share the benefits with
others" and is not welcome. I will automatically Carbon-Copy the
xml@gnome.org mailing list for any technical reply made about libxml2 or
libxslt.
- There is no guarantee of support. If
your question remains unanswered after a week, repost it, making sure you
gave all the detail needed and the information requested.
- Failing to provide information as requested or double checking first
for prior feedback also carries the implicit message "the time of the
library maintainers is less valuable than my time" and might not be
welcome.
Of course, bugs reported with a suggested patch for fixing them will
probably be processed faster than those without.
If you're looking for help, a quick look at the list archive may actually
provide the answer. I usually send source samples when answering libxml2
usage questions. The auto-generated documentation is
not as polished as I would like (i need to learn more about DocBook), but
it's a good starting point.
How to help
You can help the project in various ways, the best thing to do first is to
subscribe to the mailing-list as explained before, check the archives and the Gnome bug
database:
- Provide patches when you find problems.
- Provide the diffs when you port libxml2 to a new platform. They may not
be integrated in all cases but help pinpointing portability problems
and
- Provide documentation fixes (either as patches to the code comments or
as HTML diffs).
- Provide new documentations pieces (translations, examples, etc
...).
- Check the TODO file and try to close one of the items.
- Take one of the points raised in the archive or the bug database and
provide a fix. Get in touch with me
before to avoid synchronization problems and check that the suggested
fix will fit in nicely :-)
Downloads
The latest versions of libxml2 can be found on the xmlsoft.org server ( FTP and rsync are available), there are also
mirrors (France and
Antonin Sprinzl also provide a
mirror in Austria). (NOTE that you need both the libxml(2) and libxml(2)-devel
packages installed to compile applications using libxml if using RPMs.)
You can find all the history of libxml(2) and libxslt releases in the old directory. The precompiled
Windows binaries made by Igor Zlatovic are available in the win32 directory.
Binary ports:
- RPMs for x86_64 are available directly on xmlsoft.org, the source RPM will compile on
any architecture supported.
- Igor Zlatkovic is now the
maintainer of the Windows port, he provides
binaries.
- OpenCSW provides Solaris
binaries.
- Steve Ball provides Mac Os X
binaries.
- The HP-UX porting center provides HP-UX binaries
- Bull provides precompiled RPMs for AIX as
patr of their GNOME packages
If you know other supported binary ports, please contact me.
Snapshot:
- Code from the GNOME GIT base libxml2 module, updated hourly libxml2-git-snapshot.tar.gz.
- Docs, content of the web site, the list archive included libxml-docs.tar.gz.
Contributions:
I do accept external contributions, especially if compiling on another
platform, get in touch with the list to upload the package, wrappers for
various languages have been provided, and can be found in the bindings section
Libxml2 is also available from GIT:
Releases
The change log describes the recents commits
to the GIT code base.
Here is the list of public releases:
2.9.0: Sep 11 2012
- Features:
A few new API entry points,
More resilient push parser mode,
A lot of portability improvement,
Faster XPath evaluation
- Documentation:
xml2-config.1 markup error (Christian Weisgerber),
libxml(3) manpage typo fix (John Bradshaw),
More cleanups to the documentation part of libxml2 (Daniel Richard G)
- Portability:
Bug 676544 - fails to build with --without-sax1 (Akira TAGOH),
fix builds not having stdint.h (Rob Richards),
GetProcAddressA is available only on WinCE (Daniel Veillard),
More updates and cleanups on autotools and Makefiles (Daniel Richard G),
More changes for Win32 compilation (Eric Zurcher),
Basic changes for Win32 builds of release 2.9.0: compile buf.c (Eric Zurcher),
Bundles all generated files for python into the distribution (Daniel Richard G),
Fix compiler warnings of wincecompat.c (Patrick Gansterer),
Fix non __GNUC__ build (Patrick Gansterer),
Fix windows unicode build (Patrick Gansterer),
clean redefinition of {v}snprintf in C-source (Roumen Petrov),
use xmlBuf... if DEBUG_INPUT is defined (Roumen Petrov),
fix runtests to use pthreads support for various Unix platforms (Daniel Richard G),
Various "make distcheck" and portability fixups 2nd part (Daniel Richard G),
Various "make distcheck" and portability fixups (Daniel Richard G),
Fix compilation on older Visual Studio (Daniel Veillard)
- Bug Fixes:
Change the XPath code to percolate allocation errors (Daniel Veillard),
Fix reuse of xmlInitParser (Daniel Veillard),
Fix potential crash on entities errors (Daniel Veillard),
initialize var (Rob Richards),
Fix the XPath arity check to also check the XPath stack limits (Daniel Veillard),
Fix problem with specific and generic error handlers (Pietro Cerutti),
Avoid a potential infinite recursion (Daniel Veillard),
Fix an XSD error when generating internal automata (Daniel Veillard),
Patch for xinclude of text using multibyte characters (Vitaly Ostanin),
Fix a segfault on XSD validation on pattern error (Daniel Veillard),
Fix missing xmlsave.h module which was ignored in recent builds (Daniel Veillard),
Add a missing element check (Daniel Veillard),
Adding various checks on node type though the API (Daniel Veillard),
Namespace nodes can't be unlinked with xmlUnlinkNode (Daniel Veillard),
Fix make dist to include new private header files (Daniel Veillard),
More fixups on the push parser behaviour (Daniel Veillard),
Strengthen behaviour of the push parser in problematic situations (Daniel Veillard),
Enforce XML_PARSER_EOF state handling through the parser (Daniel Veillard),
Fixup limits parser (Daniel Veillard),
Do not fetch external parsed entities (Daniel Veillard),
Fix an error in previous commit (Aron Xu),
Fix entities local buffers size problems (Daniel Veillard),
Fix parser local buffers size problems (Daniel Veillard),
Fix a failure to report xmlreader parsing failures (Daniel Veillard)
- Improvements:
Keep libxml2.syms when running "make distclean" (Daniel Veillard),
Allow to set the quoting character of an xmlWriter (Csaba Raduly),
Keep non-significant blanks node in HTML parser (Daniel Veillard),
Add a forbidden variable error number and message to XPath (Daniel Veillard),
Support long path names on WNT (Michael Stahl),
Improve HTML escaping of attribute on output (Daniel Veillard),
Handle ICU_LIBS as LIBADD, not LDFLAGS to prevent linking errors (Arfrever Frehtes Taifersar Arahesis),
Switching XPath node sorting to Timsort (Vojtech Fried),
Optimizing '//' in XPath expressions (Nick Wellnhofer),
Expose xmlBufShrink in the public tree API (Daniel Veillard),
Visible HTML elements close the head tag (Conrad Irwin),
Fix file and line report for XSD SAX and reader streaming validation (Daniel Veillard),
Fix const qualifyer to definition of xmlBufferDetach (Daniel Veillard),
minimize use of HAVE_CONFIG_H (Roumen Petrov),
fixup regression in Various "make distcheck" and portability fixups (Roumen Petrov),
Add support for big line numbers in error reporting (Daniel Veillard),
Avoid using xmlBuffer for serialization (Daniel Veillard),
Improve compatibility between xmlBuf and xmlBuffer (Daniel Veillard),
Provide new accessors for xmlOutputBuffer (Daniel Veillard),
Improvements for old buffer compatibility (Daniel Veillard),
Expand the limit test program (Daniel Veillard),
Improve error reporting on parser errors (Daniel Veillard),
Implement some default limits in the XPath module (Daniel Veillard),
Introduce some default parser limits (Daniel Veillard),
Cleanups and new limit APIs for dictionaries (Daniel Veillard),
Fixup for buf.c (Daniel Veillard),
Cleanup URI module memory allocation code (Daniel Veillard),
Extend testlimits (Daniel Veillard),
More avoid quadratic behaviour (Daniel Veillard),
Impose a reasonable limit on PI size (Daniel Veillard),
first version of testlimits new test (Daniel Veillard),
Avoid quadratic behaviour in some push parsing cases (Daniel Veillard),
Impose a reasonable limit on comment size (Daniel Veillard),
Impose a reasonable limit on attribute size (Daniel Veillard),
Harden the buffer code and make it more compatible (Daniel Veillard),
More cleanups for input/buffers code (Daniel Veillard),
Cleanup function xmlBufResetInput(),
to set input from Buffer (Daniel Veillard)
Swicth the test program for characters to new input buffers (Daniel Veillard),
Convert the HTML tree module to the new buffers (Daniel Veillard),
Convert of the HTML parser to new input buffers (Daniel Veillard),
Convert the writer to new output buffer and save APIs (Daniel Veillard),
Convert XMLReader to the new input buffers (Daniel Veillard),
New saving functions using xmlBuf and conversion (Daniel Veillard),
Provide new xmlBuf based saving functions (Daniel Veillard),
Convert XInclude to the new input buffers (Daniel Veillard),
Convert catalog code to the new input buffers (Daniel Veillard),
Convert C14N to the new Input buffer (Daniel Veillard),
Convert xmlIO.c to the new input and output buffers (Daniel Veillard),
Convert XML parser to the new input buffers (Daniel Veillard),
Incompatible change to the Input and Output buffers (Daniel Veillard),
Adding new encoding function to deal with the new structures (Daniel Veillard),
Convert XPath to xmlBuf (Daniel Veillard),
Adding a new buf module for buffers (Daniel Veillard),
Memory error within SAX2 reuse common framework (Daniel Veillard),
Fix xmllint --xpath node initialization (Daniel Veillard)
- Cleanups:
Various cleanups to avoid compiler warnings (Daniel Veillard),
Big space and tab cleanup (Daniel Veillard),
Followup to LibXML2 docs/examples cleanup patch (Daniel Veillard),
Second round of cleanups for LibXML2 docs/examples (Daniel Richard),
Remove all .cvsignore as they are not used anymore (Daniel Veillard),
Fix a Timsort function helper comment (Daniel Veillard),
Small cleanup for valgrind target (Daniel Veillard),
Patch for portability of latin characters in C files (Daniel Veillard),
Cleanup some of the parser code (Daniel Veillard),
Fix a variable name in comment (Daniel Veillard),
Regenerated testapi.c (Daniel Veillard),
Regenerating docs and API files (Daniel Veillard),
Small cleanup of unused variables in test (Daniel Veillard),
Expand .gitignore with more files (Daniel Veillard)
2.8.0: May 23 2012
- Features:
add lzma compression support (Anders F Bjorklund)
- Documentation:
xmlcatalog: Add uri and delegateURI to possible add types in man page. (Ville Skyttä),
Update README.tests (Daniel Veillard),
URI handling code is not OOM resilient (Daniel Veillard),
Fix an error in comment (Daniel Veillard),
Fixed bug #617016 (Daniel Mustieles),
Fixed two typos in the README document (Daniel Neel),
add generated html files (Anders F Bjorklund),
Clarify the need to use xmlFreeNode after xmlUnlinkNode (Daniel Veillard),
Improve documentation a bit (Daniel Veillard),
Updated URL for lxml python bindings (Daniel Veillard)
- Portability:
Restore code for Windows compilation (Daniel Veillard),
Remove git error message during configure (Christian Dywan),
xmllint: Build fix for endTimer if !defined(HAVE_GETTIMEOFDAY) (Patrick R. Gansterer),
remove a bashism in confgure.in (John Hein),
undef ERROR if already defined (Patrick R. Gansterer),
Fix library problems with mingw-w64 (Michael Cronenworth),
fix windows build. ifdef addition from bug 666491 makes no sense (Rob Richards),
prefer native threads on win32 (Sam Thursfield),
Allow to compile with Visual Studio 2010 (Thomas Lemm),
Fix mingw's snprintf configure check (Andoni Morales),
fixed a 64bit big endian issue (Marcus Meissner),
Fix portability failure if netdb.h lacks NO_ADDRESS (Daniel Veillard),
Fix windows build from lzma addition (Rob Richards),
autogen: Only check for libtoolize (Colin Walters),
Fix the Windows build files (Patrick von Reth),
634846 Remove a linking option breaking Windows VC10 (Daniel Veillard),
599241 fix an initialization problem on Win64 (Andrew W. Nosenko),
fix win build (Rob Richards)
- Bug fixes:
Part for rand_r checking missing (Daniel Veillard),
Cleanup on randomization (Daniel Veillard),
Fix undefined reference in python module (Pacho Ramos),
Fix a race in xmlNewInputStream (Daniel Veillard),
Fix weird streaming RelaxNG errors (Noam),
Fix various bugs in new code raised by the API checking (Daniel Veillard),
Fix various problems with "make dist" (Daniel Veillard),
Fix a memory leak in the xzlib code (Daniel Veillard),
HTML parser error with <noscript> in the <head> (Denis Pauk),
XSD: optional element in complex type extension (Remi Gacogne),
Fix html serialization error and htmlSetMetaEncoding() (Daniel Veillard),
Fix a wrong return value in previous patch (Daniel Veillard),
Fix an uninitialized variable use (Daniel Veillard),
Fix a compilation problem with --minimum (Brandon Slack),
Remove redundant and ungarded include of resolv.h (Daniel Veillard),
xinclude with parse="text" does not use the entity loader (Shaun McCance),
Allow to parse 1 byte HTML files (Denis Pauk),
Patch that fixes the skipping of the HTML_PARSE_NOIMPLIED flag (Martin Schröder),
Avoid memory leak if xmlParserInputBufferCreateIO fails (Lin Yi-Li),
Prevent an infinite loop when dumping a node with encoding problems (Timothy Elliott),
xmlParseNodeInContext problems with an empty document (Tim Elliott),
HTML element position is not detected propperly (Pavel Andrejs),
Fix an off by one pointer access (Jüri Aedla),
Try to fix a problem with entities in SAX mode (Daniel Veillard),
Fix a crash with xmllint --path on empty results (Daniel Veillard),
Fixed bug #667946 (Daniel Mustieles),
Fix a logic error in Schemas Component Constraints (Ryan Sleevi),
Fix a wrong enum type use in Schemas Types (Nico Weber),
Fix SAX2 builder in case of undefined attributes namespace (Daniel Veillard),
Fix SAX2 builder in case of undefined element namespaces (Daniel Veillard),
fix reference to STDOUT_FILENO on MSVC (Tay Ray Chuan),
fix a pair of possible out of array char references (Daniel Veillard),
Fix an allocation error when copying entities (Daniel Veillard),
Make sure the parser returns when getting a Stop order (Chris Evans),
Fix some potential problems on reallocation failures(parser.c) (Xia Xinfeng),
Fix a schema type duration comparison overflow (Daniel Veillard),
Fix an unimplemented part in RNG value validation (Daniel Veillard),
Fix missing error status in XPath evaluation (Daniel Veillard),
Hardening of XPath evaluation (Daniel Veillard),
Fix an off by one error in encoding (Daniel Veillard),
Fix RELAX NG include bug #655288 (Shaun McCance),
Fix XSD validation bug #630130 (Toyoda Eizi),
Fix some potential problems on reallocation failures (Chris Evans),
__xmlRaiseError: fix use of the structured callback channel (Dmitry V. Levin),
__xmlRaiseError: fix the structured callback channel's data initialization (Dmitry V. Levin),
Fix memory corruption when xmlParseBalancedChunkMemoryInternal is called from xmlParseBalancedChunk (Rob Richards),
Small fix for previous commit (Daniel Veillard),
Fix a potential freeing error in XPath (Daniel Veillard),
Fix a potential memory access error (Daniel Veillard),
Reactivate the shared library versionning script (Daniel Veillard)
- Improvements:
use mingw C99 compatible functions {v}snprintf instead those from MSVC runtime (Roumen Petrov),
New symbols added for the next release (Daniel Veillard),
xmlTextReader bails too quickly on error (Andy Lutomirski),
Use a hybrid allocation scheme in xmlNodeSetContent (Conrad Irwin),
Use buffers when constructing string node lists. (Conrad Irwin),
Add HTML parser support for HTML5 meta charset encoding declaration (Denis Pauk),
wrong message for double hyphen in comment XML error (Bryan Henderson),
Fix "make tst" to grab lzma lib too (Daniel Veillard),
Add "whereis" command to xmllint shell (Ryan),
Improve xmllint shell (Ryan),
add function xmlTextReaderRelaxNGValidateCtxt() (Noam Postavsky),
Add --system support to autogen.sh (Daniel Veillard),
Add hash randomization to hash and dict structures (Daniel Veillard),
included xzlib in dist (Anders F Bjorklund),
move xz/lzma helpers to separate included files (Anders F Bjorklund),
add generated devhelp files (Anders F Bjorklund),
add XML_WITH_LZMA to api (Anders F Bjorklund),
autogen.sh: Honor NOCONFIGURE environment variable (Colin Walters),
Improve the error report on undefined REFs (Daniel Veillard),
Ad
gipoco.com
is neither affiliated with the authors of this page or responsible
for its contents. This is a safe-cache copy of the original web site.
gipoco.com
is neither affiliated with the authors of this page nor responsible
for its contents. This is a safe-cache copy of the original web site.