PHP5でXML + XSLTを使う

仕事でXML + XSLT => HTMLのシステムを作っていたので、PHPでもXSLTを使えないかなぁと思ったりしてます。ただPHPが詳しくなった今、XML + XSLTで幸せになれる場面がそんなに思い浮かばないので、まぁいつか役に立つ技術ぐらいかなぁというイメージです。

PHP4ではXSLTはSablotronだったようですが、PHP5ではlibxsltになりました。詳細はここのPHP4とPHP5のXMLサポートの違いを参照。

以下PHP4でXSLT変換していたのをPHP5に移行したときのメモ。

さくっと動くかと思いきやxsl:for-each文でほとんどエラーとなるので調べてみたら、ほかの人達はexsl:node-setという関数を使っているみたい。sablotronやmsxmlだとテンプレートに引数として渡すと自動で判断してくれたのに・・・

Windowsサーバでmsxmlを使っていた人は予想ができると思うけど、exsl:node-setは引数をノードセットとして評価してくれるらしい。

exsl:node-setを使うにはEXSLTというコンポーネントがインストールされている必要があるみたい。ここ

phpinfoでみると下のようになってれば使える。

image

実際に使うときには名前空間を宣言するのを忘れずに。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common">

名古屋のおもしろ会社エクスブリッジ

コメント

このブログの人気の投稿

【.NET】DataGridViewを選択した際に背景色を変更しない

【PostgreSQL】ROWNUMのように行番号(現在行)を取得するROW_NUMBER

Can't open PID file /var/run/nginx.pid (yet?) after start: Too many levels of symbolic links