xmlをxslを使ってphpに実装する
xmlファイルをxslで変換して表示させるまではとんとんと進むことができたのだが、そのxmlをxmlのままでなく、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