Да, такой документ у меня есть. Я только не дочитал его

Ну, если проблема только в возможности создания некорректного XML, то вполне можно пользоваться для своих целей.
Хотя про ENTITY я немного не понял. Значит, их надо описать в DTD примерно так:
Код:

<!DOCTYPE content[
<!ENTITY nbsp " ">
<!ENTITY laquo "«">
<!ENTITY raquo "»">
]>
Но как в PHP прикрепить DTD к XML - не знаю... Пробовал через
DOMDocument::createEntityReference, но оно при использовании "в лоб" просто добавляет строку
& n b s p ; (или другую сущность) в конец XML, разрушая структуру.
PHP код:

$en1 = $xml->createEntityReference('laquo');
$xml->appendChild($en1);
$en1T = $xml->createTextNode("«");
$en1->appendChild($en1T);