|
ここにある情報はかなり古くなっており、正しくなくなっている可能性があります。掲載しているサンプルコードiなどは、最新のPHPでは動作しない、もしくは、別途設定・調整が必要になるかも知れません。情報を鵜呑みにせず、あなたの手を動かして、あなたの目で確認してください。
サンプルでもお分かりのように、PHP4.0.x系とPHP4.1.x以降ではAPIが異なっています。
当然ですが、XML・XSLTの各ドキュメントの内容をXSLT関数に渡すことになりますが、
- XML・XSLTファイルのファイル名を渡す
- XML・XSLTの内容を文字列で渡す
- XMLを文字列で、XSLTをファイル名で渡す
のいずれの方法を採るかで、呼び出す関数が異なります。なお、PHP4.1.x以降の場合、1番目か2番目の方法になります。
一番目の場合、インストール手順のページでも示してますが、以下のような感じになります。
●PHP4.0.[3-6]用
<?php
$xml_file = "test.xml";
$xsl_file = "test.xsl";
$xslt = xslt_create();
xslt_run($xslt, $xsl_file, $xml_file);
echo xslt_fetch_result($xslt);
xslt_free($xslt);
?>
●PHP4.1.x以降用
<?php
$xml_file = "test.xml";
$xsl_file = "test.xsl";
$xslt = xslt_create();
$data = xslt_process($xslt, $xml_file, $xsl_file);
xslt_free($xh);
echo $data;
?>
「Do You PHP?」のほぼすべてのページは、XML・XSLTと上記のようなPHPスクリプトを使って、ファイルに出力したものです (^-^)
二番目の場合、xslt_process関数を使用します。この関数を使用するときは、xslt_create関数を呼び出す必要はありません。
●PHP4.0.[3-6]用
<?php
$xslData = "...[具体的なXSL]...";
$xmlData = "...[具体的なXML]...";
if (xslt_process($xslData, $xmlData, $result)) {
echo $result;
} else {
die("失敗しました");
}
?>
●PHP4.1.x以降用
<?php
$xslData = "...[具体的なXSL]...";
$xmlData = "...[具体的なXML]...";
$args = array("/_xml" => $xmlData,
"/_xsl" => $xslData);
$xslt = xslt_create();
$data = xslt_process($xslt, "arg:/_xml", "arg:/_xsl", NULL, $args);
xslt_free($xh);
echo $data;
?>
三番目の場合、xslt_output_begintransform関数とxslt_output_endtransform関数を使用します。xslt_output_begintransform関数を呼び出すときにXSLTファイルを指定し、xslt_output_endtransform関数を呼び出すまでにXMLの内容を出力します。実際の変換は、xslt_output_endtransform関数が呼び出されたときに行われます。なお、PHP4.1.x以降では、この方法は使えません。
●PHP4.0.[3-6]用
<?php
$xslt = xslt_create();
xslt_output_begintransform('test.xsl');
print join ('', file('test.xml'));
xslt_output_endtransform();
xslt_free($xslt);
?>
|