I would suggest, looking at the XML-Link spec, that the clean way to mix
and match is to use simple links with the attribute specifications:
SHOW="EMBED" ACTUATE="AUTO"
Have your chunk of HTML as a separate document (which can be valid or
well-formed, as you wish), and just point to it. This is a fragment from
an object record in a museum catalogue, where the artist's biographical
details are stored in a separate XML document with a different DTD:
<production>
<person ROLE="artist">Mathias, William
<description HREF="mathiasw.xml" SHOW="EMBED" ACTUATE="AUTO"/>
</person>
On hitting the empty <description> element, the XML processor will go
off and read mathias.xml. This will be parsed separately, and probably
held separately in memory. It is a genuinely separate document with its
own namespace and so on. But _for_the_purposes_of_display_and_processin
g_ it is 'inserted' into the source document at the point the
<description> element occurs. And ACTUATE="AUTO" says that it is, in
effect, a necessary part of the catalogue record.
If you want to physically embed a chunk of HTML into your document which
conforms to a non-HTML DTD, surely you have to extend your DTD as Peter
has done. And once you have put the HTML element types into your DTD,
you're not really 'mixing and matching' in the sense of this discussion:
just borrowing a bunch of element types from another DTD.
Richard Light