Do You PHP?    
Search Engine Optimization  php5 powerd  Valid XHTML 1.0!  Valid CSS!  このサイトのはてなブックマーク数 



last updated
2002/10/20

counter hits
since 1999/11/06


とりあえず、XSLTしてみる

alertここにある情報はかなり古くなっており、正しくなくなっている可能性があります。掲載しているサンプルコードiなどは、最新のPHPでは動作しない、もしくは、別途設定・調整が必要になるかも知れません。情報を鵜呑みにせず、あなたの手を動かして、あなたの目で確認してください。

memoサンプルでもお分かりのように、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・XSLの各ファイルを指定
    $xml_file = "test.xml";
    $xsl_file = "test.xsl";

    // xsltプロセッサを作成
    $xslt = xslt_create();

    // XSLTスタイルシートをXMLファイルに適用
    xslt_run($xslt, $xsl_file, $xml_file);

    // 結果を出力
    echo xslt_fetch_result($xslt);

    // xsltプロセッサを解放
    xslt_free($xslt);
?>

●PHP4.1.x以降用

<?php
    // XML・XSLの各ファイルを指定
    $xml_file = "test.xml";
    $xsl_file = "test.xsl";

    $xslt = xslt_create();

    //XML・XSLの順番に注意
    //4.0.x系とXML、XSLの順番が逆になります
    $data = xslt_process($xslt, $xml_file, $xsl_file);

    xslt_free($xh);
    echo $data;
?>

memo「Do You PHP?」のほぼすべてのページは、XML・XSLTと上記のようなPHPスクリプトを使って、ファイルに出力したものです (^-^)

二番目の場合、xslt_process関数を使用します。この関数を使用するときは、xslt_create関数を呼び出す必要はありません。

●PHP4.0.[3-6]用

<?php
    $xslData = "...[具体的なXSL]...";
    $xmlData = "...[具体的なXML]...";

    // XSLTデータをXMLデータに適用し、結果を$resultにセット
    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 = xslt_create();

    // xslt_output_begintransform()&#65374;xslt_output_endtransform()までに出力された
    // データをXMLデータと見なし、スタイルシートを適用する
    xslt_output_begintransform('test.xsl');
    print join ('', file('test.xml'));
    xslt_output_endtransform();

    // xsltプロセッサを解放
    xslt_free($xslt);
?>



About This Site |  Privacy Policy |  Contact
Copyright © 1999 - 2002 by Hideyuki SHIMOOKA all rights reserved.