PHP:DOM XML関数を使用してのXSLTファイルの適用
PHP (55 items)
2004年09月13日
下記のようにXML宣言の後に”xml-stylesheet処理命令”を記述し、
そのhref属性にXSLTファイルのURLを指定すれば可能である。
”test.xml”
<?xml version="1.0" encoding="EUC-JP" ?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
ここで、既に存在し”xml-stylesheet処理命令”のないXMLファイルに、
あるXSLTファイルを適用させたい場合はどのようにすればよいか?
以下に、PHPのDOM XML関数を使用した方法を記す。
//XMLファイルのオープン・・・(1)
$dom = domxml_open_file('test.xml');
//XSLTファイルの読み込み・・・(2)
$xsldoc = domxml_xslt_stylesheet_file('test.xsl');
//XSLTファイルの適用・・・(3)
$result = $xsldoc->process($dom);
//XSLTファイル結果をHTMLファイルに出力・・・(4)
$xsldoc->result_dump_file($result, 'test.html');
//出力したHTMLファイルにリダイレクト・・・(5)
header('Location: test.html');
(1)・・・”xml-stylesheet処理命令”のない「test.xml」ファイルをオープン
(2)・・・「test.xsl(「test.xml」データをHTMLに加工するXSLTファイルと仮定)」を読込
(3)・・・「test.xml」ファイルに「test.xsl」の内容を適用
(4)・・・(3)で適用した結果を、「test.html」としてファイルに保存
(5)・・・(4)で作成したHTMLにリダイレクト
これにより、「test.xml」に対し複数のXSLTファイルを作成した場合でも、
どのXSLTを適用させるかの処理をPHPロジックで実現する事ができる。
<PHPコーディング例2>
//XMLファイルのオープン
$dom = domxml_open_file('test.xml');
//「$hantei_flg」の値によってXSLTファイルの読み込みを変える
if ($hantei_flg == '1') {
$xsldoc = domxml_xslt_stylesheet_file('test.xsl');
} else {
$xsldoc = domxml_xslt_stylesheet_file('test2.xsl');
}
//XSLTファイルの適用
$result = $xsldoc->process($dom);
//XSLTファイル結果をHTMLファイルに出力
$xsldoc->result_dump_file($result, 'test.html');
//出力したHTMLファイルにリダイレクト
header('Location: test.html');
このように、異なるXSLT内容を場合分けして適用したい場合などにも便利。