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
- DefaultExpressionVisitor.cs
- RequestCacheEntry.cs
- RenderDataDrawingContext.cs
- StylusPointProperty.cs
- ConnectionProviderAttribute.cs
- SessionStateSection.cs
- ObfuscateAssemblyAttribute.cs
- InputScope.cs
- PagePropertiesChangingEventArgs.cs
- ImageConverter.cs
- NotifyParentPropertyAttribute.cs
- HwndAppCommandInputProvider.cs
- RelationshipManager.cs
- DetailsViewUpdatedEventArgs.cs
- TimeSpanOrInfiniteConverter.cs
- Logging.cs
- KeyInterop.cs
- ConfigurationSectionCollection.cs
- ToolStripPanelRenderEventArgs.cs
- SystemNetHelpers.cs
- HtmlInputReset.cs
- BrowserCapabilitiesFactory.cs
- WebControlAdapter.cs
- CompositeControl.cs
- ListViewDeletedEventArgs.cs
- SizeChangedInfo.cs
- Compilation.cs
- WsdlBuildProvider.cs
- EntityClassGenerator.cs
- SwitchCase.cs
- SmiEventSink_DeferedProcessing.cs
- BitmapDecoder.cs
- XsdDuration.cs
- IsolatedStorage.cs
- TypeDescriptorContext.cs
- AutoGeneratedField.cs
- ContainerVisual.cs
- BaseServiceProvider.cs
- TransformedBitmap.cs
- AsyncCompletedEventArgs.cs
- ProfileProvider.cs
- EventToken.cs
- ComplusEndpointConfigContainer.cs
- HTTPNotFoundHandler.cs
- SkinBuilder.cs
- Compilation.cs
- OleDbConnectionInternal.cs
- SessionStateSection.cs
- HtmlFormAdapter.cs
- CDSCollectionETWBCLProvider.cs
- FontStyleConverter.cs
- DataTablePropertyDescriptor.cs
- LookupTables.cs
- DesignTimeVisibleAttribute.cs
- ChtmlCalendarAdapter.cs
- EntityDataSourceDesigner.cs
- SqlCommandBuilder.cs
- RemoveFromCollection.cs
- NativeRecognizer.cs
- GcHandle.cs
- GetRecipientListRequest.cs
- FtpRequestCacheValidator.cs
- SliderAutomationPeer.cs
- LeafCellTreeNode.cs
- EditBehavior.cs
- MailBnfHelper.cs
- StackBuilderSink.cs
- Transform3DCollection.cs
- ContextMenuStripGroup.cs
- OptimalTextSource.cs
- DateTimeConstantAttribute.cs
- AutomationPatternInfo.cs
- DataColumnChangeEvent.cs
- BitmapEffectrendercontext.cs
- XmlDomTextWriter.cs
- DesignerObjectListAdapter.cs
- RC2.cs
- recordstatefactory.cs
- DbParameterCollectionHelper.cs
- MarkedHighlightComponent.cs
- DataContractSet.cs
- XmlSchemaSimpleTypeRestriction.cs
- BaseCAMarshaler.cs
- ConditionBrowserDialog.cs
- XmlMapping.cs
- XmlRawWriter.cs
- LinqDataSourceStatusEventArgs.cs
- SpnegoTokenProvider.cs
- AutomationEvent.cs
- XmlSchemaAttributeGroup.cs
- LabelLiteral.cs
- GacUtil.cs
- HttpCacheParams.cs
- PopupRootAutomationPeer.cs
- SoapFormatterSinks.cs
- SrgsSemanticInterpretationTag.cs
- Font.cs
- DesignRelationCollection.cs
- TypefaceCollection.cs
- HtmlContainerControl.cs