Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- GZipDecoder.cs
- HyperLinkField.cs
- SiteIdentityPermission.cs
- AnimatedTypeHelpers.cs
- Membership.cs
- TokenBasedSet.cs
- RequestCacheManager.cs
- SortKey.cs
- InputElement.cs
- PeerNearMe.cs
- UnsafeNativeMethods.cs
- SingleTagSectionHandler.cs
- EndPoint.cs
- SqlUDTStorage.cs
- SystemIPAddressInformation.cs
- ListControlDesigner.cs
- DateTimeSerializationSection.cs
- Events.cs
- Propagator.cs
- XmlParser.cs
- CodeMethodReturnStatement.cs
- Blend.cs
- QilIterator.cs
- ConnectionPoint.cs
- WhitespaceSignificantCollectionAttribute.cs
- PageFunction.cs
- TagPrefixInfo.cs
- DesignerOptionService.cs
- UnconditionalPolicy.cs
- HtmlTableCell.cs
- Enum.cs
- DataGridItemCollection.cs
- CompilerGlobalScopeAttribute.cs
- OleStrCAMarshaler.cs
- InternalTypeHelper.cs
- SubtreeProcessor.cs
- DisplayNameAttribute.cs
- JsonServiceDocumentSerializer.cs
- EdmPropertyAttribute.cs
- TrackingExtract.cs
- RoleManagerModule.cs
- RepeatBehaviorConverter.cs
- ArrowControl.xaml.cs
- GridViewCellAutomationPeer.cs
- DataGridViewAdvancedBorderStyle.cs
- EdmType.cs
- RoleManagerModule.cs
- KnownBoxes.cs
- NotificationContext.cs
- DataGridViewColumnTypePicker.cs
- WindowsButton.cs
- CustomPeerResolverService.cs
- Bitmap.cs
- PackageRelationshipCollection.cs
- DesignSurfaceManager.cs
- XmlFormatReaderGenerator.cs
- WindowVisualStateTracker.cs
- BasePropertyDescriptor.cs
- SqlConnectionPoolProviderInfo.cs
- ToolStripOverflowButton.cs
- ColorAnimationUsingKeyFrames.cs
- ValueUtilsSmi.cs
- ListViewUpdateEventArgs.cs
- SqlTriggerContext.cs
- StreamMarshaler.cs
- AssemblyAttributes.cs
- ModelUIElement3D.cs
- EntityDataSourceWizardForm.cs
- iisPickupDirectory.cs
- PageThemeBuildProvider.cs
- LinqDataSourceContextEventArgs.cs
- DbSetClause.cs
- PluralizationService.cs
- WCFServiceClientProxyGenerator.cs
- PrivilegedConfigurationManager.cs
- TemplatedEditableDesignerRegion.cs
- LineSegment.cs
- _NestedMultipleAsyncResult.cs
- WebPartHeaderCloseVerb.cs
- LayoutEvent.cs
- VerificationException.cs
- CodeTypeDeclarationCollection.cs
- SqlLiftWhereClauses.cs
- OdbcErrorCollection.cs
- Models.cs
- CommonDialog.cs
- UnsafeNativeMethods.cs
- WeakEventManager.cs
- Size.cs
- ServerIdentity.cs
- StringFunctions.cs
- UIElementParaClient.cs
- ScriptingWebServicesSectionGroup.cs
- ProxyWebPartManagerDesigner.cs
- SByteConverter.cs
- WebPartHelpVerb.cs
- Clipboard.cs
- XmlUnspecifiedAttribute.cs
- Utility.cs
- DictionaryBase.cs