/// <summary> /// Processes the XSL template. /// </summary> /// <param name="xslBody">The XSL body.</param> /// <param name="context">The context.</param> /// <returns>System.String.</returns> private string ProcessXslTemplate(string xslBody, IDictionary <string, object> context) { // 1. Serialize all context variables into XML using (var stream = new MemoryStream()) { // Start creating xml document using (var exportWriter = new NoNamespacesXmlTextWriter(stream)) { // Start the Xml Document exportWriter.WriteStartDocument(); exportWriter.WriteStartElement("ContextDoc", ""); // Cycle through dictionary foreach (var key in context.Keys) { var contextObject = context[key]; var serializer = new DataContractSerializer(contextObject.GetType()); serializer.WriteObject(exportWriter, contextObject); } exportWriter.WriteEndElement(); // End of ContextDoc exportWriter.WriteEndDocument(); exportWriter.Flush(); //exportWriter.Close(); // 2. Locate XSL Template using (var xslStream = new MemoryStream()) { var bytes = Encoding.UTF8.GetBytes(xslBody); xslStream.Write(bytes, 0, bytes.Length); xslStream.Position = 0; using (var reader = XmlReader.Create(xslStream)) { var xslt = new XslCompiledTransform(); xslt.Load(reader); // 3. Transform Content stream.Position = 0; var pathDoc = new XPathDocument(stream); using (var writer = new StringWriter()) { xslt.Transform(pathDoc, null, writer); // Return contents return(writer.ToString()); } } } } } }
/// <summary> /// Processes the XSL template. /// </summary> /// <param name="xslBody">The XSL body.</param> /// <param name="context">The context.</param> /// <returns>System.String.</returns> private string ProcessXslTemplate(string xslBody, IDictionary<string, object> context) { // 1. Serialize all context variables into XML using (var stream = new MemoryStream()) { // Start creating xml document using (var exportWriter = new NoNamespacesXmlTextWriter(stream)) { // Start the Xml Document exportWriter.WriteStartDocument(); exportWriter.WriteStartElement("ContextDoc", ""); // Cycle through dictionary foreach (var key in context.Keys) { var contextObject = context[key]; var serializer = new DataContractSerializer(contextObject.GetType()); serializer.WriteObject(exportWriter, contextObject); } exportWriter.WriteEndElement(); // End of ContextDoc exportWriter.WriteEndDocument(); exportWriter.Flush(); //exportWriter.Close(); // 2. Locate XSL Template using (var xslStream = new MemoryStream()) { var bytes = Encoding.UTF8.GetBytes(xslBody); xslStream.Write(bytes, 0, bytes.Length); xslStream.Position = 0; using (var reader = XmlReader.Create(xslStream)) { var xslt = new XslCompiledTransform(); xslt.Load(reader); // 3. Transform Content stream.Position = 0; var pathDoc = new XPathDocument(stream); using (var writer = new StringWriter()) { xslt.Transform(pathDoc, null, writer); // Return contents return writer.ToString(); } } } } } }