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);
     }
 }
Пример #3
0
 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);
     }
 }