XSLT 2.0 を使用するように PHP のライブラリをアップグレードすることは可能ですか?
現在のセットアップ:
xsl
XSL enabled
libxslt Version 1.1.24
libxslt compiled against libxml Version 2.6.32
EXSLT enabled
libexslt Version 1.1.24
Saxon-Cプロジェクトは、XSLT 2.0 実装用のPHP API を提供します。
基本的なインストールプロセスは次のとおりです。
Saxon/C PHP 拡張機能をビルドするには、マシンに次のパッケージを用意してください: make、php-devel、(php5-dev/php55-dev/php55w-devel)、apache2 または httpd、gcc-c++ または g++、gcj (またはjni.h ファイルをリンクするだけです)
次のコマンドを実行します。
phpize
./configure --enable-saxon
make
sudo make install
php.ini ファイルを更新して (Ubuntu を使用している場合、通常は「/etc/php5/apache2/」の場所にあります)、php 拡張子を含めます。Dynamic Extensions セクションに以下を挿入します: extension=saxon.so
次のコマンドを実行します。
sudo service apache2 restart
コード例:
<?php
/* simple example to show transforming to string */
function exampleSimple1($proc, $xmlfile, $xslFile){
$proc->setSourceFile($xmlfile);
$proc->setStylesheetFile($xslFile);
$result = $proc->transformToString();
if($result != null) {
echo '<b/>exampleSimple1:</b/><br/>';
echo 'Output:'.$result;
} else {
echo "Result is null";
}
$proc->clearParameters();
$proc->clearProperties();
}
$foo_xml = "xml/foo.xml";
$foo_xsl = "xsl/foo.xsl";
$proc = new SaxonProcessor();
//On Windows we recommend setting the cwd using the overloaded constructor
//because there remains an issue with building Saxon/C with PHP when using the function VCWD_GETCWD. i.e. $proc = new SaxonProcessor('C://www/html//trax//');
$version = $proc->version();
echo 'Saxon Processor version: '.$version;
echo '<br/>';
exampleSimple1($proc, $foo_xml, $foo_xsl);
?>
libxslt2 および libexslt ライブラリーは、XSLT 1.0、XPath 1.0、および EXSLT サポートに限定されており、PHP のデフォルトの XSLT プロセッサーを提供するために使用されます。XML_XSLT2Processorプロジェクトは、アップグレード パスを提供することを目的としています。
基本的なインストールプロセスは次のとおりです。
XSLT プロセッサのインストール方法については、使用するプロセッサのサイトに記載されている手順に従ってください。基本的に、プロセッサのバイナリをディレクトリに展開する必要があります。
プロセッサをセットアップしたら、XML_XSLT2Processor をダウンロードできます。PEAR インストーラーの使用
PEAR インストーラーがまだない場合は、PEAR サイトのインストール手順を確認してください (基本的に Windows では、PHP のフォルダーにある go-pear.bat ファイルを起動し、通常は "Enter" を最後まで押します)。 )、PEAR インストーラー (別名 "PEAR パッケージ マネージャー") をインストールします。
PEAR インストーラーを取得したら、単に pear install path/to/the/tgz/arhive と入力するだけでそこから XML_XSLT2Processor をインストールできますが、もちろんパスを置き換えます。たとえば、バージョン 0.5.3 が PHP フォルダーと同じフォルダーにあった場合、コマンド pear install XML_XSLT2Processor_v0_5_3.tgz でインストールできます。
手動インストール
PEAR インストーラーを持っていない (アクセスできない) 場合でも、アーカイブの内容を任意のディレクトリに抽出することで XML_XSLT2Processor をインストールできます。ただし、このディレクトリは、php.ini で指定できる include_path のパスに含めることをお勧めします。PEAR インストーラをより厳密にエミュレートするには、「XSLT2Processor-verion」ディレクトリの名前を「XML」に変更することもできます。
使用法
上記のすべてが完了したら、新しい PHP ファイルを作成し、その中に XML_XSLT2Processor を含めることができます。PEAR インストーラーを使用した場合、「XSLT2Processor.php」は「XML」フォルダーから利用できるはずです。
<?php
include "XML/XSLT2Processor.php";
//The rest of the code
?>
クラスを使用する PHP ファイルにインクルード行が必要です。これは、そのクラスの関数を使用する前に行う必要があります。ドキュメントの残りの部分では、XML_XSLT2Processor クラスの作成方法を示し、各関数のプロトタイプについて説明し、いくつかの例を示します。
これを使用する前に PHP XSL 拡張機能を使用したことがある場合、本当に知っておく必要があるのは XML_XSLT2Processor::__construct() 関数だけであることに注意してください。ここでしか利用できない新機能がいくつかありますが、残りは互換性があります。registerPHPFunctions() および setProfiling() 関数は、クラスのアーキテクチャ (PECL 拡張ではなく、すべて...) が原因で使用できないことに注意してください。
参考文献