Возможно ли/легко обновить библиотеку 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
Возможно ли/легко обновить библиотеку 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
Проект 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 и всего...).
Ссылки