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
- UnsafeNativeMethods.cs
- StrokeCollectionDefaultValueFactory.cs
- MediaPlayer.cs
- GridItemPatternIdentifiers.cs
- RelationshipConstraintValidator.cs
- WebReferencesBuildProvider.cs
- QilCloneVisitor.cs
- PropertyChangingEventArgs.cs
- DateTimePicker.cs
- DataGridViewColumnCollection.cs
- BitStream.cs
- InvokeHandlers.cs
- PrintDialogException.cs
- DataControlImageButton.cs
- DataGridPagerStyle.cs
- XmlBinaryReaderSession.cs
- sqlser.cs
- RenderCapability.cs
- CngProperty.cs
- ImmutableCollection.cs
- CodeBinaryOperatorExpression.cs
- DelegateBodyWriter.cs
- CustomWebEventKey.cs
- URLAttribute.cs
- ThrowOnMultipleAssignment.cs
- PeerMessageDispatcher.cs
- SimplePropertyEntry.cs
- StrokeCollectionConverter.cs
- FloaterBaseParaClient.cs
- SerTrace.cs
- TimeSpanConverter.cs
- ApplicationManager.cs
- NumberFormatInfo.cs
- RecordConverter.cs
- SqlCommandSet.cs
- StylusPointPropertyInfoDefaults.cs
- CheckBoxList.cs
- UserMapPath.cs
- Button.cs
- RoleService.cs
- ProfilePropertySettingsCollection.cs
- CurrentTimeZone.cs
- MetadataArtifactLoaderCompositeFile.cs
- ResourceContainer.cs
- MemberHolder.cs
- LinkArea.cs
- HtmlInputPassword.cs
- SqlRowUpdatedEvent.cs
- StringSorter.cs
- DiffuseMaterial.cs
- CommandPlan.cs
- ComponentEditorPage.cs
- ReferenceSchema.cs
- Fonts.cs
- BaseDataListComponentEditor.cs
- TableDetailsRow.cs
- DecimalAnimationBase.cs
- mda.cs
- Stacktrace.cs
- TableRowGroup.cs
- PocoPropertyAccessorStrategy.cs
- Console.cs
- SqlTypesSchemaImporter.cs
- sitestring.cs
- ListBindingConverter.cs
- mactripleDES.cs
- TimeStampChecker.cs
- ValidatedMobileControlConverter.cs
- DynamicRendererThreadManager.cs
- EnumType.cs
- GradientBrush.cs
- BrushValueSerializer.cs
- XPathAncestorQuery.cs
- IsolatedStoragePermission.cs
- SimpleTypeResolver.cs
- SiteMapNodeItemEventArgs.cs
- DbProviderConfigurationHandler.cs
- EmptyElement.cs
- QuaternionRotation3D.cs
- ObjectQuery.cs
- ISAPIApplicationHost.cs
- BitmapImage.cs
- ConfigurationException.cs
- StoryFragments.cs
- CharacterBufferReference.cs
- RawStylusSystemGestureInputReport.cs
- Message.cs
- CodeTypeOfExpression.cs
- MetadataStore.cs
- PenContext.cs
- ZoneButton.cs
- NativeMethods.cs
- XamlFigureLengthSerializer.cs
- SendKeys.cs
- TraceXPathNavigator.cs
- WebSysDefaultValueAttribute.cs
- MarkupCompiler.cs
- CngAlgorithmGroup.cs
- DeflateEmulationStream.cs
- HatchBrush.cs