C言語で書かれたXSLTプロセッサ・Sablotron |
Sablotronは、
XML黎明期から広く使われてきた、
C言語ベースのフリーウェアのXSLTプロセッサです。
Webスクリプト言語PHPの拡張XSLT関数に採用されていることで知られ(※1)、
同様にC言語で書かれたアプリケーションでXSLT変換を行うのに便利なライブラリです。
現在のバージョンは0.97です。
ここでは、Windows XP Home Edition
にバイナリ配布を、
Red Hat Linux 7.3にソース配布をインストールして使ってみた経緯をメモしています。
(※1)PHPのXSLT関数でSablotronを使う例は、
このサイトのApacheとPHPの部屋でご紹介しています。
興味のある方はそちらものぞいてみて下さいね。
●Windowsへのバイナリ配布のインストール
-
SablotronはC言語ベースのXMLパーサExpatを使用します。
Expatをまだインストールしていない場合は、
こちらからダウンロードしてきます
(expat_win32bin_1_95_2.exe)。
これはインストーラつきのEXEなので、指示に従いインストールした後、
expat.dllを環境変数PATHの通ったところにコピーします。
また、ちょっと裏技ですが、下記の「FullPack」を使う場合には、expat.dllを
libexpat.dllという名前でもコピーして配置しておく必要があります。
-
SablotronのWindows用バイナリ配布を
こちら
からダウンロードします。
本体だけのアーカイブ(Sablot-Win-0.97.zip)と、
本体+libiconv+jsの完全パック(Sablot-Win-0.97-FullPack.zip)
がありますが、
本体だけのアーカイブに入っているSablotronでは、
日本語EUC(EUC-JP)やシフトJIS(Shift_JIS)といった、
日本語のエンコーディングで書かれたXML文書を扱うことができません。
扱う文書が全てUTF-8かASCIIであれば本体だけでよいのですが、
そうでない場合には、FullPackを入手するか、
またはGNU iconvライブラリを別途入手して、
Sablotronをソース配布からエンコーディングサポートつきでコンパイルする必要があります。
ソース配布からのコンパイルはこのページでは扱いませんので、
FullPackのアーカイブをダウンロードします。
-
アーカイブを展開したら、Sablot-0.97、libiconv-1.8、
js-1.5_rc4 それぞれのディレクトリに含まれる、
「sablot.dll」「js.dll」「iconv.dll」
の3つのDLLを環境変数PATHの通ったところにコピーします。
できれば、先のexpat.dllと同じところが分かりやすいでしょう。
-
SablotronのコマンドラインXSLTプロセッサの名前は
「sabcmd.exe」です。これの使い方はこんな感じです:
sabcmd sample.xsl sample.xml sample.html
しかし、FullPackのsablot.dllを使うと、
「MSVCRTD.DLL」がないというエラーになり、使えません。
これは、
FullPackは実験的なサポートのため、
デバッグモードでコンパイルしたバイナリを配布されている
(意識的にか、気づかずにかはMLでは指摘されていないのですが)
というので、VC++などから別途入手して、
このmsvcrtd.dllも先と同様、環境変数PATHの通った場所に配置する必要があります。
●Red Hat Linuxへのソース配布のインストール
ソース配布からのインストールは簡単で、
「configure→make→make install」でできます。
sabcmdというプロセッサがインストールされるので、
上のWindowsの例と同じように試してみてください。
日本語のXML文書も正しく扱えると思います。
(first uploaded 2002/01/27 last updated 2003/01/13, URANO398)
|