XSLT変換でDreamweaverのテンプレート機能っぽいことを
phpではXSLT変換機能を簡単に導入できます。
php5ではconfigureに引数–with-xslを追加するだけです。
XSLとはXMLのスタイルシート。XSLT変換によって、XMLを、違う形のXMLや(X)HTML、CSVやプレーンテキストなど、たいていのものに変換できます。
phpでの変換方法はこう。
//dom $doc = new DOMDocument(); //xsl $xslPath = '/path_to_xsl/xsl.xsl'; $xsl = new XSLTProcessor(); $doc->load($xslPath); $xsl->importStyleSheet($doc); //xml $doc->load('/path_to_xml/xml.xml'); //xslt変換 $result = $xsl->transformToDoc($doc);
一般的なホームページでは、ヘッダ、フッタ、サイドメニューなど共通部品が多く、各ページ固有のデータは割と少ないです。
そこで、各ページ固有のデータを下のようなXMLで表現して、XSLT変換で共通部分を追加して全ページ作成するといったことをしてみました。
<page> <title>タイトル</title> <menu>通常</menu> <contents> <h1>xxxのページ</h1> <p>コンテンツ部分はHTMLを手書きした</p> </contents> </page>
このXMLファイルをサイトのHTMLの配置と同じようにディレクトリに配置して、あるディレクトリ以下のすべてのXMLを探して、別のディレクトリに同じ配置でHTMLを書き出すphpを書いて、実行するだけでHTML一式が全部作れるようにしました。
contents部分はタグを手書きしましたが、本文部分程度で量が少ないのと、私はいつも手書きしているということから、ここは苦になりませんでした。
共通部分の変更には、XSLの変更をしてXSLT変換を実行するだけで対応できます。
XSLT変換では条件分岐も可能なので、メニューなどが複数パターンあっても簡単に対応できました。
かなり柔軟性のあるテンプレート機能ができました。
私はDreamweaverのテンプレート機能よりこっちが好き。
コメント