Libxml

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 Windows platform. 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 download area. 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 are:

  • 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.

Installing

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 variable. 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.

Notes

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 friends yourself.

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.

Documentation

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.

Support

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 :-)

Related Bits

Here is a small collection of links to other material regarding this software.

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.

Contents:
Getting The Binaries
Installing
Notes
Documentation
Support
Related Bits
Binaries:
Win32 binaries (HTTP)
Win32 binaries (FTP)
Official Sites:
libxml2
libxslt
xmlsec
xsldbg
OpenSSL
iconv
zlib
Further reading:
W3C Resources
OASIS Consortium
XML@Sun
MSXML
Apache XML Project
© 2000-2007 Igor Zlatković. All rights reserved. Last modification: Mon, 10 Sep 2007 21:12:32 GMT+02:00
Comments? Questions? Please tell us about it.