Я добавлю некоторые объяснения того, что происходит:)
Причина, по которой вы не получаете html-теги, заключается в том, что переменная $thing содержит фрагмент dom, а не строку: элемент value-of извлекает содержимое узла (-ов) так же, как и строку () Функция делает, поэтому не сериализует узлы.
Вместо этого вы получите строковое представление html-строки, которую вы имеете, и затем вы можете распечатать ее с помощью value-of и disable-output-escaping:
<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 ()")