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
- WebPartCancelEventArgs.cs
- HttpPostedFile.cs
- NativeMethodsOther.cs
- DependentTransaction.cs
- QilUnary.cs
- SqlTrackingWorkflowInstance.cs
- StreamGeometry.cs
- ToolStripSeparator.cs
- TargetControlTypeCache.cs
- CorrelationManager.cs
- WebExceptionStatus.cs
- DataMisalignedException.cs
- ActionMessageFilterTable.cs
- BamlLocalizationDictionary.cs
- JpegBitmapDecoder.cs
- NonClientArea.cs
- CaretElement.cs
- BitmapFrameDecode.cs
- WindowsGraphics.cs
- CapabilitiesState.cs
- WorkflowQueue.cs
- SpecularMaterial.cs
- FunctionImportMapping.cs
- SessionStateSection.cs
- ContentType.cs
- ComIntegrationManifestGenerator.cs
- MD5CryptoServiceProvider.cs
- WebPartCatalogCloseVerb.cs
- GeneralTransformGroup.cs
- GeneralTransform3DGroup.cs
- CustomTypeDescriptor.cs
- GenericNameHandler.cs
- UserPreferenceChangingEventArgs.cs
- TypeGeneratedEventArgs.cs
- MarginsConverter.cs
- HtmlImageAdapter.cs
- ProcessHost.cs
- Timeline.cs
- CancellationState.cs
- XslTransform.cs
- UIPermission.cs
- ResXResourceWriter.cs
- Image.cs
- IRCollection.cs
- AlignmentXValidation.cs
- ResourceDescriptionAttribute.cs
- ExtenderControl.cs
- EdmItemError.cs
- ProgressBarAutomationPeer.cs
- XmlSubtreeReader.cs
- ListBoxItemWrapperAutomationPeer.cs
- DbMetaDataColumnNames.cs
- ChannelSinkStacks.cs
- TrackingProfileSerializer.cs
- WebConvert.cs
- ReliabilityContractAttribute.cs
- NativeMethods.cs
- FirstMatchCodeGroup.cs
- ExternalDataExchangeService.cs
- _TLSstream.cs
- NetworkInformationException.cs
- SiteMapDataSource.cs
- AutoGeneratedField.cs
- SourceCollection.cs
- SessionIDManager.cs
- CodeLinePragma.cs
- ProcessHostServerConfig.cs
- XmlQueryCardinality.cs
- SerialReceived.cs
- CodeObjectCreateExpression.cs
- DBCSCodePageEncoding.cs
- XamlToRtfWriter.cs
- MetadataItem.cs
- ListBoxDesigner.cs
- StaticContext.cs
- XmlValidatingReader.cs
- CompilationUtil.cs
- PrePrepareMethodAttribute.cs
- DelegateSerializationHolder.cs
- StyleCollectionEditor.cs
- UndirectedGraph.cs
- GeneralTransform2DTo3D.cs
- SymbolMethod.cs
- BooleanToVisibilityConverter.cs
- CodeDOMUtility.cs
- ExtendedProtectionPolicy.cs
- EventSinkHelperWriter.cs
- CompositeFontInfo.cs
- UTF32Encoding.cs
- TextParentUndoUnit.cs
- DataGridRow.cs
- CommandManager.cs
- HatchBrush.cs
- SemanticBasicElement.cs
- SendActivityDesignerTheme.cs
- PrimitiveCodeDomSerializer.cs
- DescendantQuery.cs
- PersonalizablePropertyEntry.cs
- TextOutput.cs
- StateDesigner.TransitionInfo.cs