Дипломные работы, курсовые проекты на заказ, контрольные работы на заказ

 
Начертательная геометрия Практикум по решению задач Геометрическое черчение Инженерная графика ЕСКД Кратные интегралы Математический анализ Матрицы Пределы Производные Векторная алгебра Интегральное исчисление ТФКП Ядерная физика Электростатика Магнетизм Оптика Информационные технологии
Учебник РНР
Назад Вперёд

xslt_process

(PHP 4 >= 4.0.3)

xslt_process - выполняет XSLT-трансформацию.

Описание

mixed xslt_process (resource xh, string xml, string xsl [, string result [, array arguments [, array parameters]]])

xslt_process() это краеугольный камень нового расширения XSLT. Она даёт возможность выполнять XSLT-трансформацию с использованием почти всех типов источников ввода. Это делается с помощью буферов аргументов -- концепции, взятой из Sablotron XSLT-процессора (в настоящее время - единственного XSLT-процессора, который поддерживается данным расширением).

Самая простая трансформация функцией xslt_process() - это трансформация XML-файла XSLT-файлом с помещением результата в третий файл, содержащий новый XML (или HTML)-документ. Сделать это с помощью sablotron действительно довольно легко ...

Пример 1. Использование xslt_process() для трансформации XML-файла и
XSL-файла в новый XML-файл
<?php 
// Разместить новый XSLT-процессор $xh = xslt_create(); // Обработать документ 
if (xslt_process($xh, 'sample.xml', 'sample.xsl', 'result.xml')) { print "SUCCESS, 
sample.xml was transformed by sample.xsl into result.xml"; print ", result.xml 
has the following contents\n<br>\n"; print "<pre>\n"; readfile('result.xml'); 
print "</pre>\n"; } else { print "Sorry, sample.xml could not be transformed 
by sample.xsl into"; print " result.xml the reason is that " . xslt_error($xh) 
. " and the "; print "error code is " . xslt_errno($xh); } xslt_free($xh); ?>

Хотя эта функциональность великолепна, часто, особенно в окружении web, вам понадобится выводить результату напрямую. Следовательно, если вы опустите третий аргумент для функции xslt_process() (или предоставите NULL-значение этого аргумента), она автоматически возвратит значение XSLT-трансформации, вместо записи его в файл ...

Пример 2. Использование xslt_process() для трансформации XML-файла и XSL-файла в переменную, содержащую результирующие XML-данные
<?php // Разместить новый XSLT-процессор $xh = xslt_create(); // 
обработать документ, возвращая результат в переменной $result $result = xslt_process($xh, 
'sample.xml', 'sample.xsl'); if ($result) { print "SUCCESS, sample.xml was transformed 
by sample.xsl into the \$result"; print " variable, the \$result variable has 
the following contents\n<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); ?>

Это были два простейших случая XSLT-транфсормации, и я могу с уверенностью сказать - самые распространённые случаи, однако иногда вы получаете ваш XML и XSLT-код из внешних источников, таких как БД или сокет. В этих случаях у вас будут XML и/или XSLT-данные в переменной -- и в работающих приложениях перегрузка при дампе их в файл может оказаться значительной. Вместо файлов как аргументов XML и XSLT для xslt_process(), вы можете специфицировать "заглушки документов", которые затем замещаются значениями из массива аргументов (5-й параметр функции xslt_process()). Далее идёт пример процессинга XML и XSLT в результирующую переменную вообще без использования файлов.

Пример 3. Использование xslt_process() для трансформации переменной, содержащей XML-данные, и переменной, содержащей XSL-данные, в переменную, содержащую результирующие XML-данные
<?php 
// $xml и $xsl содержат XML и XSL-данные $arguments = array( '/_xml' => $xml, 
'/_xsl' => $xsl ); // разместить новый XSLT-процессор $xh = xslt_create(); 
// обработать документ $result = xslt_process($xh, 'arg:/_xml', 'arg:/_xsl', NULL, 
$arguments); if ($result) { print "SUCCESS, sample.xml was transformed by sample.xsl 
into the \$result"; print " variable, the \$result variable has the following 
contents\n<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); ?>

Наконец, последний аргумент функции xslt_process() это любые параметры, которые вы хотите передать в XSLT-документ. Можно получить доступ к этим параметрам внутри ваших XSL-файлов с помощью инструкции <xsl:param name="parameter_name">.


НазадОглавление Вперёд
xslt_freeВверхxslt_set_base