2010-10-06 29 views
12

將PHP的庫升級到使用XSLT 2.0可能嗎?將PHP XSLT處理器升級到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 
+0

你在運行什麼操作系統? – Dave 2010-10-06 15:19:13

+1

@Louis W:我認爲沒有「本機」PHP XSLT 2.0處理器。但是在很多平臺上都有XSLT 2.0處理器,我認爲PHP腳本有一種方法可以與其他服務器進程連接。 – 2010-10-06 15:21:52

+0

運行apache2。 – 2010-10-06 15:38:02

回答

12

Saxon-C項目提供了XSLT 2.0實現一個PHP API。

以下是基本安裝過程:

請有你的機器建立薩克森/ C PHP擴展以下包:製作,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擴展。插入在動態擴展部分執行以下操作:延長= 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,只需輸入 梨安裝路徑/到/的/ 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擴展之前已經使用過PHP XSL擴展,那麼你唯一需要知道的就是XML_XSLT2Processor :: __ construct()函數。其餘的與它兼容,儘管這裏只有一些新功能可用。請注意,由於類的體系結構(不是PECL擴展和所有...),registerPHPFunctions()和setProfiling()函數不可用。

參考

+0

感謝您的鏈接。 – DanMan 2013-06-10 17:42:30