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
- CLRBindingWorker.cs
- EncryptedKey.cs
- StructuralType.cs
- WinInetCache.cs
- CollectionChange.cs
- FormViewCommandEventArgs.cs
- GlobalizationSection.cs
- OutputCacheSection.cs
- SymbolMethod.cs
- CapabilitiesPattern.cs
- VariableAction.cs
- WebPartHelpVerb.cs
- CategoryGridEntry.cs
- WebPartConnectionsConfigureVerb.cs
- ZipIOExtraFieldZip64Element.cs
- DefinitionUpdate.cs
- FileSecurity.cs
- MimeFormImporter.cs
- TaiwanLunisolarCalendar.cs
- Formatter.cs
- infer.cs
- EventListener.cs
- ConfigUtil.cs
- InvalidCardException.cs
- StringUtil.cs
- sortedlist.cs
- InternalBufferManager.cs
- RankException.cs
- InkPresenterAutomationPeer.cs
- FileClassifier.cs
- ProviderSettingsCollection.cs
- _SslSessionsCache.cs
- XmlNamespaceMapping.cs
- DataGridTextBoxColumn.cs
- EventProvider.cs
- WriteableBitmap.cs
- FlowNode.cs
- Encoder.cs
- TextRenderingModeValidation.cs
- XmlRawWriterWrapper.cs
- ThemeDirectoryCompiler.cs
- SqlInternalConnectionSmi.cs
- sitestring.cs
- FigureParagraph.cs
- ToolStripRenderEventArgs.cs
- EllipseGeometry.cs
- ColorConvertedBitmap.cs
- XmlBaseWriter.cs
- DownloadProgressEventArgs.cs
- AnchorEditor.cs
- EpmSourcePathSegment.cs
- CharacterHit.cs
- CorrelationTokenInvalidatedHandler.cs
- BitmapFrameDecode.cs
- ArgumentException.cs
- SiblingIterators.cs
- AppDomainEvidenceFactory.cs
- WorkItem.cs
- SettingsContext.cs
- SqlCachedBuffer.cs
- ToolStripLocationCancelEventArgs.cs
- LocalFileSettingsProvider.cs
- UnsafeCollabNativeMethods.cs
- StringPropertyBuilder.cs
- BitmapEffectInputConnector.cs
- ServiceModelConfigurationElementCollection.cs
- ApplicationSecurityManager.cs
- WMICapabilities.cs
- KnownTypesHelper.cs
- AppSettingsExpressionBuilder.cs
- ActivityInstance.cs
- GridViewUpdateEventArgs.cs
- TypedTableBaseExtensions.cs
- ToolboxItemAttribute.cs
- EditorBrowsableAttribute.cs
- HideDisabledControlAdapter.cs
- QilReference.cs
- Dictionary.cs
- SqlTriggerContext.cs
- SpeechRecognizer.cs
- SystemUdpStatistics.cs
- ActivityXamlServices.cs
- ResourceManager.cs
- CodeDefaultValueExpression.cs
- _Rfc2616CacheValidators.cs
- FamilyCollection.cs
- TemplateManager.cs
- MsmqBindingFilter.cs
- PropertyChange.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- Boolean.cs
- IdentifierCollection.cs
- HistoryEventArgs.cs
- Message.cs
- WindowInteractionStateTracker.cs
- BitVec.cs
- Tag.cs
- TextOptions.cs
- ConfigurationConverterBase.cs
- DbProviderFactory.cs