Libxml is a XML processor written by Daniel Veillard for the GNOME project...
yea, that is the official statement, but he wrote it for fun, whatever he says
:-). It implements a whole lot of existing standards related to markup languages
and a few extras as well. Used together with its close friends libxslt, xmlsec
and gdome, it forms a full-featured general-purpose toolkit for XML.
Although sometimes referred to as GNOME-XML, libxml does not depend on GNOME but
rather the other way around.
This place is devoted to accomodating libxml to the oddities of the Windows
operating system and provides the last-known-good binaries for the native
The source code is not hosted on this site. Pay a visit
to the libxml official home for that.
Getting The Binaries
The binaries are available in the
However, read this document in its entirety before you grab any of these.
First check what you need to download. There are several packages available
and some of them depend on the others. The packages available on this site
libxml2, the XML parser and processor.
libxslt, the XSL and EXSL Transformations processor.
xmlsec, the XMLSec and XMLDSig processor.
xsldbg, the XSL Transformations debugger.
openssl, the general crypto toolkit.
iconv, the character encoding toolkit.
zlib, the compression toolkit.
How these packages depend on each other is shown in the following figure:
Figure: libxml package dependencies
To satisfy the dependencies, look up the desired package and get that and
everything else below, following the arrows. The blue arrows show the
mandatory dependencies, you'll never get through without these. The gray
arrows represent the dependencies which can be removed through recompiling.
For the binary packages to work, you must follow all arrows.
If you plan to develop your own programme, in C, which uses libxml, then you
should know what to do with the files in the binary package. If you don't
know this, then please, please do some research on how to use a third-party
library in a C programme. The topic belongs to the very basics and you will
not be able to do much without that knowledge.
If you wish to use libxml solely through the supplied utilities, such as
xmllint or xsltproc, then all you need to do is place the contents of the
bin directory from the binary package in a
directory on your disc which is mentioned in your PATH environment
You can use an existing directory which is allready in the path, such as
C:\WINDOWS. You can also create a new directory for libxml and
place the files there, but be sure to modify the PATH
environment variable and add that new directory to its list.
If you use other software which needs libxml, such as Apache Web Server in
certain configurations (PHP, for example), then please consult the
documentation of that software and see if it mentions something about how
it uses libxml and how it expects it to be installed. If you find nothing,
then the default installation, as described in the previous paragraph,
should be suficient.
All binaries which you can download from this site use the multithreaded
dynamic C-runtime (msvcrt.dll). Every program you compile using these
binaries must use the same runtime. Unless you like your app crashing,
set up your project to use msvcrt.dll. If you for some reason must use a
different runtime, then you must get the source and compile libxml and
If you link to libxml statically, make sure that @lib@_STATIC
macro is defined during the compilation of your sources, where
@lib@ stands for LIBXML, LIBXSLT,
LIBEXSLT and XMLSEC respectively.
As of verson 2.5.7, libxml binary is being distributed with thread-suport
enabled. This means that this version is not binary compatible to the
previous versions. If you currently use an older version of any package
from this site, you will have to upgrade all packages which have 'xml'
or 'xsl' in their name.
All binaries have been built using C/C++ compiler version 13, linker
version 7 and nmake version 6, all of them by Microsoft Corporation. To
avoid any confusion, these are not the tools you get when you install
Microsoft Visual Studio. These are a part of the Windows XP DDK. If you
have other development tools, such as Borland's, check if you can use
these binaries as they are before building your own. You should be able to.
If you use Windows 95, Windows 98 or Windows ME operating systems, then you
are on your own. Maybe it will work out of the box, maybe it won't. I
neither use nor understand these. The binaries are supported on an
operating system based on the NT-kernel, such as Windows NT, Windows 2000
and Windows XP, exclusively.
There is a lot of documentation about this software, as well as there is
argue about its completeness and quality. You should start with the official
documentation and here is where you can go:
Please make sure you have read and understood at least some of those
documents before you answer the urge to post something to the mailing list.
Normally, there is no guaranteed support for this software. However,
people who work on it have shown an open ear for all kinds of problems so
far. All questions regarding libxml and friends should be sent to the
respective mailing list. You have the following choice:
You are encouraged to subscribe to the lists before you post. If you
don't, your mail might as well end up discarded automatically together
with the tons of spam.
If you have an inquiry you would rather not discuss in public, you can
send it to me.
If you do so and don't explicitly express your wish for privacy, I shall
forward your message and my answer to the mailing list.
If libxml is critical to your business needs and you need a guaranteed
support or local, system-dependent modifications to the code, then you
will have to buy consulting services. Feel free to contact me regarding
this topic, I can help :-)
Here is a small collection of links to other material regarding this
Please note that you leave my realm by clicking on these and I possibly
haven't even seen these sites, let alone understood what they are about.
If you have any questions regarding these sites and want it answered,
you would do good to ask whoever happens to maintain them.