private static Stream Transform(XmlReader reader, Type map, System.Xml.Xsl.XsltArgumentList arguments) { if (_logger.IsDebugEnabled) { _logger.DebugFormat("About to execute transform '{0}'.", map.AssemblyQualifiedName); } var transformDescriptor = XsltCache.Instance[map]; using (reader) { var outputStream = new VirtualStream(DEFAULT_BUFFER_SIZE, DEFAULT_THRESHOLD_SIZE); var writerSettings = transformDescriptor.XslCompiledTransform.OutputSettings.Override( s => { s.CloseOutput = false; s.Encoding = Encoding.UTF8; }); using (var writer = XmlWriter.Create(outputStream, writerSettings)) { if (_logger.IsDebugEnabled) { _logger.DebugFormat("Executing transform '{0}'.", map.AssemblyQualifiedName); } var xsltArguments = transformDescriptor.Arguments.Union(arguments); transformDescriptor.XslCompiledTransform.Transform(reader, xsltArguments, writer); } outputStream.Seek(0, SeekOrigin.Begin); return(outputStream); } }
private static XLANGMessage Transform(MessageCollection messages, Type map, System.Xml.Xsl.XsltArgumentList arguments) { if (messages == null) { throw new ArgumentNullException(nameof(messages)); } if (messages.Count == 0) { throw new ArgumentException("MessageCollection is empty.", nameof(messages)); } if (map == null) { throw new ArgumentNullException(nameof(map)); } using (messages) { var resultContent = Transform((XmlReader)messages, map, arguments); var resultMessage = Message.Create(Service.RootService.XlangStore.OwningContext, resultContent); return(resultMessage); } }
private static XLANGMessage Transform(XlangMessageCollection messages, Type map, TrackingContext trackingContext, System.Xml.Xsl.XsltArgumentList arguments) { if (messages == null) { throw new ArgumentNullException("messages"); } if (messages.Count == 0) { throw new ArgumentException("XLangMessageCollection is empty.", "messages"); } if (map == null) { throw new ArgumentNullException("map"); } using (messages) { var resultContent = Transform(messages, map, arguments); var resultMessage = XlangMessage.Create(Service.RootService.XlangStore.OwningContext, resultContent); trackingContext.Apply(resultMessage); return(resultMessage); } }