I will add some explanation of what is happening :)
The reason you don't get html tags is because the $ something variable contains the dom fragment rather than the string: the value element retrieves the contents of node (s) in the same way as string (), so it does not serialize the nodes.
Instead, a string representation of the html string would be presented, and you can print it with the value and disable-output-output:
<xsl:variable name="something"><![CDATA[<p>Hi there</p><p>How are you today?</p>]]></xsl:variable>
(. https://msdn.microsoft.com/en-us/library/ms256181(v=vs.110).aspx " , string()" )