LINUX.ORG.RU

Генерация xml-файла с включенной xslt-таблицей без XsltProcessor php


0

1

Обычный механизм генерации с использованием xslt_processor такой:

$template_out = '<?xml version="1.0" encoding="UTF-8"?><page timestamp="'.time().'" title="Документ" versiondev="false"><tage></tage></page>';
$template = file_get_contents($template);
               $proc = new XsltProcessor;
$xmlDoc = new DomDocument;
$xslDoc= new DomDocument;
$xmlDoc->loadXML($template_out);
$xslDoc->loadXML($template);
$proc->importStyleSheet($xslDoc);
$result = $proc->transformToXML($xmlDoc);
Нужно что-то вроде:
$template_out = '<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="default.xsl" type="text/xsl" ?><page  timestamp="'.time().'" title="Документ" versiondev="false"><tage></tage></page>';
                echo $template_out;
и выводится валидная страница (понятно, что она не выводится именно в таком варианте).
Есть ли решение?
Сейчас использую такой механизм:
$xsl = new DomDocument();
$xsl->load($template);
$inputDom = new DomDocument();
$inputDom->loadXML($template_out);
$inputDom->formatOutput = true;
$proc = new XsltProcessor();
$xsl = $proc->importStylesheet($xsl);
$newDom = $proc->transformToDoc($inputDom);
print $newDom->saveXML();
однако он не работает, я так понимаю в силу вложенных в default.xsl инклудов. Пытаюсь пофиксить ошибки, но такое ощущение, что делаю не то.
Это правильное решение или существуют еще какие-то?

Решение

Для будущего.
Для того чтобы работал вариант с выводом xml в котором инклудится xsl-таблица необходимо указать заголовок

header("Content-type: text/xml");

terrakot
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.