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
- Statements.cs
- FaultPropagationQuery.cs
- CalendarAutoFormat.cs
- SafeTimerHandle.cs
- SystemNetHelpers.cs
- StandardCommandToolStripMenuItem.cs
- CollectionChangedEventManager.cs
- COM2IPerPropertyBrowsingHandler.cs
- URLIdentityPermission.cs
- PageRanges.cs
- QilGenerator.cs
- Line.cs
- ToolStripMenuItem.cs
- SendKeys.cs
- DelegatingConfigHost.cs
- SelectionHighlightInfo.cs
- XmlILConstructAnalyzer.cs
- DataListCommandEventArgs.cs
- FixedSOMLineCollection.cs
- SqlDataSourceCache.cs
- XmlChildEnumerator.cs
- SrgsItemList.cs
- Splitter.cs
- TypeUtil.cs
- XmlQualifiedName.cs
- COAUTHINFO.cs
- SectionXmlInfo.cs
- OdbcRowUpdatingEvent.cs
- ImageListStreamer.cs
- Point4DValueSerializer.cs
- WindowsFormsHostAutomationPeer.cs
- DynamicILGenerator.cs
- StringWriter.cs
- WebPartConnectionsConnectVerb.cs
- DataTransferEventArgs.cs
- UnsafeNativeMethods.cs
- QueryAsyncResult.cs
- TrackingStringDictionary.cs
- WebServiceErrorEvent.cs
- AttachmentService.cs
- RecordBuilder.cs
- EntityCommandCompilationException.cs
- CodeVariableDeclarationStatement.cs
- XAMLParseException.cs
- DynamicObjectAccessor.cs
- MemberDomainMap.cs
- ImageSource.cs
- UserControl.cs
- PropertyBuilder.cs
- ServiceBehaviorElement.cs
- XmlnsCompatibleWithAttribute.cs
- DbProviderFactories.cs
- SelectedGridItemChangedEvent.cs
- ClientTargetCollection.cs
- HttpModuleCollection.cs
- Label.cs
- IEnumerable.cs
- BitmapEffectCollection.cs
- ValidatingPropertiesEventArgs.cs
- BoundsDrawingContextWalker.cs
- SQLBinary.cs
- Baml6Assembly.cs
- ObfuscationAttribute.cs
- XmlImplementation.cs
- SqlCacheDependencyDatabaseCollection.cs
- WebProxyScriptElement.cs
- InstanceNameConverter.cs
- KnownAssembliesSet.cs
- DataGridViewCellStyleConverter.cs
- StreamAsIStream.cs
- DialogResultConverter.cs
- SharedRuntimeState.cs
- XsdValidatingReader.cs
- DataServiceConfiguration.cs
- DeadCharTextComposition.cs
- SerializationSectionGroup.cs
- Help.cs
- _DigestClient.cs
- ASCIIEncoding.cs
- AutomationIdentifierGuids.cs
- XmlAggregates.cs
- SQlBooleanStorage.cs
- ReflectTypeDescriptionProvider.cs
- PropertyReferenceSerializer.cs
- PeerNameRecord.cs
- KnownTypeAttribute.cs
- EditorZone.cs
- ServiceThrottlingElement.cs
- UnmanagedBitmapWrapper.cs
- ProviderUtil.cs
- CharacterHit.cs
- RawMouseInputReport.cs
- SolidColorBrush.cs
- ExpressionBuilder.cs
- PageTheme.cs
- SaveFileDialogDesigner.cs
- Rijndael.cs
- Debugger.cs
- MessageSmuggler.cs
- RoleServiceManager.cs