Вам не нужна промежуточная строка, вы можете создать XmlWriter, который записывает непосредственно в XmlNode:
XmlDocument doc = new XmlDocument();
using (XmlWriter xw = doc.CreateNavigator().AppendChild()) {
// Write to `xw` here.
// Nodes written to `xw` will not appear in the document
// until `xw` is closed/disposed.
}
и передайте xw в качестве результата преобразования.
NB. Некоторые части xsl: output будут игнорироваться (например, кодировка), поскольку XmlDocument будет использовать свои собственные настройки.