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

Обычный механизм генерации с использованием xslt_processor такой:
$template_out = '&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;';<br/>
$template = file_get_contents($template);<br/>
 $proc = new XsltProcessor;<br/>
$xmlDoc = new DomDocument;<br/>
$xslDoc= new DomDocument;<br/>
$xmlDoc-&gt;loadXML($template_out);<br/>
$xslDoc-&gt;loadXML($template);<br/>
$proc-&gt;importStyleSheet($xslDoc);<br/>
$result = $proc-&gt;transformToXML($xmlDoc);


Нужно что-то вроде:
$template_out = '&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;<br/>
&lt;?xml-stylesheet href=&quot;default.xsl&quot; type=&quot;text/xsl&quot; ?&gt;';<br/>
 echo $template_out;



и выводится валидная страница (понятно, что она не выводится именно в таком варианте).

Есть ли решение?

Сейчас использую такой механизм:
$template = 'path/to/xsl-stylesheet';<br/>
$xsl = new DomDocument();<br/>
$xsl-&gt;load($template);<br/>
$inputDom = new DomDocument();<br/>
$inputDom-&gt;loadXML($template_out);<br/>
$inputDom-&gt;formatOutput = true;<br/>
$proc = new XsltProcessor();<br/>
$xsl = $proc-&gt;importStylesheet($xsl);<br/>
$newDom = $proc-&gt;transformToDoc($inputDom);<br/>
print $newDom-&gt;saveXML();



однако он не работает, я так понимаю в силу вложенных в default.xsl инклудов. Пытаюсь пофиксить ошибки, но такое ощущение, что делаю не то.

Это правильное решение или существуют еще какие-то?
  • Вопрос задан
  • 3410 просмотров
Решения вопроса 1
@cat_crash
Как то не очень поняна суть вопроса. Если вы о том что ваш скрипт отображается в браузере как HTML а не как XML то вам необходимо указать тип контента text/xml в заголовке:
header(«Content-type: text/xml»);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@cat_crash
тогда, предполагаю вам нужно обернуть вывод в CDATA php.net/manual/en/function.domdocument-create-cdata-section.php
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы