>Incidently, what are the extensions I would require?
In Saxon, there's saxon:parse(). In other processors you could write something similar yourself as an extension function: something that takes a string is input, throws it at an XML parser, and returns the document node at the root of the resulting tree.
>It's a pity that disable-output-escaping isn't generally supported because it's such a useful feature.
Horribly useful. Its problem is that it breaks the architectural boundary between the transformation engine and the serializer. On the one hand this allows the XSLT coder to stray out of the transformation space and into the serialization space, which would otherwise be impossible. On the other hand, it eliminates the possibility of decoupling the transformation from the serialization, which is what you often want to do. Firefox, for example, doesn't support d-o-e because it doesn't actually serialize the output of the transformation: its renderer works directly from the tree representation.
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference