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
- FormCollection.cs
- SignatureToken.cs
- DataContractJsonSerializer.cs
- Application.cs
- CodeAttributeArgument.cs
- DefaultValueAttribute.cs
- MenuCommandService.cs
- TiffBitmapDecoder.cs
- FilterableData.cs
- XhtmlTextWriter.cs
- MultiDataTrigger.cs
- RuntimeVariableList.cs
- XamlBrushSerializer.cs
- DefaultMergeHelper.cs
- InvalidProgramException.cs
- TextTreeRootTextBlock.cs
- FtpWebRequest.cs
- SubstitutionList.cs
- Hashtable.cs
- Page.cs
- TransactionProtocolConverter.cs
- CompilationUnit.cs
- RelativeSource.cs
- CryptoConfig.cs
- FilterableAttribute.cs
- MessageFilter.cs
- PasswordDeriveBytes.cs
- Condition.cs
- ThreadPool.cs
- AttributeExtensions.cs
- PowerModeChangedEventArgs.cs
- BamlResourceDeserializer.cs
- objectquery_tresulttype.cs
- EntityDescriptor.cs
- GlyphsSerializer.cs
- MenuCommand.cs
- CharConverter.cs
- ObservableDictionary.cs
- AttachInfo.cs
- DrawingAttributes.cs
- GridLengthConverter.cs
- SapiRecoInterop.cs
- CollectionViewProxy.cs
- PenContexts.cs
- MissingSatelliteAssemblyException.cs
- SectionRecord.cs
- DataTableCollection.cs
- Error.cs
- WindowClosedEventArgs.cs
- BoolLiteral.cs
- StreamSecurityUpgradeInitiatorBase.cs
- UrlPath.cs
- TrackingProvider.cs
- GridViewRowCollection.cs
- NameValuePermission.cs
- Substitution.cs
- AdPostCacheSubstitution.cs
- LinkClickEvent.cs
- SQLInt16Storage.cs
- LogicalCallContext.cs
- SerializationException.cs
- EntityEntry.cs
- DataGridViewRowCancelEventArgs.cs
- SwitchExpression.cs
- XmlReturnReader.cs
- InProcStateClientManager.cs
- AuthenticationConfig.cs
- GridItemPatternIdentifiers.cs
- DataGridViewSelectedColumnCollection.cs
- TriggerCollection.cs
- QueryAccessibilityHelpEvent.cs
- ObjectFullSpanRewriter.cs
- TypeResolver.cs
- Bitmap.cs
- EmptyStringExpandableObjectConverter.cs
- PropertyDescriptorComparer.cs
- FeatureSupport.cs
- WebPartConnectionsCancelEventArgs.cs
- Module.cs
- AssociationSetEnd.cs
- CodeExporter.cs
- DataListItem.cs
- TextRenderer.cs
- MdiWindowListStrip.cs
- DataGridViewTextBoxColumn.cs
- XmlAttributes.cs
- HotSpotCollection.cs
- ColorBlend.cs
- CompositeActivityTypeDescriptor.cs
- CharAnimationUsingKeyFrames.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- MetadataPropertyAttribute.cs
- ProcessHostMapPath.cs
- MemberAccessException.cs
- SqlTriggerContext.cs
- SqlWriter.cs
- Point3DAnimation.cs
- DataControlImageButton.cs
- ExtendedPropertyInfo.cs
- PipeException.cs