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
- translator.cs
- InstallerTypeAttribute.cs
- Rect3DValueSerializer.cs
- XmlEventCache.cs
- TableRow.cs
- HGlobalSafeHandle.cs
- ExtensionWindow.cs
- safemediahandle.cs
- PackageProperties.cs
- CalendarButtonAutomationPeer.cs
- WebPartTransformer.cs
- SmiTypedGetterSetter.cs
- UInt64Converter.cs
- Crypto.cs
- MulticastIPAddressInformationCollection.cs
- XamlFrame.cs
- TextRangeProviderWrapper.cs
- MulticastDelegate.cs
- PolicyAssertionCollection.cs
- QueryOperationResponseOfT.cs
- WhiteSpaceTrimStringConverter.cs
- SetterBase.cs
- PropagatorResult.cs
- TiffBitmapDecoder.cs
- AssemblyBuilder.cs
- EventLogPermissionAttribute.cs
- EntitySetBase.cs
- DispatcherHooks.cs
- NameValueConfigurationElement.cs
- AnnotationDocumentPaginator.cs
- TrackBarRenderer.cs
- Internal.cs
- sqlmetadatafactory.cs
- SoapCodeExporter.cs
- DefaultMemberAttribute.cs
- RepeaterItemCollection.cs
- DataBindingHandlerAttribute.cs
- ByValueEqualityComparer.cs
- ConfigurationElement.cs
- Quaternion.cs
- DbXmlEnabledProviderManifest.cs
- AppDomainCompilerProxy.cs
- DefaultValueAttribute.cs
- CellParagraph.cs
- StructuredType.cs
- Inflater.cs
- ClientType.cs
- altserialization.cs
- ObjectListTitleAttribute.cs
- TreeNodeEventArgs.cs
- MLangCodePageEncoding.cs
- SqlColumnizer.cs
- WebPartEditVerb.cs
- ScopelessEnumAttribute.cs
- MsmqInputMessage.cs
- AttachedPropertyBrowsableAttribute.cs
- ColumnWidthChangedEvent.cs
- ReferencedType.cs
- SafeTimerHandle.cs
- BaseTypeViewSchema.cs
- TimeoutException.cs
- CaseInsensitiveComparer.cs
- TypeGeneratedEventArgs.cs
- Tokenizer.cs
- WindowHideOrCloseTracker.cs
- CalendarDay.cs
- BounceEase.cs
- ADMembershipUser.cs
- PlanCompiler.cs
- ColorContext.cs
- StateInitialization.cs
- WebPartZoneBase.cs
- TemplateBaseAction.cs
- GeneralTransformCollection.cs
- XmlObjectSerializerReadContext.cs
- ItemContainerPattern.cs
- BinHexEncoding.cs
- ImageSourceValueSerializer.cs
- RadioButtonList.cs
- DbProviderFactoriesConfigurationHandler.cs
- DBParameter.cs
- MetadataArtifactLoaderResource.cs
- altserialization.cs
- DataGridViewColumnTypeEditor.cs
- ImageClickEventArgs.cs
- RegisteredHiddenField.cs
- DataGridColumnCollection.cs
- ProcessModuleCollection.cs
- X509Certificate2.cs
- PackUriHelper.cs
- AttributeCollection.cs
- MetadataItem_Static.cs
- BrowserCapabilitiesCompiler.cs
- InlineCollection.cs
- PackWebResponse.cs
- IndentTextWriter.cs
- CompositeFontFamily.cs
- HostProtectionException.cs
- StringOutput.cs
- EnumerableRowCollectionExtensions.cs