Подтвердить что ты не робот

Обновление PHP XSLT-процессора до XSLT 2.0

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

Ответ 1

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

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

Для сборки расширения Saxon/C PHP создайте следующие пакеты: make, php-devel, (php5-dev/php55-dev/php55w-devel), apache2 или httpd, gcc-С++ или 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, просто набрав путь установки груши/в/the/tgz/arhive но, конечно, замените путь. Например, если версия 0.5.3 находится в той же папке, что и папка PHP, вы можете установить ее с помощью команды pear install 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
?>

Вам понадобится строка include в файле PHP, которая будет использовать класс, и это должно произойти, прежде чем вы будете использовать какие-либо функции этого класса. Остальная часть документации покажет вам, как построить класс XML_XSLT2Processor, а также объяснить каждый прототип функции и привести некоторые примеры.

Обратите внимание, что если вы работали с расширением PHP XSL перед использованием этого, единственное, что вы действительно должны знать, это функция XML_XSLT2Processor:: __ construct(). Остальное совместимо с ним, хотя есть некоторые новые функции, доступные только здесь. Имейте в виду, что функции registerPHPFunctions() и setProfiling() недоступны из-за архитектуры класса (не являющегося расширением PECL и всего...).

Ссылки