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
- SpeechRecognitionEngine.cs
- ConfigurationManagerHelperFactory.cs
- PrintPageEvent.cs
- sqlcontext.cs
- ExpandButtonVisibilityConverter.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- DockPatternIdentifiers.cs
- EventSinkHelperWriter.cs
- Timeline.cs
- Page.cs
- UserControlCodeDomTreeGenerator.cs
- PowerStatus.cs
- SchemaComplexType.cs
- ZipIOExtraFieldZip64Element.cs
- CommentEmitter.cs
- TypeInitializationException.cs
- PerspectiveCamera.cs
- FrameworkElementAutomationPeer.cs
- URLIdentityPermission.cs
- ConfigXmlCDataSection.cs
- BitmapEffectState.cs
- ByteAnimation.cs
- WpfSharedXamlSchemaContext.cs
- WebPartConnectionCollection.cs
- RequestResizeEvent.cs
- WebServiceEnumData.cs
- DataTemplateKey.cs
- XmlDocumentType.cs
- MenuTracker.cs
- ControlAdapter.cs
- BoolExpressionVisitors.cs
- TableLayoutStyle.cs
- wgx_commands.cs
- PkcsUtils.cs
- StatusBarPanel.cs
- String.cs
- _IPv6Address.cs
- LostFocusEventManager.cs
- SystemException.cs
- ThemeDirectoryCompiler.cs
- LiteralText.cs
- AssociationTypeEmitter.cs
- MessageAction.cs
- DataListItemCollection.cs
- ItemsPanelTemplate.cs
- DataServiceQueryException.cs
- DelegateBodyWriter.cs
- UnauthorizedAccessException.cs
- EnvelopedPkcs7.cs
- GraphicsContainer.cs
- UnauthorizedAccessException.cs
- Span.cs
- LogWriteRestartAreaState.cs
- CqlBlock.cs
- AspCompat.cs
- ObjectStateEntryDbDataRecord.cs
- MemberCollection.cs
- XmlFormatExtensionPrefixAttribute.cs
- SqlUdtInfo.cs
- SortDescriptionCollection.cs
- TemplateInstanceAttribute.cs
- StrongNameUtility.cs
- KeyboardNavigation.cs
- panel.cs
- Funcletizer.cs
- PageRequestManager.cs
- SapiInterop.cs
- MessageSecurityOverMsmq.cs
- CacheRequest.cs
- ContentPresenter.cs
- AmbientValueAttribute.cs
- TriggerActionCollection.cs
- ActiveDesignSurfaceEvent.cs
- SafeLocalMemHandle.cs
- Speller.cs
- TextElementEnumerator.cs
- ListBox.cs
- EntityConnection.cs
- OdbcTransaction.cs
- IndividualDeviceConfig.cs
- XPathMultyIterator.cs
- GridViewCommandEventArgs.cs
- WizardSideBarListControlItemEventArgs.cs
- CommentAction.cs
- SafeRightsManagementPubHandle.cs
- x509store.cs
- BamlRecords.cs
- Validator.cs
- NameSpaceEvent.cs
- RectangleHotSpot.cs
- PeerApplicationLaunchInfo.cs
- Typeface.cs
- ProcessModelSection.cs
- SendMailErrorEventArgs.cs
- DrawingImage.cs
- GenericsInstances.cs
- ToolStripContainerActionList.cs
- RemoteWebConfigurationHost.cs
- TableProviderWrapper.cs
- ToolStripPanelCell.cs