Как включить функции XSLT в PHP 5?
Я хочу распечатать xml-файл в виде вложенного списка HTML с помощью xslt, и, насколько я знаю, код правильный, однако я получаю эту ошибку
неустранимая ошибка: вызов неопределенной функции xslt_create ()
что, я полагаю, означает, что функции xslt не были включены. Как включить эти функции в PHP? Есть ли файл php, который мне нужно включить (например, как работают библиотеки Javascript), или это что-то более сложное? Я принимаю с MediaTemple.
вот код php, который я использую:
<?php
// Allocate a new XSLT processor
$xh = xslt_create();
// Process the document, returning the result into the $result variable
$result = xslt_process($xh, 'armstrong.xml', 'familyToNestedList.xsl');
if ($result) {
print "SUCCESS, sample.xml was transformed by sample.xsl into the $result";
print " variable, the $result variable has the following contentsn<br>n";
print "<pre>n";
print $result;
print "</pre>n";
}
else {
print "Sorry, sample.xml could not be transformed by sample.xsl into";
print " the $result variable the reason is that " . xslt_error($xh) .
print " and the error code is " . xslt_errno($xh);
}
xslt_free($xh);
?>
спасибо заранее!
3 ответов
вы должны скомпилировать PHP С поддержкой этого и убедитесь, что у вас есть все необходимые зависимости. Пожалуйста, смотрите соответствующие главы в руководство PHP для XSLT.
главы требования
для этого расширения требуется расширение libxml PHP. Это означает, что передача --enable-libxml также требуется, хотя это неявно выполняется, поскольку libxml включен по умолчанию. Это расширение использует Sablotron и expat, которые можно найти в " http://freshmeat.net/projects/sablotron/. Предоставляются двоичные файлы,а также источник. Включите с помощью опции --with-xslt с PHP 4.
главы установка
на Unix, запустить configure с опцией --enable-на XSLT-с-с XSLT-sablot вариантов. Библиотека Sablotron должна быть установлена где-то, где ваш компилятор может найти он. Убедитесь, что у вас есть те же библиотеки, связанные с библиотекой Sablotron, что и библиотеки, связанные с PHP. Параметры конфигурации: --with-expat-dir=DIR --with-iconv-dir=DIR помогут вам указать их. При запросе поддержки всегда упоминайте эти директивы, и есть ли другие версии этих библиотек, установленных в вашей системе где-то. Естественно, укажите все номера версий.
на рекомендуемое расширение для использования XSL преобразования с PHP5 - это XSL. Если все, что вам нужно сделать, это преобразовать два документа, как показано в вашем примере, рассмотрим пример из Руководство по PHP:
$xml = new DOMDocument;
$xml->load('collection.xml');
$xsl = new DOMDocument;
$xsl->load('collection.xsl');
// Configure the transformer
$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl); // attach the xsl rules
echo $proc->transformToXML($xml);
на transformToXML
метод вернет преобразованный документ или FALSE
, поэтому вы можете сохранить if / else из своего кода. В любом случае обновление кода должно быть тривиальным.
в зависимости от вашего дистрибутива linux, вы можете просто установить модуль php5-xsl, добавить строку "extension=php_xsl.Итак, " к вашему php.ini-файл и перезапустите сервер apache2.
Это сработало для меня на Ubuntu 11.10. Вы можете ввести "sudo apt-get install php5-xsl" в командную строку для установки php5-xml.
Ну, это очень просто, но на php.net его можно было бы объяснить более подробно.
Я использую один контейнер docker, содержащий базу ubuntu и использующий php-fpm.
шаги по установке этого расширения в моем контексте были:
первое расширение поиска xsl в репозитории linux apt - поиск кэша xsl
Я закончил тем, что нашел php5-xsl, поэтому это была только установка apt-get install php5-xsl
что процесс установки установки конфигурация уже добавлена, если не происходит, просто сделайте сами ВИМ файл /etc/php5 с/модов-доступно и xsl.ini
вставить этот контент: расширение=xsl.так что
(очевидно, что пути соответствуют вашим настройкам конфигурации php, но мой пример-конфигурация по умолчанию)
перезапустите php fpm и готово!