2010-10-06 16 views
12

Có thể dễ dàng nâng cấp thư viện của PHP để sử dụng XSLT 2.0 không?Nâng cấp bộ xử lý XSLT PHP lên XSLT 2.0

hiện tại thiết lập:

xsl 
XSL  enabled 
libxslt Version  1.1.24 
libxslt compiled against libxml Version  2.6.32 
EXSLT enabled 
libexslt Version 1.1.24 
+0

Bạn đang chạy hệ điều hành nào? – Dave

+1

@Louis W: Tôi nghĩ rằng không có bộ xử lý PHP XSLT 2.0 "gốc" nào. Nhưng có bộ vi xử lý XSLT 2.0 cho nhiều nền tảng, và tôi nghĩ có một cách để kịch bản PHP kết nối với quá trình máy chủ khác. –

+0

Chạy apache2. –

Trả lời

12

Dự án Saxon-C cung cấp một API PHP để thực hiện XSLT 2.0 của nó.

Đây là quá trình cài đặt cơ bản:

hãy có các gói sau trên máy tính của bạn để xây dựng mở rộng Saxon/C PHP: thực hiện, php-devel, (php5-dev/php55-dev/php55w -devel), apache2 hoặc httpd, gcc-C++ hoặc g ++, gcj (hoặc chỉ cần liên kết các tập tin jni.h)

Chạy các lệnh:

phpize 
./configure --enable-saxon 
make 
sudo make install 

Cập nhật tệp php.ini (nếu sử dụng Ubuntu, nó thường nằm trong vị trí '/ etc/php5/apache2 /') để chứa phần mở rộng php. Chèn sau trong phần động Extensions: extension = saxon.so

Chạy lệnh: Mã

sudo service apache2 restart 

Ví dụ:

<?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); 
?> 

Các libxslt2 và libexslt thư viện, mà còn hạn chế hỗ trợ XSLT 1.0, XPath 1.0 và EXSLT, được sử dụng để cung cấp bộ xử lý XSLT mặc định cho PHP. Dự án XML_XSLT2Processor nhằm cung cấp đường dẫn nâng cấp.

Đây là quá trình cài đặt cơ bản:

Thực hiện theo các hướng dẫn được cung cấp trên trang web của bộ xử lý bạn muốn sử dụng để được hướng dẫn về cách cài đặt mà bộ xử lý XSLT. Về cơ bản, bạn sẽ được yêu cầu trích xuất bộ xử lý nhị phân trong một số thư mục.

Khi bạn đã thiết lập bộ vi xử lý, bạn có thể tải xuống XML_XSLT2Processor. Sử dụng trình cài đặt PEAR

Nếu bạn chưa có trình cài đặt PEAR, hãy kiểm tra hướng dẫn cài đặt trên trang PEAR (về cơ bản, trên Windows, bạn bắt đầu tệp go-pear.bat trong thư mục của PHP và trong trường hợp điển hình bấm "Enter" tất cả các cách), và cài đặt trình cài đặt PEAR aka "quản lý gói PEAR".

Một khi bạn đã cài đặt PEAR, bạn có thể cài đặt XML_XSLT2Processor từ nó, bằng cách đơn giản gõ lê cài đặt path/to/thư mục/tgz/arhive nhưng thay thế con đường tất nhiên. Ví dụ, nếu phiên bản 0.5.3 là trong cùng thư mục với thư mục PHP, bạn có thể cài đặt nó với lệnh lê cài đặt XML_XSLT2Processor_v0_5_3.tgz

cài đặt bằng tay

Nếu bạn không có (truy cập vào) trình cài đặt PEAR, bạn vẫn có thể cài đặt XML_XSLT2Processor bằng cách trích xuất nội dung của tệp nén trong bất kỳ thư mục nào.Tuy nhiên, thư mục này nằm trong số các đường dẫn trong include_path của bạn, mà bạn có thể chỉ định trong php.ini. Để mô phỏng chặt chẽ hơn trình cài đặt PEAR, bạn cũng có thể đổi tên thư mục "XSLT2Processor-verion" thành "XML".

Cách sử dụng

Khi tất cả những điều trên được thực hiện, bạn có thể tạo một tập tin PHP mới và bao gồm XML_XSLT2Processor trong đó. Nếu bạn đã sử dụng trình cài đặt PEAR, "XSLT2Processor.php" nên có sẵn từ thư mục "XML", như sau:

<?php 
include "XML/XSLT2Processor.php"; 
//The rest of the code 
?> 

Bạn sẽ cần dòng bao gồm trong file PHP sẽ đang sử dụng lớp và nó sẽ xảy ra trước khi bạn sử dụng bất kỳ hàm nào trong lớp đó. Phần còn lại của tài liệu sẽ chỉ cho bạn cách xây dựng lớp XML_XSLT2Processor, cũng như giải thích nguyên mẫu của từng hàm và đưa ra một số ví dụ.

Lưu ý rằng nếu bạn đã làm việc với phần mở rộng XSL PHP trước khi sử dụng phần mở rộng này, điều duy nhất bạn thực sự phải biết là hàm XML_XSLT2Processor :: __ construct(). Phần còn lại tương thích với nó, mặc dù có một số tính năng mới chỉ có ở đây. Lưu ý rằng các hàm registerPHPFunctions() và setProfiling() không có sẵn do kiến ​​trúc của lớp (không phải là phần mở rộng PECL và tất cả ...).

Tài liệu tham khảo

+0

Cảm ơn các liên kết. – DanMan