libxml2

GNOMEプロジェクト下で開発が進められている、CベースのXMLライブラリ

Daniel Veillard が中心となって進んでいて、さまざまな標準仕様が実装できている。色々なプラットホームもサポートしている。 Webを見る限りでは日本ではあまり使用が盛んではないようであるが、試用だけでもする価値は十二分にある。 なぜならlibxml2はそれ自身がさまざまな標準仕様の実装を含みつつも、 それを中心としてまた更にさまざまな標準仕様の実装が存在するからである。 たとえばXSLTを処理するlibxslt、暗号化や署名を行うxmlsecなどである。 細かいところに目を向ければzlibの透過的サポートなどもあったりする。

現在は一ヶ月に一度のペースで更新が進んでおり、また安定しているので非常に助かる。

なんと2.5.2: Feb 5 2003ではRelax NGの実装もついに、ついに始まった!


依存関係

オリジナルのファイルは850KB程度もあるのでこれのせいでlibxml2の使用をためらってしまうかもしれない。 libxml2そのものはXMLで定められたencodingしかサポートしていない。そのためlibiconvが必要となるわけであるが、 日本語を使わないというのであればlibiconvは必要ではなくなる(自前でビルド時にオプションを指定する)。 それは困るという場合にはlibiconvのプレースホルダを作ってしまうという方法(libiconv-win32-ph-20021120.tar.bz2)がある。 libiconv自体は3関数しか出力されていないし、またlibiconvはオープンソースであるので容易であるだろう。お勧めは後者である。

win32congif.hにHAVE_ZLIB_Hを定義しておくとzlibによるgzファイルの透過的な読み込み/書き込みができるようになる。


Windowsでは

本家以外に

からも公開されている。

実際に使うとなっては、使用できる規格以外にも、そのインターフェイスや実際のファイルサイズなどが気になるところではある。 libxml2は前者の問題をもっとも確実なところに身をおいて対処しているようで、Windows APIのような関数群で構成されている。 後者の問題はライブラリのコンパイル時に使用する機能を選択できることによって対処できる。 例えば、ローカルでのアプリケーションで使用するのに必要最小限の選択、例えば:

をすると300KB程度のDllになる(bz2書庫にすると123KB)。

お勧めは自前でビルドすること。色々な機能が選択できる。zlibを使えるようにするには今のところこの道しかないようだ。