Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- TcpProcessProtocolHandler.cs
- ConfigViewGenerator.cs
- FontStretch.cs
- CompilationSection.cs
- PropertyInfo.cs
- StopStoryboard.cs
- HttpDebugHandler.cs
- EdmError.cs
- SqlConnectionPoolGroupProviderInfo.cs
- CryptoProvider.cs
- CompositeActivityValidator.cs
- WebControlAdapter.cs
- StylusDevice.cs
- Point3DCollection.cs
- MenuCommand.cs
- TreeNodeCollection.cs
- ServiceCredentials.cs
- RubberbandSelector.cs
- WithParamAction.cs
- ScrollViewerAutomationPeer.cs
- XmlSignatureProperties.cs
- TextPattern.cs
- SrgsElementFactory.cs
- xdrvalidator.cs
- ButtonFieldBase.cs
- FormViewPagerRow.cs
- WebPartEditorCancelVerb.cs
- ObjectSecurity.cs
- PackUriHelper.cs
- ListViewInsertedEventArgs.cs
- PointCollectionConverter.cs
- NameValueSectionHandler.cs
- JsonWriter.cs
- XmlChildNodes.cs
- TextEditorLists.cs
- BaseResourcesBuildProvider.cs
- AppDomainUnloadedException.cs
- Model3DGroup.cs
- Vector.cs
- EventMappingSettingsCollection.cs
- View.cs
- FilteredDataSetHelper.cs
- XmlArrayItemAttributes.cs
- Exceptions.cs
- RangeValuePattern.cs
- EventEntry.cs
- HttpRequest.cs
- DataControlCommands.cs
- ConnectionStringsExpressionBuilder.cs
- DebugInfoGenerator.cs
- PeerCustomResolverBindingElement.cs
- ScrollViewerAutomationPeer.cs
- StorageComplexTypeMapping.cs
- PathHelper.cs
- _TimerThread.cs
- StreamWriter.cs
- TreeNodeBindingCollection.cs
- ViewStateModeByIdAttribute.cs
- SystemIcmpV6Statistics.cs
- BamlTreeNode.cs
- ISSmlParser.cs
- SignerInfo.cs
- HttpModulesSection.cs
- SecurityHelper.cs
- TagPrefixInfo.cs
- CapiSymmetricAlgorithm.cs
- followingquery.cs
- QueryServiceConfigHandle.cs
- httpserverutility.cs
- URIFormatException.cs
- CodePageEncoding.cs
- BamlTreeUpdater.cs
- InitiatorSessionSymmetricTransportSecurityProtocol.cs
- DataBindingCollectionEditor.cs
- DataGridViewCellParsingEventArgs.cs
- SingletonInstanceContextProvider.cs
- ServiceOperationParameter.cs
- SqlRowUpdatedEvent.cs
- FullTextState.cs
- WebScriptMetadataMessageEncoderFactory.cs
- SchemaNotation.cs
- SplitterDesigner.cs
- DataViewListener.cs
- IntSumAggregationOperator.cs
- ValidationResult.cs
- ArrayListCollectionBase.cs
- Header.cs
- Freezable.cs
- ChannelRequirements.cs
- LambdaCompiler.Binary.cs
- CustomSignedXml.cs
- XmlSchemaCollection.cs
- log.cs
- XPathNavigatorReader.cs
- UInt32Converter.cs
- GeneratedCodeAttribute.cs
- relpropertyhelper.cs
- CounterSampleCalculator.cs
- ImageSource.cs
- SoapHeaderAttribute.cs