Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- DataGridViewColumnDividerDoubleClickEventArgs.cs
- EmptyControlCollection.cs
- ChannelDispatcherBase.cs
- DataAccessException.cs
- IDictionary.cs
- SQLMoney.cs
- _LoggingObject.cs
- RegexRunnerFactory.cs
- DataGridViewButtonColumn.cs
- DataGridViewColumnDesignTimeVisibleAttribute.cs
- GacUtil.cs
- RuntimeTrackingProfile.cs
- SoapEnumAttribute.cs
- User.cs
- KeyBinding.cs
- ByteStack.cs
- WorkflowMarkupSerializationManager.cs
- XmlEventCache.cs
- VectorKeyFrameCollection.cs
- StringUtil.cs
- XMLDiffLoader.cs
- Convert.cs
- UDPClient.cs
- FormViewCommandEventArgs.cs
- AlphabeticalEnumConverter.cs
- ValueProviderWrapper.cs
- MsmqAppDomainProtocolHandler.cs
- MetabaseReader.cs
- Operand.cs
- TriState.cs
- util.cs
- MobileRedirect.cs
- CacheMemory.cs
- AttributeCollection.cs
- SplitContainer.cs
- SeverityFilter.cs
- validationstate.cs
- Application.cs
- StateDesigner.CommentLayoutGlyph.cs
- ChangeBlockUndoRecord.cs
- Message.cs
- ZoomPercentageConverter.cs
- MDIClient.cs
- ParentUndoUnit.cs
- XmlSchemaImport.cs
- ObjectViewFactory.cs
- ServiceOperationInvoker.cs
- DataGridViewRowPostPaintEventArgs.cs
- IdentityHolder.cs
- SafeNativeMethodsOther.cs
- SaveFileDialog.cs
- MaterialGroup.cs
- Reference.cs
- WebPartConnectionsConnectVerb.cs
- LogArchiveSnapshot.cs
- XmlSerializerAssemblyAttribute.cs
- VisualState.cs
- BaseDataList.cs
- SingleStorage.cs
- XLinq.cs
- PageCache.cs
- TextureBrush.cs
- MimeMultiPart.cs
- X509Chain.cs
- ValidationError.cs
- CaseStatementSlot.cs
- TimeZoneInfo.cs
- HtmlInputText.cs
- SystemColorTracker.cs
- StringBuilder.cs
- MLangCodePageEncoding.cs
- CellTreeNode.cs
- SQLMoneyStorage.cs
- SolidBrush.cs
- ZipIOLocalFileHeader.cs
- SortDescription.cs
- DispatcherEventArgs.cs
- TriState.cs
- AnyReturnReader.cs
- PlatformCulture.cs
- AuthenticationModuleElement.cs
- EntityDataSource.cs
- MultiTrigger.cs
- XamlToRtfParser.cs
- SubMenuStyle.cs
- LocalizationComments.cs
- XmlNamespaceManager.cs
- ContainerAction.cs
- UnsafeNativeMethods.cs
- QilGeneratorEnv.cs
- DynamicActivityTypeDescriptor.cs
- ApplicationHost.cs
- GridViewDeleteEventArgs.cs
- XmlHierarchicalDataSourceView.cs
- FileDetails.cs
- XDeferredAxisSource.cs
- SmiGettersStream.cs
- DelegatingTypeDescriptionProvider.cs
- CssStyleCollection.cs
- FontStyleConverter.cs