Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / XmlUtils / System / Xml / Xsl / XsltOld / NavigatorOutput.cs / 1305376 / 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 == XmlReservedNs.NsXmlNs) { 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 == XmlReservedNs.NsXmlNs) { 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
- Line.cs
- WinEventWrap.cs
- PageThemeBuildProvider.cs
- CellLabel.cs
- Compensation.cs
- ConfigurationStrings.cs
- MailWriter.cs
- DataGridViewDataErrorEventArgs.cs
- Pens.cs
- VisualStyleRenderer.cs
- SubtreeProcessor.cs
- BoundPropertyEntry.cs
- TextEditorCopyPaste.cs
- MobileTemplatedControlDesigner.cs
- GradientStopCollection.cs
- DecimalAnimationUsingKeyFrames.cs
- DataGridTextBoxColumn.cs
- EncoderParameter.cs
- MenuAdapter.cs
- TextTabProperties.cs
- DataPager.cs
- ClientRuntimeConfig.cs
- Win32.cs
- CodeTypeConstructor.cs
- SqlTriggerAttribute.cs
- HttpModuleCollection.cs
- BufferedWebEventProvider.cs
- MouseWheelEventArgs.cs
- XamlWriter.cs
- StructuredCompositeActivityDesigner.cs
- OrderedDictionaryStateHelper.cs
- PersonalizableAttribute.cs
- ViewPort3D.cs
- Schema.cs
- ZipFileInfo.cs
- ContentControl.cs
- counter.cs
- EncryptedPackageFilter.cs
- BridgeDataReader.cs
- RMPermissions.cs
- XmlIterators.cs
- Baml2006ReaderContext.cs
- DataService.cs
- CursorInteropHelper.cs
- ViewPort3D.cs
- TagPrefixCollection.cs
- ResourceManagerWrapper.cs
- _WebProxyDataBuilder.cs
- DocumentPageViewAutomationPeer.cs
- XmlRawWriter.cs
- MemberInfoSerializationHolder.cs
- PeerNameRecord.cs
- SqlTypeSystemProvider.cs
- Rijndael.cs
- ActivationServices.cs
- XDRSchema.cs
- MasterPageParser.cs
- XmlElementCollection.cs
- InfoCardTraceRecord.cs
- WinFormsSecurity.cs
- UpdateTracker.cs
- FrameworkContentElement.cs
- MenuDesigner.cs
- OneWayElement.cs
- MemberHolder.cs
- AutomationProperty.cs
- DataGridAutoFormat.cs
- SafeTimerHandle.cs
- CodeSubDirectoriesCollection.cs
- XmlCharacterData.cs
- GridItemProviderWrapper.cs
- OptimisticConcurrencyException.cs
- CalculatedColumn.cs
- UrlAuthorizationModule.cs
- TreeChangeInfo.cs
- OfTypeExpression.cs
- XmlSchemaSimpleContentRestriction.cs
- XmlDigitalSignatureProcessor.cs
- Monitor.cs
- UnorderedHashRepartitionStream.cs
- RelationshipDetailsRow.cs
- Html32TextWriter.cs
- DataGridViewLayoutData.cs
- DelimitedListTraceListener.cs
- RootBrowserWindowAutomationPeer.cs
- StateInitializationDesigner.cs
- AppliedDeviceFiltersDialog.cs
- DataGridViewColumnStateChangedEventArgs.cs
- RouteValueDictionary.cs
- DocumentSequenceHighlightLayer.cs
- TrackingDataItemValue.cs
- WebPartMenu.cs
- TrustSection.cs
- PathBox.cs
- HostingEnvironment.cs
- Adorner.cs
- XDRSchema.cs
- XmlnsCache.cs
- XmlSchemaImport.cs
- InstanceDataCollection.cs