xmlをxslを使ってphpに実装する

xmlファイルをxslで変換して表示させるまではとんとんと進むことができたのだが、そのxmlxmlのままでなく、htmlなりphpなりにして表示させるとなると頭を抱えてしまった。ググってもググっても埒があかない。ということで初めてはてな人力検索を利用した。そして、その日は作業を休止した。

翌朝、回答が寄せられていた。投稿してから数時間のうちに回答があった。その回答コメントをもとにまた四苦八苦(トライアンドエラー)してみた。

Sablotron

まず、phpでインクルードするのにxslt_create関数というのを使用して呼び出せばいいということがわかった。それにはSablotron(サブロトロン)というXSLTプロセッサを使う。このSablotronをインストールするのにまず手間取った。XMLパーサーのexpatというのからインストールしないといけないのだが、configすると失敗してしまう。ここでさらにググると下記の記述に出会った。

MacOSXでサーバー稼業 : フォーラム : all
Leopardに対応したXcode3.0がADCからダウンロードできるようになっていますので、入手してインストール、それからもう一度configureを実行してみたらうまくいくようになるかもしれません。

Xcodeのバージョンアップ

さっそくXcode - Apple DeveloperからXcode3.0を入手してインストール。再度configしてみる。出来た。なんということもないことだったわけだが、これでも数時間躓くには十分だ。

そうやってexpatとsablotronをインストールしたものの、今度はphpで拡張のオプションを入れてconfigしてインストールしなければならない。ここでもまたハードル。うんうん唸って考えてみたのだが、なかなか解決できない。そもそも開発環境であるMAMPではどうしているのか?MAMPのフォーラムで検索をかけてみた。

するとMAMPの中の人がこう回答している記述に出会った。

There are two XSL implementation in PHP

  • Sablotron and
  • libxslt

Your webhosting server uses Sablotron and PHP 5 of MAMP uses libxslt (standard see http://www.php.net/xsl). But the PHP4 Version of MAMP uses Sablotron which was the standard for PHP4 (see http://www.php.net/xslt)

libxslt で解決

なるほど。であればSablotronにこだわる必要はなく、libxsltにすればいいじゃないか。ということで、どうにかこうにかこちらの記事(http://www.doyouphp.jp/inst/inst_unix_dso_5_xslt.shtml)のサンプルをもとにやりたいことが出来た。libxsltであればMAMPに最初からインストールされているので何の苦労もなく動いてくれた。

FYI