public void TestFixtureSetUp() { // reason to do this at fixture setup time is to avoid the 1st XSLT test to pay the initialization cost of // these data structures, should one want to keep an eye on the timing reported by R# test runner _xslPart1 = MessageFactory.CreateEnvelope <Envelope>().OuterXml; _xslPart2 = MessageFactory.CreateMessage <Batch.Content>(ResourceManager.LoadString("Data.BatchContent.xml")).OuterXml; _xslTransformDescriptor = new XslCompiledTransformDescriptor(new XslCompiledTransformDescriptorBuilder(typeof(BatchContentToAnyEnvelope))); _xslNamespaceManager = new XmlNamespaceManager(new NameTable()); _xslNamespaceManager.AddNamespace("env", new SchemaMetadata(typeof(Envelope)).TargetNamespace); _xslNamespaceManager.AddNamespace("tns", new SchemaMetadata(typeof(Batch.Release)).TargetNamespace); }
public void SupportsXslTransformOfAggregatedXmlReaders() { using (var part1 = new StringStream(PART_1)) using (var part2 = new StringStream(PART_2)) using (var part3 = new StringStream(PART_3)) using (var composite = CompositeXmlReader.Create(new[] { XmlReader.Create(part1), XmlReader.Create(part2), XmlReader.Create(part3) })) { var xslTransformDescriptor = new XslCompiledTransformDescriptor(new XslCompiledTransformDescriptorBuilder(typeof(IdentityTransform))); var builder = new StringBuilder(); using (var writer = XmlWriter.Create(builder)) { xslTransformDescriptor.XslCompiledTransform.Transform(composite, xslTransformDescriptor.Arguments, writer !); } builder.GetReaderAtContent().ReadOuterXml().Should().Be(EXPECTED); } }
internal XsltArgumentList BuildArgumentList(XslCompiledTransformDescriptor descriptor, XsltArgumentList arguments) { // Ensures a fresh copy of descriptor.Arguments is returned should it be augmented with either the current // message context or specific arguments passed along the way. It is *detrimental* for the IBaseMessageContext // not to be shared across different transform executions! Notice that because XsltArgumentList.Union() yields // a new XsltArgumentList instance, it is not necessary to .Clone() descriptor.Arguments beforehand. if ((descriptor.ExtensionRequirements & ExtensionRequirements.MessageContext) == ExtensionRequirements.MessageContext) { arguments = descriptor.Arguments.Union(arguments); arguments.AddExtensionObject( BaseMessageContextFunctions.TARGET_NAMESPACE, new BaseMessageContextFunctions(_context, descriptor.NamespaceResolver)); return(arguments); } // If no specific arguments has been passed along then it is assumed that descriptor.Arguments references only // stateless extension objects and can consequently be shared across different transform executions. Again, // notice XsltArgumentList.Union() yields a new XsltArgumentList instance. return(arguments != null?descriptor.Arguments.Union(arguments) : descriptor.Arguments); }