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
- BufferBuilder.cs
- ForceCopyBuildProvider.cs
- UserInitiatedRoutedEventPermission.cs
- IWorkflowDebuggerService.cs
- _NestedMultipleAsyncResult.cs
- Region.cs
- formatter.cs
- GridViewDeleteEventArgs.cs
- CacheAxisQuery.cs
- ElapsedEventArgs.cs
- StrokeCollectionDefaultValueFactory.cs
- FlowchartSizeFeature.cs
- StrongNameUtility.cs
- CacheChildrenQuery.cs
- ExecutionContext.cs
- ReverseComparer.cs
- HttpListenerResponse.cs
- httpapplicationstate.cs
- XmlNodeReader.cs
- DbConnectionHelper.cs
- ResXFileRef.cs
- COAUTHIDENTITY.cs
- FocusWithinProperty.cs
- TextEffectCollection.cs
- XPathDocumentIterator.cs
- DataPagerFieldItem.cs
- OptimalBreakSession.cs
- _CookieModule.cs
- HyperLinkStyle.cs
- Window.cs
- DBCommand.cs
- CodeGenHelper.cs
- XamlUtilities.cs
- CollectionConverter.cs
- JsonMessageEncoderFactory.cs
- StorageAssociationTypeMapping.cs
- SynchronizedKeyedCollection.cs
- ManualResetEvent.cs
- FixedHyperLink.cs
- FunctionParameter.cs
- Shape.cs
- DataList.cs
- FileAuthorizationModule.cs
- TextEditorDragDrop.cs
- WriteTimeStream.cs
- TextDecorationCollection.cs
- MouseEventArgs.cs
- CustomWebEventKey.cs
- NetCodeGroup.cs
- EdmComplexPropertyAttribute.cs
- AbsoluteQuery.cs
- AddInAttribute.cs
- DesignerAdRotatorAdapter.cs
- GuidTagList.cs
- MsmqBindingMonitor.cs
- ResXBuildProvider.cs
- ViewGenResults.cs
- ContentElementAutomationPeer.cs
- InvalidCommandTreeException.cs
- VScrollBar.cs
- SyndicationDeserializer.cs
- Addressing.cs
- PlatformCulture.cs
- QuaternionRotation3D.cs
- ZipArchive.cs
- ListenerElementsCollection.cs
- EmissiveMaterial.cs
- WorkItem.cs
- XmlSchemas.cs
- GridPattern.cs
- KeyedPriorityQueue.cs
- RootAction.cs
- DocumentViewerBaseAutomationPeer.cs
- ToolStripSeparatorRenderEventArgs.cs
- RowUpdatedEventArgs.cs
- ListItemParagraph.cs
- UnsafeNativeMethods.cs
- DataGridTableCollection.cs
- PerformanceCountersElement.cs
- BaseComponentEditor.cs
- XmlArrayItemAttribute.cs
- TextDecorationUnitValidation.cs
- Int32AnimationUsingKeyFrames.cs
- PresentationTraceSources.cs
- QueryAsyncResult.cs
- DrawingAttributeSerializer.cs
- DataGridViewRow.cs
- ISO2022Encoding.cs
- IsolatedStorage.cs
- ListBox.cs
- ControlDesigner.cs
- SqlConnectionHelper.cs
- KerberosRequestorSecurityToken.cs
- TemplatePagerField.cs
- TypeUtil.cs
- CalendarButtonAutomationPeer.cs
- CodeGotoStatement.cs
- DynamicRenderer.cs
- FaultBookmark.cs
- ActivityFunc.cs