Web Artisan Blog - ウェブ アルチザン ブログ

PHP:DOM XML関数を使用してのXSLTファイルの適用

PHP (55 items)

2004年09月13日

XMLにXSLTを適用させるには、
下記のように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関数を使用した方法を記す。
<PHPコーディング例1>

//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内容を場合分けして適用したい場合などにも便利。

前の記事 次の記事

Comments

コメントは、まだ書かれていません

Add Comments

Trackback

トラックバックはありません

Trackback URL

http://www.res-system.com/weblog/action.php?action=plugin&name=TrackBack&tb_id=265