Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- EntityParameterCollection.cs
- SymDocumentType.cs
- QueryPageSettingsEventArgs.cs
- SingleConverter.cs
- ConfigurationManager.cs
- SystemInfo.cs
- WindowsRichEdit.cs
- LocalizationParserHooks.cs
- TabRenderer.cs
- MediaEntryAttribute.cs
- WindowsRichEditRange.cs
- Transform3DCollection.cs
- OdbcFactory.cs
- ReadOnlyHierarchicalDataSourceView.cs
- CodeArgumentReferenceExpression.cs
- Splitter.cs
- SmiEventSink_Default.cs
- AdPostCacheSubstitution.cs
- DataControlImageButton.cs
- OdbcEnvironment.cs
- ReadWriteSpinLock.cs
- ComponentRenameEvent.cs
- OrderByLifter.cs
- TextInfo.cs
- ComplexBindingPropertiesAttribute.cs
- WebBaseEventKeyComparer.cs
- EntityCommandDefinition.cs
- dataobject.cs
- EmbeddedMailObject.cs
- SubordinateTransaction.cs
- XmlNodeChangedEventArgs.cs
- ComplexBindingPropertiesAttribute.cs
- TypedTableBase.cs
- _LoggingObject.cs
- LockCookie.cs
- SspiWrapper.cs
- HtmlInputText.cs
- GenericsInstances.cs
- __Filters.cs
- SplitterPanelDesigner.cs
- SchemaCollectionPreprocessor.cs
- BrowserCapabilitiesCompiler.cs
- FrameworkReadOnlyPropertyMetadata.cs
- ApplicationServiceManager.cs
- PartBasedPackageProperties.cs
- SelectedGridItemChangedEvent.cs
- EventSinkHelperWriter.cs
- DrawingContextDrawingContextWalker.cs
- SoapIgnoreAttribute.cs
- DesignerEventService.cs
- QilChoice.cs
- JoinQueryOperator.cs
- ComEventsInfo.cs
- ProtocolReflector.cs
- FunctionImportElement.cs
- FloatUtil.cs
- Camera.cs
- XmlParserContext.cs
- CatalogPartCollection.cs
- Converter.cs
- Point3DIndependentAnimationStorage.cs
- TrailingSpaceComparer.cs
- DelayedRegex.cs
- SafeRsaProviderHandle.cs
- PopupRoot.cs
- SiteMapNodeItemEventArgs.cs
- RegexWriter.cs
- NativeMethods.cs
- Composition.cs
- TypeLoadException.cs
- Run.cs
- MulticastNotSupportedException.cs
- ItemChangedEventArgs.cs
- Interfaces.cs
- InkCanvasFeedbackAdorner.cs
- XmlSchemaInfo.cs
- SolidBrush.cs
- XmlDigitalSignatureProcessor.cs
- VoiceInfo.cs
- ToolStripProgressBar.cs
- ReceiveActivityDesigner.cs
- WebConfigurationManager.cs
- TextBox.cs
- ExceptionRoutedEventArgs.cs
- ColumnProvider.cs
- XmlCompatibilityReader.cs
- ZipIOEndOfCentralDirectoryBlock.cs
- SqlInfoMessageEvent.cs
- MarkerProperties.cs
- SystemMulticastIPAddressInformation.cs
- WindowProviderWrapper.cs
- DbModificationCommandTree.cs
- ManualResetEvent.cs
- ErrorReporting.cs
- ToolStripItemClickedEventArgs.cs
- XmlUtil.cs
- CompositeFontFamily.cs
- BorderGapMaskConverter.cs
- MsmqTransportBindingElement.cs
- AnnotationService.cs