Do not use value-of , which gets the text value of the selected node. Instead, use copy-of , which copies the entire tree (nodes and everything) to the output:
<xsl:copy-of select="$htmlContent"/>
Here is a complete example:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:variable name="htmlContent"> <html><body>hiiii</body></html> </xsl:variable> <xsl:template match="/"> <xsl:element name="htmlText"> <xsl:copy-of select="$htmlContent"/> </xsl:element> </xsl:template> </xsl:stylesheet>
This will always produce xml:
<htmlText> <html> <body>hiiii</body> </html> </htmlText>
source share