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
- RenderDataDrawingContext.cs
- DesignerOptionService.cs
- CopyAttributesAction.cs
- DiagnosticsConfiguration.cs
- SystemResourceHost.cs
- EventWaitHandleSecurity.cs
- DocumentStatusResources.cs
- ObjectConverter.cs
- Visitors.cs
- FindCriteriaElement.cs
- CodeDesigner.cs
- Inflater.cs
- TypeUsage.cs
- SimpleTypeResolver.cs
- ContractListAdapter.cs
- HttpRawResponse.cs
- XmlCharCheckingReader.cs
- ConfigXmlText.cs
- CaseInsensitiveOrdinalStringComparer.cs
- SizeLimitedCache.cs
- VerticalAlignConverter.cs
- FunctionQuery.cs
- DataTableExtensions.cs
- GeometryDrawing.cs
- FormsAuthenticationUserCollection.cs
- FormParameter.cs
- PeerCollaborationPermission.cs
- DataControlImageButton.cs
- StaticExtensionConverter.cs
- MediaTimeline.cs
- SQLConvert.cs
- OrderedDictionary.cs
- ColumnWidthChangingEvent.cs
- JavaScriptString.cs
- FlowDocumentScrollViewer.cs
- ObjectTag.cs
- TemplateAction.cs
- UrlAuthorizationModule.cs
- TemplateFactory.cs
- SimpleHandlerBuildProvider.cs
- AuthenticationServiceManager.cs
- AppDomainManager.cs
- StoreItemCollection.cs
- InputQueue.cs
- Lasso.cs
- RadioButton.cs
- ActivityWithResultWrapper.cs
- StrokeCollectionConverter.cs
- InfoCardRSAOAEPKeyExchangeFormatter.cs
- ValuePatternIdentifiers.cs
- InputLangChangeRequestEvent.cs
- ContentPresenter.cs
- RowUpdatingEventArgs.cs
- EditingCoordinator.cs
- HtmlTableRowCollection.cs
- bindurihelper.cs
- ScriptControlManager.cs
- AppSettingsSection.cs
- StructureChangedEventArgs.cs
- WebPartVerbsEventArgs.cs
- SizeAnimationClockResource.cs
- SimpleType.cs
- ProxyWebPart.cs
- WebPartDisplayModeCollection.cs
- ReturnValue.cs
- SQLCharsStorage.cs
- Html32TextWriter.cs
- ImageClickEventArgs.cs
- CommandBinding.cs
- Graph.cs
- VarRemapper.cs
- ContractSearchPattern.cs
- OutOfMemoryException.cs
- ParseChildrenAsPropertiesAttribute.cs
- BaseTreeIterator.cs
- FontCollection.cs
- Int16AnimationUsingKeyFrames.cs
- GeneralTransform3DCollection.cs
- RSAOAEPKeyExchangeFormatter.cs
- MappingException.cs
- XPathDocumentIterator.cs
- GeneralTransform3DCollection.cs
- IntegerValidator.cs
- __Error.cs
- SpellerHighlightLayer.cs
- TextModifierScope.cs
- ToolStripGripRenderEventArgs.cs
- _TLSstream.cs
- ClickablePoint.cs
- DataBoundLiteralControl.cs
- TypeGeneratedEventArgs.cs
- SiteMembershipCondition.cs
- SlotInfo.cs
- ExtensionQuery.cs
- ColorTransform.cs
- XmlObjectSerializerWriteContext.cs
- PasswordTextContainer.cs
- CursorConverter.cs
- BufferedReadStream.cs
- SessionPageStateSection.cs