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