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
- DataGridViewTextBoxColumn.cs
- TableLayoutColumnStyleCollection.cs
- AsyncResult.cs
- DiffuseMaterial.cs
- InstancePersistence.cs
- DataBinding.cs
- DetailsViewDeletedEventArgs.cs
- TabControlCancelEvent.cs
- AncillaryOps.cs
- ScriptBehaviorDescriptor.cs
- mil_sdk_version.cs
- PeerPresenceInfo.cs
- RequestCacheManager.cs
- XappLauncher.cs
- PageRanges.cs
- XmlTextWriter.cs
- PictureBox.cs
- LayoutDump.cs
- ObjectDisposedException.cs
- DataGrid.cs
- TokenizerHelper.cs
- DrawingGroup.cs
- SystemSounds.cs
- AuthorizationRuleCollection.cs
- TextUtf8RawTextWriter.cs
- TextAutomationPeer.cs
- ConfigurationSectionCollection.cs
- ServiceManager.cs
- BypassElement.cs
- DoubleLinkListEnumerator.cs
- X509CertificateChain.cs
- Rule.cs
- BitmapEffectInput.cs
- NotSupportedException.cs
- TextRange.cs
- HtmlLink.cs
- ChannelServices.cs
- KeyPullup.cs
- ModelItemCollectionImpl.cs
- PrintPageEvent.cs
- HitTestDrawingContextWalker.cs
- ComboBox.cs
- XmlSchemaSequence.cs
- TextFormatterContext.cs
- DesignerLabelAdapter.cs
- BuildProvidersCompiler.cs
- AutomationFocusChangedEventArgs.cs
- GenericAuthenticationEventArgs.cs
- WebPartCatalogCloseVerb.cs
- StylusPointPropertyInfo.cs
- WindowsProgressbar.cs
- TerminatorSinks.cs
- MissingManifestResourceException.cs
- DataGridViewRowCollection.cs
- ColumnMap.cs
- ModuleConfigurationInfo.cs
- FileController.cs
- COM2ComponentEditor.cs
- Slider.cs
- DefaultParameterValueAttribute.cs
- QilChoice.cs
- ReadOnlyAttribute.cs
- ScrollBarRenderer.cs
- DivideByZeroException.cs
- EventLogPermission.cs
- WebPartConnectionsCancelEventArgs.cs
- SettingsSection.cs
- Deflater.cs
- ProviderSettingsCollection.cs
- CodeIdentifier.cs
- FormsAuthenticationCredentials.cs
- KeyValuePairs.cs
- ProcessProtocolHandler.cs
- ProfileModule.cs
- TableDetailsCollection.cs
- FixUp.cs
- WpfXamlType.cs
- IBuiltInEvidence.cs
- FormParameter.cs
- GridLength.cs
- UriParserTemplates.cs
- _emptywebproxy.cs
- CommandValueSerializer.cs
- FormViewModeEventArgs.cs
- FilterFactory.cs
- HandlerBase.cs
- CollectionsUtil.cs
- assertwrapper.cs
- AssociationSet.cs
- RelatedImageListAttribute.cs
- NativeMethods.cs
- CheckBox.cs
- TimerExtension.cs
- ObjectStateEntryOriginalDbUpdatableDataRecord.cs
- _UncName.cs
- recordstatefactory.cs
- TemplateAction.cs
- X509SubjectKeyIdentifierClause.cs
- SHA512Managed.cs
- ValueSerializer.cs