The XML C parser and toolkit of Gnomeは、
C言語ベースのXML関連のツールやライブラリをオープンソースで開発している一群のプロジェクトです。
その名前から、主にPC-UNIXでKDEと人気を二分する統合デスクトップ環境
GNOME のツールで用いるために開発されている、
と思われます。
が、GNOME環境以外で使えないわけではありませんし、Windowsなどにも移植されており、
一般の私達がC言語で作るソフトウェアの開発にも便利に活用することができます。
The XML C parser and toolkit of Gnomeのソフトウェアの中で主要な位置を占める二つが、
libXML2と
libXSLTです。
libXML2はC言語で書かれたXMLパーサのライブラリです。
2とついているように前身のバージョン1台もあるのですが、
これから使うぶんにはバージョン2台でよいです。
libXSLTは同じくC言語で書かれたXSLTプロセッサのライブラリで、
libXML2と一緒にインストールする必要があります。
libXSLTに付属のコマンドラインベースのXSLT変換ツール「xsltproc」
はシンプルながらとても使いやすいです。
APIプログラミングはしないけどXSLT変換だけを活用したい、
という向きには最もお勧めのコマンドラインXSLTプロセッサといえましょう。
試した環境とバージョンは次の通りです。
OS | ソース/バイナリ | libXML2 | libXSLT |
RedHat Linux 7.3 | ソース配布 |
2.4.23 | 1.0.19 |
RedHat Linux 7.3 | ソース配布 |
2.5.1 | 1.0.23 |
RedHat Linux 7.3 | ソース配布 |
2.5.8 | 1.0.31 |
Windows XP Home Edition | ソース配布(Cygwinビルド) |
2.4.23 | 1.0.19 |
Windows XP Home Edition | ソース配布(MinGWビルド) |
2.4.23 | 1.0.19 |
Windows XP Home Edition | ソース配布(MinGWビルド) |
2.5.3 | 1.0.26 |
Windows XP Home Edition | ソース配布(MinGWビルド) |
2.6.8 | 1.1.15 |
Windows95 | バイナリ配布 |
2.4.23 | 1.0.19 |
Windows XP Home Edition | バイナリ配布 |
2.4.23 | 1.0.19 |
●インストール手順、PC-UNIX編
- www.xmlsoft.orgから、
libXML2とlibXSLTのソース配布をダウンロードしてきます。
バージョンアップの頻度がものすごく速いので、
FTPディレクトリを見て、その時点で最新のバージョンを見つけて入手するようにするとよいでしょう。
- 適当なディレクトリで展開します。
- インストールはlibXML2→libXSLTの順で行いますが、
両方ともおなじみの「configure → make → make install」
でインストールできます。
オプションは「configure --help」で表示されるので見て環境に応じて指定します。
% sh configure
% make
% su root
# make install
★libXSLTをコンパイルするとき、
/usr/libに古いバージョンのlibXML2が、その他のディレクトリに新しいlibXML2
が入っている場合、--with-libxml-prefixで新しいディレクトリを指定できます。
例えば、新しいlibxml2.aが/usr/local/lib にある場合、
% sh configure --with-libxml-prefix=/usr/local
とすれば、/usr/lib/libxml2.aは無視して/usr/localの方を見てくれます。
- なおlibxml2をビルドする前に、ライブラリ「iconv」
がインストールされているか確認したほうがよいでしょう。iconvが入っていると、
UTF-8やASCII以外のShift_JISなどのエンコーディングで書かれたXML文書も扱うことができるので、
特に日本では便利です。
●インストール手順、Windows(ネイティブバイナリ配布)編
-
libXSLTは独立したアーカイブですが、使用にはlibXML2も必要です。
これらはwww.xmlsoft.org
からリンクが伸びている
Igor Zlatkovicさんのページからダウンロードできます
(libxml2-2.4.23.win32.zipとlibxslt-1.0.19.win32.zip)。
これらのバイナリはエンコーディング変換ライブラリ「iconv」
対応版としてビルドされているので、
Shift_JISなどの日本語文字コードで書かれたXML文書も扱うことができます。
-
両アーカイブを展開し、libxml2に含まれるlibxml2.dll、
libxsltに含まれるlibxslt.dllとlibexslt.dllの3つのDLLを、
環境変数PATHの通ったところにコピーします。
●インストール手順、Windows(Cygwin)編
Windows上で動くUNIXエミュレーション環境Cygwinの中には、
libxml2とlibxslt、libexsltのバイナリパッケージが入っているので、
他のツールやライブラリと同様の方法でダウンロード・インストールすれば使えるようになります。
ただし、Cygwinのバイナリ配布は、
エンコーディング変換ライブラリ「iconv」をつけてコンパイルしてありません。
従って、Cygwin謹製のバイナリ配布をインストールした場合には、
XML文書はShift_JISやEUC-JPではなくUTF-8で書かれたものしか扱えません。
これは環境によっては、大きなネックとなります。
そこで、ソース配布を入手して、Cygwinのgccコンパイラを使い、
iconv対応のlibXML2とlibXSLTを自分でビルドしてみましょう。
-
iconv、libXML2、libXSLTのソースアーカイブを入手します。
iconvのソース配布は
こちらから入手できます。
コンパイルはiconv→libXML2→libXSLTの順に行います。
- iconvをコンパイルします。
$ sh configure --disable-shared --enable-static
$ make
$ make install
|
- libXML2をコンパイルします。
$ export CFLAGS="-DLIBXML_STATIC -I/usr/local/include"
$ export LDFLAGS="-L/usr/local/lib"
$ sh configure --disable-shared --enable-static --with-iconv
$ make
$ make install
|
- libXSLTをコンパイルします。
$ export CFLAGS="-DLIBXML_STATIC -DLIBXSLT_STATIC -DLIBEXSLT_STATIC -I/usr/local/include"
$ export LDFLAGS="-L/usr/local/lib"
$ sh configure --disable-shared --enable-static
$ make
$ make install
|
ここで、LIBXML_STATICとかLIBXSLT_STATICというのは、
Cygwinでは共有ライブラリが作れないトラブルが発生したための応急対策的な記号定数だそうで、
これをつけておかないと、「undefined reference to _imp__xml.....」
というリンカーの謎エラーが大量に発生します。
また、--disable-sharedも安全のためつけておきました。
●インストール手順、Windows(MinGW)編
Cygwinと同じWindows上のgccであるMinGWですが、
最近はソース配布からのビルドも随分簡単になりました。
しかし一部にMinGW環境が正しく認識してもらえない部分があり、若干手修正が必要になります。
以下にメモっているビルド環境はMSYS 1.0.7 + MinGW 2.0.0です。
まず、(UTF-8以外の)日本語のエンコーディングで書かれたXML文書も読めるようにするため、
iconvをビルドします。
iconvのソース配布は
こちらから入手できます。
バージョン1.7と1.9.1で試しましたが、1.9.1ではコンパイルエラーになり解決しなかったので、
1.7を使いました。普通に
$ sh configure; make; make install
|
でインストールできます。
その後、libxml-2.6.8ディレクトリでの作業ですが、
その前に/usr/local/lib/libiconv-2.dllを
PATHの通った場所(例えば/usr/local/bin)にもコピーします。
$ sh configure --enable-ipv6=no --with-iconv=/usr/local
|
ここで、testSax.c の冒頭に次の行を追加します。
また、Makefileの次の部分を書き換えます。
#LIBS =
LIBS = $(ICONV_LIBS)
|
そしてlibxsltですが、こちらは
$ sh configure --with-libxml-prefix=/usr/local
$ make
$ make install
|
と、普通にインストールできると思います。
libXSLTはライブラリですが、それを使ったサンプル的なツールとして同梱されているプログラムが
「xsltproc」です。これはシンプルなコマンドラインのXSLTスタイルシートプロセッサで、
先述したように、プログラミングをしないけど、
XML文書からHTML文書を生成する処理をスクリプトなどで行いたい、
という方はこれを使いこなすだけで目的の大半は果たせることでしょう。
xsltprocの使い方は次のような感じです:
xsltproc.exe sample.xsl sample.xml > sample.html
ただし、XSLファイル名は省略できます。その場合は、
XML文書ファイルの冒頭で指定しているXSLファイルが自動的に使われます。
xsltprocがShift_JISやEUC-JPなどのエンコーディングを扱えるかどうかは、
これをビルドするときにリンクしたlibXML2がiconv対応でビルドされたかどうかに依存します。
libXML2がiconv対応でビルドされていない場合は、
xsltprocはUTF-8かASCIIのエンコーディングしか扱えません。
●xsltprocと波線(チルダ)
xsltprocでリンク集などのURLを含む文書を変換すると、
半角波線(チルダ)が別の文字に化けてしまうようです。
これは半角波線の使用をやめ、「%7E」とURLエスケープを使うことで回避できます。
(first uploaded 2002/01/27 last updated 2004/04/04, URANO398)
|