如何在PHP 5中启用XSLT功能?

Chr*_*ong 8 php xml xslt mediatemple

我想使用xslt将xml文件打印为HTML嵌套列表,据我所知,代码是正确的,但是我收到此错误

致命错误:调用未定义的函数xslt_create()

我认为这意味着xslt功能尚未启用.如何在PHP中启用这些功能?我需要包含一个php文件(就像Javascript库的工作方式)还是更复杂的东西?我是MediaTemple的主持人.

这是我正在使用的PHP代码:

        <?php 

    // Allocate a new XSLT processor 
    $xh = xslt_create(); 

    // Process the document, returning the result into the $result variable 
    $result = xslt_process($xh, 'armstrong.xml', 'familyToNestedList.xsl'); 
    if ($result) { 
        print "SUCCESS, sample.xml was transformed by sample.xsl into the \$result"; 
        print " variable, the \$result variable has the following contents\n<br>\n"; 
        print "<pre>\n"; 
        print $result; 
        print "</pre>\n"; 
    } 
    else { 
        print "Sorry, sample.xml could not be transformed by sample.xsl into"; 
        print "  the \$result variable the reason is that " . xslt_error($xh) .  
        print " and the error code is " . xslt_errno($xh); 
    } 

    xslt_free($xh); 

    ?>
Run Code Online (Sandbox Code Playgroud)

提前致谢!

小智 16

根据您的Linux发行版,您可以只安装php5-xsl模块,将"extension = php_xsl.so"行添加到您的php.ini文件中,然后重新启动您的apache2服务器.

这在Ubuntu 11.10上对我有用.您可以在命令行中输入"sudo apt-get install php5-xsl"来安装php5-xml.


Gor*_*don 7

您必须使用对它的支持来编译PHP,并确保具有所有必需的依赖项.请参阅PHP手册中的XSLT相应章节.

从章节要求

此扩展需要libxml PHP扩展.这意味着也需要传入--enable-libxml,尽管这是隐式实现的,因为默认情况下启用了libxml.这个扩展使用了Sablotron和expat,它们都可以在» http://freshmeat.net/projects/sablotron/找到.提供二进制文件以及源代码.通过在PHP 4中使用--with-xslt选项启用.

从章节安装

在Unix上,使用--enable-xslt --with-xslt-sablot选项运行configure.Sablotron库应安装在您的编译器可以找到的地方.确保链接到Sablotron库的库与那些与PHP链接的库相同.配置选项: - with-expat-dir = DIR --with-iconv-dir = DIR可以帮助您指定它们.在寻求支持时,请始终提及这些指令,以及您的系统上是否安装了其他版本的库.当然,提供所有版本号.

使用PHP5进行XSL转换推荐扩展是XSL.如果您需要做的就是转换两个文档,如示例中所示,请考虑PHP手册中的这个示例:

$xml = new DOMDocument;
$xml->load('collection.xml');

$xsl = new DOMDocument;
$xsl->load('collection.xsl');

// Configure the transformer
$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl); // attach the xsl rules

echo $proc->transformToXML($xml);
Run Code Online (Sandbox Code Playgroud)

transformToXML方法将返回转换后的文档,或者FALSE您可以保留代码中的if/else.无论如何,升级代码应该是微不足道的.