Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / XmlUtils / System / Xml / Xsl / XsltOld / WriterOutput.cs / 1305376 / 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
- SHA512Managed.cs
- AnnotationHelper.cs
- InfoCard.cs
- ObjectItemAssemblyLoader.cs
- TextUtf8RawTextWriter.cs
- ObjectDataSourceStatusEventArgs.cs
- BitmapEffectState.cs
- DictionaryEntry.cs
- SoapClientProtocol.cs
- InternalCache.cs
- IERequestCache.cs
- OleDbParameter.cs
- DeploymentSectionCache.cs
- SqlFunctionAttribute.cs
- PropertyChangeTracker.cs
- FontCollection.cs
- SmiContextFactory.cs
- XmlBinaryReader.cs
- BadImageFormatException.cs
- DeviceSpecificDialogCachedState.cs
- RIPEMD160Managed.cs
- GreenMethods.cs
- MemberMaps.cs
- MultitargetingHelpers.cs
- HelpEvent.cs
- FlowDocumentView.cs
- OraclePermissionAttribute.cs
- XmlCharType.cs
- ChildDocumentBlock.cs
- DataKey.cs
- EntityViewGenerationAttribute.cs
- NameValueSectionHandler.cs
- SelectorAutomationPeer.cs
- UdpDiscoveryEndpoint.cs
- DecimalAverageAggregationOperator.cs
- ConcurrentBag.cs
- AspProxy.cs
- XmlAttributeAttribute.cs
- PeerNameRegistration.cs
- WebServiceData.cs
- ContextProperty.cs
- DBDataPermissionAttribute.cs
- MemoryRecordBuffer.cs
- SHA256Managed.cs
- CellParaClient.cs
- DataGridCellAutomationPeer.cs
- Delay.cs
- ControlBuilder.cs
- JsonReaderDelegator.cs
- OracleInternalConnection.cs
- SpellerHighlightLayer.cs
- WebBrowser.cs
- SqlConnectionString.cs
- DataGridViewRowPrePaintEventArgs.cs
- SqlDataSourceView.cs
- ProcessHostMapPath.cs
- ContextCorrelationInitializer.cs
- LinearGradientBrush.cs
- FreezableOperations.cs
- CodeSnippetTypeMember.cs
- ModelToObjectValueConverter.cs
- BezierSegment.cs
- DiscreteKeyFrames.cs
- Journal.cs
- ConfigurationManagerInternalFactory.cs
- GridViewItemAutomationPeer.cs
- IntranetCredentialPolicy.cs
- exports.cs
- LocalIdCollection.cs
- AssemblyHelper.cs
- InternalControlCollection.cs
- _OSSOCK.cs
- OracleParameterCollection.cs
- OptimalBreakSession.cs
- HoistedLocals.cs
- ResXResourceWriter.cs
- PersonalizableAttribute.cs
- ParsedAttributeCollection.cs
- XsdBuildProvider.cs
- CompileXomlTask.cs
- XmlNavigatorStack.cs
- EdmValidator.cs
- AssociationSetEnd.cs
- XmlSchemaValidationException.cs
- UInt32.cs
- SyntaxCheck.cs
- DataSet.cs
- URLIdentityPermission.cs
- AnimatedTypeHelpers.cs
- PackWebRequestFactory.cs
- DbProviderServices.cs
- EastAsianLunisolarCalendar.cs
- AnnotationAdorner.cs
- ReflectionPermission.cs
- XmlQualifiedNameTest.cs
- XmlNamespaceMappingCollection.cs
- Container.cs
- DesignTimeVisibleAttribute.cs
- TableLayoutRowStyleCollection.cs
- WebBrowsableAttribute.cs