Возможно ли / легко обновить библиотеку 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-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. ie $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, а в типичном случае нажмите «Ввод» полностью ), а также установить установщик PEAR, также известный как «менеджер пакетов PEAR».
После установки установщика PEAR вы можете установить из него XML_XSLT2Processor, просто набрав путь установки груши / в / 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 и всего …).
Рекомендации
Установка XSLT-процессора
Новости проекта XSLT2Processor
Информация о продукте Saxon-C
API-интерфейс Saxon-C PHP