DOM: создать XML документ с сылкой на XSL и DTD

StreamUser

Новичок
DOM: создать XML документ с сылкой на XSL и DTD

приветствую.

разъясните пожалуйста, каким образом через DOM можно создать валидный XML документ с ссылкой на внешний CSS?

казалось бы, тривиальная вещь, но никак не получается сделать всё грамотно, без костылей =(
вот пробую на примере XHTML 1.1

DOMImplementation::createDocument создаёт пустой документ:
PHP:
$dtd = DOMImplementation::createDocumentType('html', '-//W3C//DTD XHTML 1.1//EN', 'http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd');
$imp = DOMImplementation::createDocument('http://www.w3.org/1999/xhtml', 'html', $dtd);
$imp->formatOutput = true;
$imp->encoding = 'UTF-8';
echo $imp->saveXML();
корневой элемент дополняется,
но как продолжить наполнение документа?

при помощи createProcessingInstruction можно задать ссылку на инструкции по обработке:
PHP:
$xml = new DOMDocument( "1.0", "UTF-8" );
$xml->formatOutput = true;
$css = $xml->createProcessingInstruction('xml-stylesheet', 'type="text/css" href="./default.css" media="screen" title="Default"');
$xml->appendChild($css);
echo $xml->saveXML();
как совместить всё это в одну конструкцию ума не приложу, вторую ночь уже безрезультатно гуглю с перерывами на чай.
а в результате хотелось бы получить примерно следующее:
Код:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="./default.css" media="screen" title="Default"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>...</head>
<body>...</body>
</html>
 

slach

Новичок
примерно так

PHP:
<?php
$dtd = DOMImplementation::createDocumentType('html', '-//W3C//DTD XHTML 1.1//EN', 'http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd');
$xml = DOMImplementation::createDocument('http://www.w3.org/1999/xhtml', 'html', $dtd);
$xml->formatOutput = true;
$xml->encoding = 'UTF-8';
$css = $xml->createProcessingInstruction('xml-stylesheet', 'type="text/css" href="./default.css" media="screen" title="Default"');
$xml->insertBefore($css,$xml->documentElement);
echo $xml->saveXML();
?>
у тебя проблема в том, что ты в DOMDocument инструкцию когда позже создаешь она ПОСЛЕ корневого тега добавляется
а надо перед

перед DOCTYPE к сожалению не получится добавить
но по моему Processing Instructions не обязательно должны идти ПЕРЕД doctype
 
Сверху