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
- ErrorProvider.cs
- MulticastDelegate.cs
- SqlTopReducer.cs
- HelloOperationCD1AsyncResult.cs
- CrossContextChannel.cs
- ToolstripProfessionalRenderer.cs
- CodeCommentStatementCollection.cs
- Point.cs
- SQLByte.cs
- ClientProxyGenerator.cs
- BinaryUtilClasses.cs
- CodeMethodInvokeExpression.cs
- GroupBoxAutomationPeer.cs
- GridViewHeaderRowPresenter.cs
- ScrollViewer.cs
- DecoderReplacementFallback.cs
- HttpContext.cs
- DataGridColumn.cs
- InputMethod.cs
- FileDialog_Vista_Interop.cs
- DataGrid.cs
- MimePart.cs
- CodeTypeMember.cs
- IntersectQueryOperator.cs
- NavigationPropertySingletonExpression.cs
- ApplicationException.cs
- DiscoveryOperationContextExtension.cs
- As.cs
- FilterQuery.cs
- TemplateKeyConverter.cs
- RenderData.cs
- RSACryptoServiceProvider.cs
- XPathParser.cs
- SmiTypedGetterSetter.cs
- VisualCollection.cs
- BinaryFormatter.cs
- TileBrush.cs
- UnionCqlBlock.cs
- DesignerLoader.cs
- FlowPosition.cs
- Point3D.cs
- BooleanConverter.cs
- KerberosRequestorSecurityTokenAuthenticator.cs
- LassoHelper.cs
- InputScopeAttribute.cs
- BlurBitmapEffect.cs
- EntityAdapter.cs
- Span.cs
- DataServiceEntityAttribute.cs
- DataGridViewLinkCell.cs
- PlainXmlSerializer.cs
- RoleManagerEventArgs.cs
- HitTestParameters.cs
- XmlAggregates.cs
- FontDriver.cs
- X509LogoTypeExtension.cs
- Listbox.cs
- DesignerTransaction.cs
- HttpResponse.cs
- TogglePattern.cs
- _BufferOffsetSize.cs
- DataGridRowHeaderAutomationPeer.cs
- WSSecureConversationDec2005.cs
- MultipartIdentifier.cs
- LineSegment.cs
- DisplayInformation.cs
- QueryContinueDragEventArgs.cs
- PathFigureCollectionValueSerializer.cs
- StrokeFIndices.cs
- AuthorizationSection.cs
- ImageConverter.cs
- ClientData.cs
- AccessorTable.cs
- XmlTextWriter.cs
- SelectionProcessor.cs
- NameSpaceExtractor.cs
- SymLanguageVendor.cs
- DescendantBaseQuery.cs
- ConsumerConnectionPoint.cs
- PenContexts.cs
- CommandManager.cs
- ParallelDesigner.cs
- CommandValueSerializer.cs
- AppDomainInstanceProvider.cs
- LeftCellWrapper.cs
- TextFormatterImp.cs
- ActivityWithResultValueSerializer.cs
- ListView.cs
- AsyncContentLoadedEventArgs.cs
- StylusPointPropertyUnit.cs
- LogPolicy.cs
- HybridObjectCache.cs
- PeerNearMe.cs
- RecognitionResult.cs
- TemplateDefinition.cs
- ChangePassword.cs
- HttpException.cs
- HttpException.cs
- Table.cs
- DataGridColumn.cs