Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- _HelperAsyncResults.cs
- TabletDevice.cs
- FolderLevelBuildProviderCollection.cs
- PageStatePersister.cs
- MoveSizeWinEventHandler.cs
- TableStyle.cs
- ToolStripSettings.cs
- HttpValueCollection.cs
- XmlMembersMapping.cs
- SwitchAttribute.cs
- Clock.cs
- ViewBase.cs
- LineGeometry.cs
- WebEventTraceProvider.cs
- CacheMode.cs
- DataViewManagerListItemTypeDescriptor.cs
- CopyAction.cs
- HwndAppCommandInputProvider.cs
- NativeMethodsOther.cs
- RegexInterpreter.cs
- TransactionOptions.cs
- HostedNamedPipeTransportManager.cs
- DataGridViewComboBoxCell.cs
- ClientSettingsStore.cs
- AuthenticationSection.cs
- ApplicationHost.cs
- FixedSOMSemanticBox.cs
- SoapEnumAttribute.cs
- SecurityPermission.cs
- StrokeNode.cs
- AnnotationAuthorChangedEventArgs.cs
- Region.cs
- MSG.cs
- TypedDataSetSchemaImporterExtension.cs
- LongSumAggregationOperator.cs
- TextParaLineResult.cs
- BindingListCollectionView.cs
- GridViewRowEventArgs.cs
- SignatureHelper.cs
- ParameterElementCollection.cs
- EditorBrowsableAttribute.cs
- ActivityCompletionCallbackWrapper.cs
- ServiceDescriptionSerializer.cs
- ScrollEventArgs.cs
- DescendentsWalkerBase.cs
- KeyBinding.cs
- listitem.cs
- DataGridSortingEventArgs.cs
- SystemKeyConverter.cs
- XmlSerializerSection.cs
- InternalPermissions.cs
- Domain.cs
- HitTestResult.cs
- Selection.cs
- TrackingStringDictionary.cs
- DataColumnSelectionConverter.cs
- MatchingStyle.cs
- QilChoice.cs
- DataGridViewCheckBoxColumn.cs
- FieldNameLookup.cs
- EventMap.cs
- PointCollection.cs
- _RequestLifetimeSetter.cs
- Model3DGroup.cs
- MenuItemBinding.cs
- SchemaMapping.cs
- FileDialog_Vista_Interop.cs
- IApplicationTrustManager.cs
- PersonalizationStateQuery.cs
- __Error.cs
- AttributeTableBuilder.cs
- ColorKeyFrameCollection.cs
- SocketPermission.cs
- ValidationError.cs
- Dynamic.cs
- Facet.cs
- ZipIOExtraFieldZip64Element.cs
- Delegate.cs
- OrderedDictionary.cs
- MasterPageBuildProvider.cs
- AnnotationAuthorChangedEventArgs.cs
- TableParaClient.cs
- ServiceDescription.cs
- basenumberconverter.cs
- Pair.cs
- CellTreeSimplifier.cs
- SqlCharStream.cs
- PointUtil.cs
- BitmapMetadataEnumerator.cs
- SoapProtocolReflector.cs
- CopyNodeSetAction.cs
- AppDomainProtocolHandler.cs
- XmlSchemaCollection.cs
- AppDomainShutdownMonitor.cs
- Section.cs
- SimpleNameService.cs
- SourceItem.cs
- Label.cs
- LogEntrySerializer.cs
- ValueQuery.cs