Обновите процессор PHP XSLT до XSLT 2.0 - PullRequest
14 голосов
/ 06 октября 2010

Возможно ли / легко обновить библиотеку 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 

1 Ответ

15 голосов
/ 18 мая 2012

Проект Saxon-C предоставляет PHP API для своей реализации XSLT 2.0.

Вот основной процесс установки:

Для сборки расширения PHP Saxon / C на вашем компьютере должны быть следующие пакеты: 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, используются для обеспечения процессора XSLT по умолчанию для PHP. Проект XML_XSLT2Processor предназначен для предоставления пути обновления.

Вот основной процесс установки:

Следуйте инструкциям на сайте процессора, который вы хотите использовать для получения инструкций по установке этого процессора XSLT. По сути, вам потребуется извлечь двоичный файл процессора в какой-либо каталог.

После настройки процессора вы можете загрузить XML_XSLT2Processor. Использование программы установки PEAR

Если у вас еще нет установщика PEAR, ознакомьтесь с инструкциями по установке на сайте PEAR (в основном в Windows вы запускаете файл go-pear.bat в папке PHP и в типичном случае нажимаете «Enter»). полностью) и установите программу установки PEAR, также называемую «Менеджер пакетов PEAR».

Когда у вас есть установщик PEAR, вы можете установить из него XML_XSLT2Processor, просто набрав путь установки груши / к / архиву / tgz / но заменить путь конечно. Например, если версия 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 и все ...).

Ссылки

...