(PHP 4 >= 4.0.6)
xslt_set_scheme_handlers — Задает обработчики схемы для XSLT-процессора
$xh
, array $handlers
)Регистрирует обработчики схемы (XPath обработчики) для документа.
xh
Идентификатор ссылки XSLT-процессора, созданный с помощью функции xslt_create().
handlers
Массив со следующими ключами: "get_all", "open", "get", "put", и "close".
Каждое значение массива должно быть именем функции или массивом в следующем формате: array($obj, "method").
Обратите внимание, наличие всех обработчиков схемы в массиве необязательно (хотя возможно), но каждый элемент массива должен строго соответствовать формату "обработчик" => "функция", описанному выше.
Ниже представлены объявления, которым функции-обработчики схемы должны соответствовать:
string get_all(resource processor, string scheme, string rest) resource open(resource processor, string scheme, string rest) int get(resource processor, resource fp, string &data) int put(resource processor, resource fp, string data) void close(resource processor, resource fp)
Эта функция не возвращает значения после выполнения.
Пример #1 Пример использования xslt_set_scheme_handlers()
В качастве примера представлена реализация PHP функции "file_exists()".
<?php
// Определение обработчика
function mySchemeHandler($processor, $scheme, $rest)
{
$rest = substr($rest,1); // чтобы удалить первый / автоматически добавленный движком
if ($scheme == 'file_exists') {
// результат представлен в виде небольшой XML строки
return '<?xml version="1.0" encoding="UTF-8"?><root>' . (file_exists($rest) ? 'true' : 'false') . '</root>';
}
}
$SchemeHandlerArray = array('get_all' => 'mySchemeHandler');
// запуск движка
$params = array();
$xh = xslt_create();
xslt_set_scheme_handlers($xh, $SchemeHandlerArray);
$result = xslt_process($xh, "myFile.xml", "myFile.xsl", NULL, array(), $params);
xslt_free($xh);
echo $result;
?>
Теперь можно проверить существование файлов прямо внутри стилевой таблицы:
<xsl:if test="document('file_exists:anotherXMLfile.xml')/root='true'"> <!-- The file exist --> </xsl:if>