Convertir XML a texto escapado en XSLT

¿Cómo puedo convertir el siguiente XML a un texto escapado usando XSLT?

Fuente:

<?xml version="1.0" encoding="utf-8"?>
<abc>
  <def ghi="jkl">
    mnop
  </def>
</abc>

Salida:

<TestElement>&lt;?xml version="1.0" encoding="utf-8"?&gt;&lt;abc&gt;&lt;def ghi="jkl"&gt;
    mnop
  &lt;/def&gt;&lt;/abc&gt;</TestElement>

Actualmente, estoy probando el siguiente XSLT y parece que no funciona correctamente:

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" encoding="utf-8" />
  <xsl:template match="/">
    <xsl:variable name="testVar">
      <xsl:copy>
        <xsl:apply-templates select="@* | node()"/>
      </xsl:copy>
    </xsl:variable>

    <TestElement>
      <xsl:value-of select="$testVar"/>
    </TestElement>
  </xsl:template>
</xsl:stylesheet>

La salida de la declaración XSLT por .NET XslCompiledTransform se presenta como la siguiente:

<?xml version="1.0" encoding="utf-8"?><TestElement>

    mnop

</TestElement>

Respuestas a la pregunta(8)

Su respuesta a la pregunta