XslTransform trans = new XslTransform();
trans.Load(new XmlTextReader(new StringReader(transform)));
XmlDocument doc = new XmlDocument();
doc.LoadXml(source);
// string builder (with xml writer)
StringBuilder sb = new StringBuilder();
XmlWriter xmlWriter = new XmlTextWriter(new StringWriter(sb));
trans.Transform(doc, null, xmlWriter);
Console.WriteLine("String Builder + XML Writer");
Console.WriteLine("===============================");
Console.WriteLine(sb.ToString());
// string builder
StringBuilder sb4UseWithoutXmlWriter = new StringBuilder();
TextWriter stringWriter = new StringWriter(sb4UseWithoutXmlWriter);
trans.Transform(doc, null, stringWriter);
Console.WriteLine("\nString Builder + StringWriter");
Console.WriteLine("===============================");
Console.WriteLine(sb4UseWithoutXmlWriter.ToString());
//memory stream (no xml writer)
MemoryStream memStream4UseWithoutXmlWriter = new MemoryStream();
trans.Transform(doc, null, memStream4UseWithoutXmlWriter);
memStream4UseWithoutXmlWriter.Flush();
memStream4UseWithoutXmlWriter.Seek(0, SeekOrigin.Begin);
Console.WriteLine("\nMemory Stream (no XML Writer)");
Console.WriteLine("===============================");
StreamReader reader2 = new StreamReader(memStream4UseWithoutXmlWriter);
Console.WriteLine(reader2.ReadToEnd());
Console.ReadLine();