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
- TraceContextEventArgs.cs
- MaterialGroup.cs
- SafeRightsManagementPubHandle.cs
- AsymmetricSignatureFormatter.cs
- FileVersionInfo.cs
- StringReader.cs
- ReflectionHelper.cs
- EditorPartCollection.cs
- RemoteWebConfigurationHostServer.cs
- OdbcParameter.cs
- X509Chain.cs
- ServiceCredentialsSecurityTokenManager.cs
- Stylesheet.cs
- RepeaterCommandEventArgs.cs
- CmsInterop.cs
- SoapReflectionImporter.cs
- WsdlBuildProvider.cs
- ManifestBasedResourceGroveler.cs
- SchemaImporterExtension.cs
- externdll.cs
- SqlDataSourceConfigureFilterForm.cs
- EdmItemError.cs
- ParseElement.cs
- XmlSchemaCompilationSettings.cs
- Utils.cs
- SafeNativeMethods.cs
- DefaultExpressionVisitor.cs
- GeometryCombineModeValidation.cs
- MetadataUtilsSmi.cs
- FlowSwitchDesigner.xaml.cs
- CodeSubDirectoriesCollection.cs
- NodeLabelEditEvent.cs
- CharUnicodeInfo.cs
- ContextMenuAutomationPeer.cs
- ResourceDisplayNameAttribute.cs
- ParserOptions.cs
- RuntimeTransactionHandle.cs
- StatusBarAutomationPeer.cs
- Point4D.cs
- AssemblyCacheEntry.cs
- Int32Storage.cs
- NamedElement.cs
- ClientSettingsSection.cs
- DockEditor.cs
- StructuralObject.cs
- StylusPointPropertyUnit.cs
- CompiledXpathExpr.cs
- HttpCapabilitiesSectionHandler.cs
- UTF8Encoding.cs
- CodeDomConfigurationHandler.cs
- XmlnsPrefixAttribute.cs
- PowerStatus.cs
- KeyTimeConverter.cs
- _SslState.cs
- TraceSection.cs
- ErrorCodes.cs
- XmlDocumentSerializer.cs
- ServiceAuthorizationManager.cs
- _TLSstream.cs
- XmlWrappingWriter.cs
- httpstaticobjectscollection.cs
- BindingMemberInfo.cs
- BypassElementCollection.cs
- ZipIOBlockManager.cs
- WebColorConverter.cs
- WebPartMenuStyle.cs
- ServiceOperationParameter.cs
- Deflater.cs
- StreamGeometry.cs
- QuadraticBezierSegment.cs
- StringSource.cs
- FirstMatchCodeGroup.cs
- DESCryptoServiceProvider.cs
- NamespaceInfo.cs
- GlyphShapingProperties.cs
- BoundColumn.cs
- BinHexDecoder.cs
- ValidatorCompatibilityHelper.cs
- DataGridHelper.cs
- XhtmlConformanceSection.cs
- WinEventTracker.cs
- GifBitmapEncoder.cs
- SqlServices.cs
- NullRuntimeConfig.cs
- SynchronizedDispatch.cs
- XPathNodeIterator.cs
- BuildManagerHost.cs
- webclient.cs
- TimersDescriptionAttribute.cs
- OletxDependentTransaction.cs
- XmlValidatingReader.cs
- TileBrush.cs
- CapabilitiesPattern.cs
- XPathException.cs
- SystemInformation.cs
- RegistryKey.cs
- MgmtConfigurationRecord.cs
- Cursors.cs
- _OSSOCK.cs
- Int16AnimationBase.cs