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 / NavigatorOutput.cs / 1 / NavigatorOutput.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 MS.Internal.Xml.Cache; internal class NavigatorOutput : RecordOutput { private XPathDocument doc; private int documentIndex; private XmlRawWriter wr; internal XPathNavigator Navigator { get { return ((IXPathNavigable)doc).CreateNavigator(); } } internal NavigatorOutput(string baseUri) { doc = new XPathDocument(); this.wr = doc.LoadFromWriter(XPathDocument.LoadFlags.AtomizeNames, baseUri); } public Processor.OutputResult RecordDone(RecordBuilder record) { Debug.Assert(record != null); BuilderInfo mainNode = record.MainNode; documentIndex++; switch(mainNode.NodeType) { case XmlNodeType.Element: { wr.WriteStartElement( mainNode.Prefix, mainNode.LocalName, mainNode.NamespaceURI ); for (int attrib = 0; attrib < record.AttributeCount; attrib ++) { documentIndex++; Debug.Assert(record.AttributeList[attrib] is BuilderInfo); BuilderInfo attrInfo = (BuilderInfo) record.AttributeList[attrib]; if (attrInfo.NamespaceURI == Keywords.s_XmlnsNamespace) { if( attrInfo.Prefix.Length == 0 ) wr.WriteNamespaceDeclaration(string.Empty, attrInfo.Value ); else wr.WriteNamespaceDeclaration( attrInfo.LocalName, attrInfo.Value ); } else { wr.WriteAttributeString( attrInfo.Prefix, attrInfo.LocalName, attrInfo.NamespaceURI, attrInfo.Value ); } } wr.StartElementContent(); if (mainNode.IsEmptyTag) wr.WriteEndElement( mainNode.Prefix, mainNode.LocalName, mainNode.NamespaceURI ); break; } case XmlNodeType.Text: wr.WriteString( mainNode.Value ); break; case XmlNodeType.Whitespace: break; case XmlNodeType.SignificantWhitespace: wr.WriteString( mainNode.Value ); break; case XmlNodeType.ProcessingInstruction: wr.WriteProcessingInstruction( mainNode.LocalName, mainNode.Value ); break; case XmlNodeType.Comment: wr.WriteComment( mainNode.Value ); break; case XmlNodeType.Document: break; case XmlNodeType.EndElement: wr.WriteEndElement( mainNode.Prefix, mainNode.LocalName, mainNode.NamespaceURI ); break; default: Debug.Fail("Invalid NodeType on output: " + mainNode.NodeType); break; } record.Reset(); return Processor.OutputResult.Continue; } public void TheEnd() { wr.Close(); } } } // 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 MS.Internal.Xml.Cache; internal class NavigatorOutput : RecordOutput { private XPathDocument doc; private int documentIndex; private XmlRawWriter wr; internal XPathNavigator Navigator { get { return ((IXPathNavigable)doc).CreateNavigator(); } } internal NavigatorOutput(string baseUri) { doc = new XPathDocument(); this.wr = doc.LoadFromWriter(XPathDocument.LoadFlags.AtomizeNames, baseUri); } public Processor.OutputResult RecordDone(RecordBuilder record) { Debug.Assert(record != null); BuilderInfo mainNode = record.MainNode; documentIndex++; switch(mainNode.NodeType) { case XmlNodeType.Element: { wr.WriteStartElement( mainNode.Prefix, mainNode.LocalName, mainNode.NamespaceURI ); for (int attrib = 0; attrib < record.AttributeCount; attrib ++) { documentIndex++; Debug.Assert(record.AttributeList[attrib] is BuilderInfo); BuilderInfo attrInfo = (BuilderInfo) record.AttributeList[attrib]; if (attrInfo.NamespaceURI == Keywords.s_XmlnsNamespace) { if( attrInfo.Prefix.Length == 0 ) wr.WriteNamespaceDeclaration(string.Empty, attrInfo.Value ); else wr.WriteNamespaceDeclaration( attrInfo.LocalName, attrInfo.Value ); } else { wr.WriteAttributeString( attrInfo.Prefix, attrInfo.LocalName, attrInfo.NamespaceURI, attrInfo.Value ); } } wr.StartElementContent(); if (mainNode.IsEmptyTag) wr.WriteEndElement( mainNode.Prefix, mainNode.LocalName, mainNode.NamespaceURI ); break; } case XmlNodeType.Text: wr.WriteString( mainNode.Value ); break; case XmlNodeType.Whitespace: break; case XmlNodeType.SignificantWhitespace: wr.WriteString( mainNode.Value ); break; case XmlNodeType.ProcessingInstruction: wr.WriteProcessingInstruction( mainNode.LocalName, mainNode.Value ); break; case XmlNodeType.Comment: wr.WriteComment( mainNode.Value ); break; case XmlNodeType.Document: break; case XmlNodeType.EndElement: wr.WriteEndElement( mainNode.Prefix, mainNode.LocalName, mainNode.NamespaceURI ); break; default: Debug.Fail("Invalid NodeType on output: " + mainNode.NodeType); break; } record.Reset(); return Processor.OutputResult.Continue; } public void TheEnd() { wr.Close(); } } } // 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
- WinFormsUtils.cs
- RemoteTokenFactory.cs
- ComponentDispatcherThread.cs
- UseLicense.cs
- FamilyMap.cs
- DbgCompiler.cs
- BitmapData.cs
- OutputScopeManager.cs
- TemplateManager.cs
- CodeCommentStatement.cs
- MsmqBindingBase.cs
- NumberFormatter.cs
- ChannelRequirements.cs
- ArcSegment.cs
- WsdlInspector.cs
- LinqDataSourceEditData.cs
- SecurityKeyUsage.cs
- PaintEvent.cs
- SharedStatics.cs
- ViewBox.cs
- _NestedMultipleAsyncResult.cs
- ImageListStreamer.cs
- ObjectStateEntryDbUpdatableDataRecord.cs
- ImageMapEventArgs.cs
- Expression.cs
- ImageListUtils.cs
- TextServicesCompartmentEventSink.cs
- ConstraintConverter.cs
- ExpressionQuoter.cs
- HtmlControlPersistable.cs
- DbProviderFactory.cs
- HtmlValidatorAdapter.cs
- DataView.cs
- SqlUtil.cs
- Compress.cs
- XPathParser.cs
- CheckBoxRenderer.cs
- StrongNameKeyPair.cs
- _LoggingObject.cs
- autovalidator.cs
- SqlDataSourceStatusEventArgs.cs
- RandomNumberGenerator.cs
- FieldTemplateUserControl.cs
- XmlSchemaAnyAttribute.cs
- TraceSwitch.cs
- WebService.cs
- PenLineJoinValidation.cs
- RawMouseInputReport.cs
- PageStatePersister.cs
- Marshal.cs
- ToolStripSplitStackLayout.cs
- AuthenticationSchemesHelper.cs
- StrokeNodeData.cs
- TracedNativeMethods.cs
- PropertyGrid.cs
- ByteStack.cs
- TextBoxBase.cs
- SafeThemeHandle.cs
- PageTheme.cs
- InheritanceContextHelper.cs
- PartialTrustVisibleAssembly.cs
- HttpProfileGroupBase.cs
- SolidColorBrush.cs
- UrlPropertyAttribute.cs
- MessageQueuePermissionAttribute.cs
- CheckBox.cs
- MsmqSecureHashAlgorithm.cs
- RegexMatch.cs
- UrlMappingsModule.cs
- JpegBitmapEncoder.cs
- TextServicesManager.cs
- entitydatasourceentitysetnameconverter.cs
- IPeerNeighbor.cs
- XmlSchemaAnnotated.cs
- ProfessionalColorTable.cs
- CharacterBufferReference.cs
- EdmRelationshipRoleAttribute.cs
- ResumeStoryboard.cs
- SymbolMethod.cs
- ExceptionUtility.cs
- IdentityManager.cs
- GridSplitterAutomationPeer.cs
- Panel.cs
- AndCondition.cs
- UseManagedPresentationBindingElementImporter.cs
- SynchronizationLockException.cs
- SmiEventSink.cs
- HorizontalAlignConverter.cs
- HttpCookiesSection.cs
- ToolboxComponentsCreatingEventArgs.cs
- ReaderOutput.cs
- SortDescriptionCollection.cs
- SoapServerMethod.cs
- Pair.cs
- IriParsingElement.cs
- InlinedAggregationOperatorEnumerator.cs
- ChtmlPageAdapter.cs
- BitVector32.cs
- ScriptBehaviorDescriptor.cs
- XmlCDATASection.cs