【问题标题】:Upgrade PHP XSLT processor to XSLT 2.0将 PHP XSLT 处理器升级到 XSLT 2.0
【发布时间】:2011-04-21 21:36:27
【问题描述】:

升级 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 

【问题讨论】:

  • 你运行的是什么操作系统?
  • @Louis W:我认为没有“原生”PHP XSLT 2.0 处理器。但是很多平台都有 XSLT 2.0 处理器,我认为 PHP 脚本有办法连接其他服务器进程。
  • XSLT 由 libxslt 为 libxml2 库提供,目前支持 XSLT 1.0 / XPATH 1.0。找不到路线图 atm。他们是否甚至尝试实现 XSLT 2.0。
  • @Wrikken - 猜猜这是不可能的。谢谢你的帮助。介意发布答案以便我接受并关闭此问题吗?
  • 我会稍等片刻才能看到它可能是bugzilla.gnome.org 上的功能请求。我无法到达上午(其他人可以访问该站点/检查吗?)

标签: php xslt xslt-2.0 libxslt


【解决方案1】:

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 扩展名。在动态扩展部分插入以下内容: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 安装程序,您就可以从它安装 XML_XSLT2Processor,只需键入 梨安装路径/to/the/tgz/arhive 但当然要替换路径。例如,如果版本 0.5.3 与 PHP 文件夹位于同一文件夹中,则可以使用以下命令安装它 梨安装 XML_XSLT2Processor_v0_5_3.tgz

手动安装

如果您没有(访问)PEAR 安装程序,您仍然可以通过在任何目录中提取存档内容来安装 XML_XSLT2Processor。但是,建议将此目录包含在您的 include_path 中,您可以在 php.ini 中指定。为了更接近地模拟 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 扩展等等……)。

参考文献

【讨论】:

    猜你喜欢
    • 2012-03-12
    • 2010-10-05
    • 2014-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多