将PHP XSLT处理器升级到XSLT 2.0

Lou*_*s W 14 php xslt xslt-2.0 libxslt

是否可以/轻松升级PHP库以使用XSLT 2.0?

目前的设置:

xsl
XSL     enabled
libxslt Version     1.1.24
libxslt compiled against libxml Version     2.6.32
EXSLT   enabled
libexslt Version    1.1.24 
Run Code Online (Sandbox Code Playgroud)

Pau*_*tte 15

撒克逊-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
Run Code Online (Sandbox Code Playgroud)

更新php.ini文件(如果使用Ubuntu,它通常位于'/ etc/php5/apache2 /'位置)以包含php扩展.在Dynamic Extensions部分中插入以下内容:extension = saxon.so

运行命令:

sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)

示例代码:

<?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);
?>
Run Code Online (Sandbox Code Playgroud)

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安装程序,就可以从中安装XML_XSLT2Processor,只需输入pear install path/to/tgz/arhive即可,但当然要替换路径.例如,如果版本0.5.3与PHP文件夹位于同一文件夹中,则可以使用命令pear install XML_XSLT2Processor_v0_5_3.tgz安装它.

手动安装

如果您没有(访问)PEAR安装程序,您仍然可以通过在任何目录中提取存档的内容来安装XML_XSLT2Processor.但是,建议此目录位于include_path中的路径中,您可以在php.ini中指定.要更接近地模拟PEAR安装程序,您还可以将"XSLT2Processor-verion"目录重命名为"XML".

用法

完成上述所有操作后,您可以创建一个新的PHP文件并在其中包含XML_XSLT2Processor.如果您已使用PEAR安装程序,则"XML"文件夹中应提供"XSLT2Processor.php",因此:

<?php 
include "XML/XSLT2Processor.php";
//The rest of the code
?>
Run Code Online (Sandbox Code Playgroud)

您将需要PHP文件中将包含该类的包含行,它应该在您使用该类中的任何函数之前发生.本文档的其余部分将向您展示如何构造XML_XSLT2Processor类,以及解释每个函数的原型并给出一些示例.

请注意,如果您在使用PHP XSL扩展之前已经使用过它,那么您唯一必须知道的是XML_XSLT2Processor :: __ construct()函数.其余部分与之兼容,尽管此处仅提供一些新功能.请注意,由于类的体系结构(不是PECL扩展和所有...),registerPHPFunctions()和setProfiling()函数不可用.

参考