private void RunRenderXmlTransform(IStreamGen sg, MemoryStreamGen msg) { try { string file; if (_Report.DataTransform[0] != Path.DirectorySeparatorChar) { file = this.Folder + Path.DirectorySeparatorChar + _Report.DataTransform; } else { file = this.Folder + _Report.DataTransform; } XmlUtil.XslTrans(file, msg.GetText(), sg.GetStream()); } catch (Exception ex) { rl.LogError(8, "Error processing DataTransform " + ex.Message + "\r\n" + ex.StackTrace); } finally { msg.Dispose(); } return; }
// Renders the report; RunGetData must be run before this. public void RunRender(IStreamGen sg, OutputPresentationType type) { if (sg == null) { throw new ArgumentException("IStreamGen argument cannot be null.", "sg"); } PageNumber.RuntimePageNumber = 1; // reset page numbers TotalPages.RuntimePageCount = 1; IPresent ip; MemoryStreamGen msg = null; switch (type) { case OutputPresentationType.PDF: ip = new RenderPdf(this, sg); break; case OutputPresentationType.XML: if (this.DataTransform != null && DataTransform.Length > 0) { msg = new MemoryStreamGen(); ip = new RenderXml(this, msg); } else { ip = new RenderXml(this, sg); } break; case OutputPresentationType.HTML: default: ip = new RenderHtml(this, sg); break; } Run(ip); // When msg isn't null we have to do a datatransform on the XML in the data stream if (msg != null) { try { string file; if (this.DataTransform[0] != Path.DirectorySeparatorChar) { file = this.Folder + Path.DirectorySeparatorChar + _DataTransform; } else { file = this.Folder + _DataTransform; } XmlUtil.XslTrans(file, msg.GetText(), sg.GetStream()); } catch (Exception ex) { this.rl.LogError(8, "Error processing DataTransform " + ex.Message + "\r\n" + ex.StackTrace); } finally { msg.Dispose(); } } sg.CloseMainStream(); return; }