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
- ReflectionTypeLoadException.cs
- MeasurementDCInfo.cs
- ToolStripContentPanel.cs
- SelectionItemProviderWrapper.cs
- storepermissionattribute.cs
- VariableBinder.cs
- StateValidator.cs
- WebProxyScriptElement.cs
- AnnotationAuthorChangedEventArgs.cs
- AttributeCollection.cs
- IxmlLineInfo.cs
- HtmlMeta.cs
- XPathNode.cs
- TimeSpanStorage.cs
- NodeLabelEditEvent.cs
- SqlNodeAnnotations.cs
- ByteRangeDownloader.cs
- Classification.cs
- AutomationEventArgs.cs
- UnsafeNativeMethodsTablet.cs
- sqlpipe.cs
- DispatcherExceptionFilterEventArgs.cs
- Scripts.cs
- BufferedGraphicsManager.cs
- AlphabeticalEnumConverter.cs
- CodeGotoStatement.cs
- NetworkCredential.cs
- WhereQueryOperator.cs
- PersistenceIOParticipant.cs
- ToolBar.cs
- AssociationSetEnd.cs
- COM2Properties.cs
- WebPartZoneCollection.cs
- FreeFormDesigner.cs
- ConfigurationLocation.cs
- DataGridHelper.cs
- BindStream.cs
- ActiveXHelper.cs
- RegexMatchCollection.cs
- datacache.cs
- SchemaDeclBase.cs
- CodeTypeDelegate.cs
- SqlDataSource.cs
- LayoutTable.cs
- SelectorAutomationPeer.cs
- CancelEventArgs.cs
- SafeProcessHandle.cs
- Clause.cs
- SettingsPropertyValueCollection.cs
- CompiledRegexRunnerFactory.cs
- TextEditorLists.cs
- PackageRelationship.cs
- HttpRequest.cs
- StrokeNodeData.cs
- UnauthorizedAccessException.cs
- ComNativeDescriptor.cs
- TextRangeSerialization.cs
- XamlSerializerUtil.cs
- FieldBuilder.cs
- TimeEnumHelper.cs
- WindowsFormsEditorServiceHelper.cs
- ConfigXmlDocument.cs
- CaseInsensitiveHashCodeProvider.cs
- WebPart.cs
- DataGridViewCellStyleConverter.cs
- Accessible.cs
- TemplateBuilder.cs
- CodeEventReferenceExpression.cs
- RouteCollection.cs
- recordstatefactory.cs
- TcpWorkerProcess.cs
- SolidColorBrush.cs
- TdsParser.cs
- PageThemeParser.cs
- UpdateTranslator.cs
- AttributeProviderAttribute.cs
- VirtualPathUtility.cs
- UriScheme.cs
- ConfigurationSectionGroup.cs
- CatalogPartChrome.cs
- MarginsConverter.cs
- tabpagecollectioneditor.cs
- AttributedMetaModel.cs
- StatusBarItem.cs
- CommentEmitter.cs
- HttpResponseHeader.cs
- StoragePropertyMapping.cs
- BlurEffect.cs
- SelectionItemProviderWrapper.cs
- SpecularMaterial.cs
- MonitorWrapper.cs
- AutomationInteropProvider.cs
- PropertyTab.cs
- WebPartVerb.cs
- CustomValidator.cs
- WebPartConnectionsCancelEventArgs.cs
- RectangleF.cs
- AsyncCompletedEventArgs.cs
- FormatSettings.cs
- RemoteWebConfigurationHostServer.cs