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へのバイナリ配布のインストール

  1. SablotronはC言語ベースのXMLパーサExpatを使用します。 Expatをまだインストールしていない場合は、 こちらからダウンロードしてきます (expat_win32bin_1_95_2.exe)。 これはインストーラつきのEXEなので、指示に従いインストールした後、 expat.dllを環境変数PATHの通ったところにコピーします。 また、ちょっと裏技ですが、下記の「FullPack」を使う場合には、expat.dllを libexpat.dllという名前でもコピーして配置しておく必要があります。
  2. 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のアーカイブをダウンロードします。
  3. アーカイブを展開したら、Sablot-0.97、libiconv-1.8、 js-1.5_rc4 それぞれのディレクトリに含まれる、 「sablot.dll」「js.dll」「iconv.dll」 の3つのDLLを環境変数PATHの通ったところにコピーします。 できれば、先のexpat.dllと同じところが分かりやすいでしょう。
  4. 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文書も正しく扱えると思います。

XML Top

(first uploaded 2002/01/27 last updated 2003/01/13, URANO398)

楽天モバイル[UNLIMITが今なら1円] ECナビでポインと Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!


無料ホームページ 無料のクレジットカード 海外格安航空券 解約手数料0円【あしたでんき】 海外旅行保険が無料! 海外ホテル