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
- DisposableCollectionWrapper.cs
- OutputCacheProfile.cs
- ErrorCodes.cs
- IndentTextWriter.cs
- SoapTransportImporter.cs
- EntityAdapter.cs
- VirtualPathProvider.cs
- GAC.cs
- DataTableNewRowEvent.cs
- ExpressionBuilder.cs
- IntegerCollectionEditor.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- BordersPage.cs
- Visual3D.cs
- ModuleConfigurationInfo.cs
- ModelItemDictionary.cs
- XmlSchemaChoice.cs
- HMACSHA1.cs
- ProgressBarAutomationPeer.cs
- Border.cs
- HttpServerUtilityWrapper.cs
- XPathBinder.cs
- XmlQueryStaticData.cs
- TcpConnectionPoolSettingsElement.cs
- TextBounds.cs
- MetadataArtifactLoader.cs
- NavigationProperty.cs
- SerializationFieldInfo.cs
- MetadataFile.cs
- TextTreeUndoUnit.cs
- TemplateLookupAction.cs
- SequenceNumber.cs
- ToolStripSplitButton.cs
- IntMinMaxAggregationOperator.cs
- BaseTreeIterator.cs
- FileDialog_Vista_Interop.cs
- ProxySimple.cs
- x509store.cs
- FontFamily.cs
- Variable.cs
- DataGridViewColumnConverter.cs
- WebPartChrome.cs
- Stacktrace.cs
- DynamicAttribute.cs
- DiscreteKeyFrames.cs
- MembershipAdapter.cs
- ProfileInfo.cs
- XNodeNavigator.cs
- VoiceInfo.cs
- AutoGeneratedField.cs
- SecurityException.cs
- Int16Storage.cs
- DataGridViewButtonColumn.cs
- DesignerActionTextItem.cs
- ContentElement.cs
- HttpPostedFile.cs
- GlyphCache.cs
- SimpleTypeResolver.cs
- _SafeNetHandles.cs
- ProjectionCamera.cs
- RangeValidator.cs
- StrokeNodeOperations2.cs
- XmlDocumentSurrogate.cs
- DataStreams.cs
- DictionaryEntry.cs
- XamlWriter.cs
- DummyDataSource.cs
- CreateUserWizard.cs
- CodeValidator.cs
- HttpCapabilitiesSectionHandler.cs
- TreeSet.cs
- ClientReliableChannelBinder.cs
- ToolboxSnapDragDropEventArgs.cs
- IISMapPath.cs
- SourceFilter.cs
- Compiler.cs
- CodeTypeOfExpression.cs
- EventProviderBase.cs
- WrapPanel.cs
- SpnegoTokenProvider.cs
- RootBrowserWindowAutomationPeer.cs
- NetCodeGroup.cs
- NavigationPropertyEmitter.cs
- CollectionViewGroupInternal.cs
- RtfNavigator.cs
- Switch.cs
- HttpApplication.cs
- Int16AnimationBase.cs
- FacetValueContainer.cs
- _ConnectOverlappedAsyncResult.cs
- MatrixConverter.cs
- XPathCompileException.cs
- HotCommands.cs
- BinaryParser.cs
- VirtualDirectoryMappingCollection.cs
- AddInIpcChannel.cs
- MemoryRecordBuffer.cs
- updatecommandorderer.cs
- StrongNameKeyPair.cs
- TemplateInstanceAttribute.cs