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
- InstallerTypeAttribute.cs
- MetadataUtilsSmi.cs
- mediaeventargs.cs
- TypedOperationInfo.cs
- ChannelServices.cs
- RevocationPoint.cs
- AutomationElement.cs
- localization.cs
- ITextView.cs
- PageContentAsyncResult.cs
- PropertyInformation.cs
- AvtEvent.cs
- CheckedPointers.cs
- IndicShape.cs
- Viewport3DAutomationPeer.cs
- ProcessManager.cs
- FilteredReadOnlyMetadataCollection.cs
- Cursors.cs
- TableRowCollection.cs
- QuaternionAnimation.cs
- RemoteArgument.cs
- MetadataItem.cs
- GZipObjectSerializer.cs
- DragEventArgs.cs
- DataIdProcessor.cs
- MetadataArtifactLoaderResource.cs
- CoTaskMemHandle.cs
- JoinTreeNode.cs
- UniqueConstraint.cs
- CultureInfoConverter.cs
- PathData.cs
- IdentityNotMappedException.cs
- ColorConvertedBitmap.cs
- updatecommandorderer.cs
- CodeParameterDeclarationExpressionCollection.cs
- Filter.cs
- DockPatternIdentifiers.cs
- ContentPlaceHolder.cs
- TypedAsyncResult.cs
- DoubleCollectionValueSerializer.cs
- MethodAccessException.cs
- PropertyValueUIItem.cs
- AsyncOperationManager.cs
- CriticalExceptions.cs
- RightsManagementResourceHelper.cs
- _NegotiateClient.cs
- RecipientInfo.cs
- XmlSignatureManifest.cs
- EventLevel.cs
- WebPartDisplayModeEventArgs.cs
- ChildTable.cs
- DefaultMemberAttribute.cs
- WebPartConnectionsCancelVerb.cs
- IdentityModelStringsVersion1.cs
- LocatorGroup.cs
- Variable.cs
- ErrorFormatterPage.cs
- Properties.cs
- InputLangChangeRequestEvent.cs
- Operand.cs
- DataControlField.cs
- XmlHierarchyData.cs
- OleDbSchemaGuid.cs
- DataSetMappper.cs
- TransformProviderWrapper.cs
- ClrPerspective.cs
- FormsAuthenticationModule.cs
- DashStyle.cs
- XmlWriterTraceListener.cs
- MultidimensionalArrayItemReference.cs
- AttachedPropertyDescriptor.cs
- SoapExtensionImporter.cs
- SelectedDatesCollection.cs
- BitmapData.cs
- FontFamilyValueSerializer.cs
- WebPartZone.cs
- ClientTarget.cs
- RequiredAttributeAttribute.cs
- ErrorEventArgs.cs
- GlobalizationAssembly.cs
- TemplatePagerField.cs
- ResourceManager.cs
- SelectedDatesCollection.cs
- SmiRequestExecutor.cs
- HtmlEmptyTagControlBuilder.cs
- SafeRightsManagementEnvironmentHandle.cs
- ObjectStateFormatter.cs
- Effect.cs
- RecordManager.cs
- RelationshipConstraintValidator.cs
- JapaneseCalendar.cs
- Bold.cs
- ProfileBuildProvider.cs
- TrustLevelCollection.cs
- SqlDataSourceSelectingEventArgs.cs
- ListControl.cs
- XsltFunctions.cs
- CfgSemanticTag.cs
- TransactionManager.cs
- FormViewUpdatedEventArgs.cs