Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / XmlUtils / System / Xml / Xsl / XsltOld / WriterOutput.cs / 1 / WriterOutput.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- namespace System.Xml.Xsl.XsltOld { using Res = System.Xml.Utils.Res; using System; using System.Diagnostics; using System.Xml; using System.Xml.XPath; using System.Collections; internal class WriterOutput : RecordOutput { private XmlWriter writer; private Processor processor; internal WriterOutput(Processor processor, XmlWriter writer) { if (writer == null) { throw new ArgumentNullException("writer"); } this.writer = writer; this.processor = processor; } // RecordOutput interface method implementation // public Processor.OutputResult RecordDone(RecordBuilder record) { BuilderInfo mainNode = record.MainNode; switch (mainNode.NodeType) { case XmlNodeType.Element: this.writer.WriteStartElement(mainNode.Prefix, mainNode.LocalName, mainNode.NamespaceURI); WriteAttributes(record.AttributeList, record.AttributeCount); if (mainNode.IsEmptyTag) { this.writer.WriteEndElement(); } break; case XmlNodeType.Text: case XmlNodeType.Whitespace: case XmlNodeType.SignificantWhitespace: this.writer.WriteString(mainNode.Value); break; case XmlNodeType.CDATA: Debug.Assert(false, "XSLT never gives us CDATA"); this.writer.WriteCData(mainNode.Value); break; case XmlNodeType.EntityReference: this.writer.WriteEntityRef(mainNode.LocalName); break; case XmlNodeType.ProcessingInstruction: this.writer.WriteProcessingInstruction(mainNode.LocalName, mainNode.Value); break; case XmlNodeType.Comment: this.writer.WriteComment(mainNode.Value); break; case XmlNodeType.Document: break; case XmlNodeType.DocumentType: this.writer.WriteRaw(mainNode.Value); break; case XmlNodeType.EndElement: this.writer.WriteFullEndElement(); break; case XmlNodeType.None: case XmlNodeType.Attribute: case XmlNodeType.Entity: case XmlNodeType.Notation: case XmlNodeType.DocumentFragment: case XmlNodeType.EndEntity: break; default: Debug.Fail("Invalid NodeType on output: " + mainNode.NodeType); break; } record.Reset(); return Processor.OutputResult.Continue; } public void TheEnd() { this.writer.Flush(); this.writer = null; } private void WriteAttributes(ArrayList list, int count) { Debug.Assert(list.Count >= count); for (int attrib = 0; attrib < count; attrib ++) { Debug.Assert(list[attrib] is BuilderInfo); BuilderInfo attribute = (BuilderInfo) list[attrib]; this.writer.WriteAttributeString(attribute.Prefix, attribute.LocalName, attribute.NamespaceURI, attribute.Value); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- namespace System.Xml.Xsl.XsltOld { using Res = System.Xml.Utils.Res; using System; using System.Diagnostics; using System.Xml; using System.Xml.XPath; using System.Collections; internal class WriterOutput : RecordOutput { private XmlWriter writer; private Processor processor; internal WriterOutput(Processor processor, XmlWriter writer) { if (writer == null) { throw new ArgumentNullException("writer"); } this.writer = writer; this.processor = processor; } // RecordOutput interface method implementation // public Processor.OutputResult RecordDone(RecordBuilder record) { BuilderInfo mainNode = record.MainNode; switch (mainNode.NodeType) { case XmlNodeType.Element: this.writer.WriteStartElement(mainNode.Prefix, mainNode.LocalName, mainNode.NamespaceURI); WriteAttributes(record.AttributeList, record.AttributeCount); if (mainNode.IsEmptyTag) { this.writer.WriteEndElement(); } break; case XmlNodeType.Text: case XmlNodeType.Whitespace: case XmlNodeType.SignificantWhitespace: this.writer.WriteString(mainNode.Value); break; case XmlNodeType.CDATA: Debug.Assert(false, "XSLT never gives us CDATA"); this.writer.WriteCData(mainNode.Value); break; case XmlNodeType.EntityReference: this.writer.WriteEntityRef(mainNode.LocalName); break; case XmlNodeType.ProcessingInstruction: this.writer.WriteProcessingInstruction(mainNode.LocalName, mainNode.Value); break; case XmlNodeType.Comment: this.writer.WriteComment(mainNode.Value); break; case XmlNodeType.Document: break; case XmlNodeType.DocumentType: this.writer.WriteRaw(mainNode.Value); break; case XmlNodeType.EndElement: this.writer.WriteFullEndElement(); break; case XmlNodeType.None: case XmlNodeType.Attribute: case XmlNodeType.Entity: case XmlNodeType.Notation: case XmlNodeType.DocumentFragment: case XmlNodeType.EndEntity: break; default: Debug.Fail("Invalid NodeType on output: " + mainNode.NodeType); break; } record.Reset(); return Processor.OutputResult.Continue; } public void TheEnd() { this.writer.Flush(); this.writer = null; } private void WriteAttributes(ArrayList list, int count) { Debug.Assert(list.Count >= count); for (int attrib = 0; attrib < count; attrib ++) { Debug.Assert(list[attrib] is BuilderInfo); BuilderInfo attribute = (BuilderInfo) list[attrib]; this.writer.WriteAttributeString(attribute.Prefix, attribute.LocalName, attribute.NamespaceURI, attribute.Value); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- RtfToXamlReader.cs
- ZipIOLocalFileDataDescriptor.cs
- SqlClientFactory.cs
- FontSourceCollection.cs
- ImageConverter.cs
- Crypto.cs
- CryptoApi.cs
- ReferenceTypeElement.cs
- HotCommands.cs
- MultiplexingDispatchMessageFormatter.cs
- DataBindingHandlerAttribute.cs
- DrawingBrush.cs
- NullRuntimeConfig.cs
- SortFieldComparer.cs
- ProviderMetadata.cs
- HttpBindingExtension.cs
- StateDesigner.CommentLayoutGlyph.cs
- ValidationErrorCollection.cs
- RIPEMD160.cs
- AbandonedMutexException.cs
- RepeatEnumerable.cs
- XsltContext.cs
- PersianCalendar.cs
- FlowPosition.cs
- Binding.cs
- WebEventTraceProvider.cs
- XmlAnyAttributeAttribute.cs
- metadatamappinghashervisitor.hashsourcebuilder.cs
- DirectoryLocalQuery.cs
- SchemaInfo.cs
- PointLight.cs
- PrivilegedConfigurationManager.cs
- ComPlusServiceHost.cs
- Pair.cs
- WebPartMovingEventArgs.cs
- XmlDataImplementation.cs
- CompareValidator.cs
- OdbcPermission.cs
- EncodedStreamFactory.cs
- InternalConfigRoot.cs
- GroupBox.cs
- DnsPermission.cs
- WpfGeneratedKnownTypes.cs
- UnicodeEncoding.cs
- DelegatingConfigHost.cs
- WebContext.cs
- InitializationEventAttribute.cs
- SortExpressionBuilder.cs
- StringFunctions.cs
- RefreshPropertiesAttribute.cs
- ToolStripContentPanel.cs
- MulticastIPAddressInformationCollection.cs
- EdgeModeValidation.cs
- ExecutionScope.cs
- XamlDesignerSerializationManager.cs
- CompositeActivityValidator.cs
- IBuiltInEvidence.cs
- Header.cs
- SchemaSetCompiler.cs
- FastEncoder.cs
- Thickness.cs
- UnionCodeGroup.cs
- DiagnosticTraceSource.cs
- ContentType.cs
- UriSectionData.cs
- SafeCertificateContext.cs
- WebBrowsableAttribute.cs
- SqlDataSourceEnumerator.cs
- SchemaImporterExtensionElement.cs
- RectIndependentAnimationStorage.cs
- HttpCookiesSection.cs
- ArgumentValidation.cs
- PopupControlService.cs
- _LoggingObject.cs
- MappingModelBuildProvider.cs
- UserInitiatedNavigationPermission.cs
- Tuple.cs
- WebPartsPersonalization.cs
- ProcessHostServerConfig.cs
- WebGetAttribute.cs
- VirtualPathProvider.cs
- UnSafeCharBuffer.cs
- SqlDataSourceCustomCommandPanel.cs
- HwndStylusInputProvider.cs
- RepeaterItem.cs
- MasterPage.cs
- RangeContentEnumerator.cs
- AppDomainCompilerProxy.cs
- GuidelineSet.cs
- ComponentChangingEvent.cs
- HttpRequestBase.cs
- SynchronizedDispatch.cs
- SortDescriptionCollection.cs
- Flattener.cs
- Script.cs
- HtmlInputFile.cs
- validation.cs
- SendDesigner.xaml.cs
- StrokeNode.cs
- ColorAnimation.cs