I can offer one solution, though it needs to change your source XML documents slightly:
You can add some element, say having element type "doc-type", to XML sources, like this:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE myDocument PUBLIC "-//arvin//DTD myDocument v1.0//EN//XML" "myDTD.dtd" [
<!ENTITY abc SYSTEM "abc" NDATA image>
<!ENTITY xyz SYSTEM "xyz" NDATA image>]>
<root>
<doc-type>
<![CDATA[<!DOCTYPE myDocument PUBLIC "-//arvin//DTD myDocument v1.0//EN//XML" "myDTD.dtd" [
<!ENTITY abc SYSTEM "abc" NDATA image>
<!ENTITY xyz SYSTEM "xyz" NDATA image>]>]]>
</doc-type>
<!--
...
-->
</root>
Then you can use "disable-output-escaping" attribute again to output the stuff as markup.
Since you have no access to unparsed entity declarations in the XSLT data model, the only way(at least, the most obvious way for me) you can pass your entity-declarations through XSLT transformation to output XML document is to wrap them into some element.
Regards,
Armen