Instead of
<xsl:value-of select="$request"/>
do
<xsl:copy-of select="$request"/>
You can't rely on disable-output-escaping working when writing to a variable. It's an instruction to the serializer, and only takes effect if the system decides to serialize the tree. I can't see why you want the CDATA section anyway - the purpose of CDATA is to say that things like <a>..</a> which look like XML markup are not to be treated as XML markup, whereas it sounds as if you actually do want them treated as markup.
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference