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
- Int64KeyFrameCollection.cs
- AnnotationResourceChangedEventArgs.cs
- BitmapEffectGeneralTransform.cs
- TextDecoration.cs
- webclient.cs
- documentation.cs
- FirstMatchCodeGroup.cs
- SHA512CryptoServiceProvider.cs
- DataColumn.cs
- sqlcontext.cs
- AnnotationMap.cs
- RegisteredExpandoAttribute.cs
- Bits.cs
- WebPartEditorOkVerb.cs
- OleDbParameter.cs
- PrefixQName.cs
- NativeCompoundFileAPIs.cs
- dataprotectionpermissionattribute.cs
- KeyConverter.cs
- FixedLineResult.cs
- SoapAttributes.cs
- ConnectionPoolManager.cs
- ArrayConverter.cs
- CodeDomConfigurationHandler.cs
- AutomationPatternInfo.cs
- DynamicValidatorEventArgs.cs
- DeflateEmulationStream.cs
- TextTreeTextElementNode.cs
- TrackingProfileDeserializationException.cs
- WindowsScrollBar.cs
- VisualTarget.cs
- Int32Storage.cs
- TemplatingOptionsDialog.cs
- BindingMAnagerBase.cs
- MailBnfHelper.cs
- Mouse.cs
- Rect3D.cs
- FileDialog_Vista.cs
- GridEntry.cs
- Converter.cs
- BevelBitmapEffect.cs
- Viewport2DVisual3D.cs
- IPEndPoint.cs
- SecurityKeyIdentifier.cs
- PackWebRequest.cs
- ChtmlPageAdapter.cs
- Stack.cs
- PageAdapter.cs
- EdmProperty.cs
- RewritingProcessor.cs
- KeyConstraint.cs
- HMACRIPEMD160.cs
- SqlDataSource.cs
- TempFiles.cs
- ControlParameter.cs
- SourceItem.cs
- Timeline.cs
- PrincipalPermission.cs
- LoginUtil.cs
- SqlClientPermission.cs
- EmptyReadOnlyDictionaryInternal.cs
- XmlByteStreamWriter.cs
- WhereaboutsReader.cs
- FlagPanel.cs
- AccessKeyManager.cs
- ValueOfAction.cs
- RoutingEndpointTrait.cs
- XmlSchemaExternal.cs
- Triplet.cs
- safemediahandle.cs
- PopupEventArgs.cs
- ToolBarOverflowPanel.cs
- StorageComplexTypeMapping.cs
- DataErrorValidationRule.cs
- AsyncPostBackTrigger.cs
- StrokeCollection2.cs
- SecUtil.cs
- ComplusEndpointConfigContainer.cs
- ReadOnlyTernaryTree.cs
- RuntimeCompatibilityAttribute.cs
- ToolboxComponentsCreatedEventArgs.cs
- InputMethodStateTypeInfo.cs
- Condition.cs
- RestClientProxyHandler.cs
- XamlSerializer.cs
- CapabilitiesPattern.cs
- HtmlInputReset.cs
- TypeBrowser.xaml.cs
- NavigationCommands.cs
- TemporaryBitmapFile.cs
- BoolLiteral.cs
- OdbcFactory.cs
- LogArchiveSnapshot.cs
- ClientConfigPaths.cs
- RightsManagementEncryptedStream.cs
- HttpFileCollection.cs
- GroupByExpressionRewriter.cs
- Subtract.cs
- DataServiceKeyAttribute.cs
- SecurityContextSecurityTokenAuthenticator.cs