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
- HMACSHA384.cs
- SequenceDesigner.xaml.cs
- WizardPanel.cs
- PaintValueEventArgs.cs
- TransformPattern.cs
- SecurityContextTokenValidationException.cs
- DataGridViewCellValueEventArgs.cs
- PropertyManager.cs
- InputLangChangeRequestEvent.cs
- EventLogger.cs
- FloaterBaseParaClient.cs
- SourceElementsCollection.cs
- SecurityTokenSerializer.cs
- CachedCompositeFamily.cs
- ClaimSet.cs
- ResourceType.cs
- UserControlBuildProvider.cs
- Italic.cs
- EmptyEnumerator.cs
- SQLInt16Storage.cs
- ZipIOFileItemStream.cs
- WebHostedComPlusServiceHost.cs
- OpenFileDialog.cs
- cookie.cs
- SplitterPanel.cs
- relpropertyhelper.cs
- StreamResourceInfo.cs
- RuleCache.cs
- PrintDialog.cs
- IPAddressCollection.cs
- Dynamic.cs
- DataPagerFieldCollection.cs
- XmlDocumentSerializer.cs
- SoapTypeAttribute.cs
- SchemaCompiler.cs
- NamespaceImport.cs
- WebPartDisplayMode.cs
- Span.cs
- DependencyPropertyKind.cs
- StaticSiteMapProvider.cs
- XmlAtomicValue.cs
- ManagementEventWatcher.cs
- documentation.cs
- ListControlConvertEventArgs.cs
- SqlMetaData.cs
- FileIOPermission.cs
- WebHeaderCollection.cs
- StretchValidation.cs
- DrawingBrush.cs
- UnsafeNativeMethodsTablet.cs
- DesignerVerb.cs
- DescendentsWalkerBase.cs
- AnnotationComponentChooser.cs
- ApplicationFileParser.cs
- PointAnimationUsingPath.cs
- RtfControlWordInfo.cs
- GlyphRunDrawing.cs
- XamlStream.cs
- DataGridViewCellStyleConverter.cs
- ConditionBrowserDialog.cs
- DataServiceProcessingPipelineEventArgs.cs
- RouteItem.cs
- Visual3D.cs
- SessionState.cs
- WebServiceErrorEvent.cs
- DependencyPropertyAttribute.cs
- DatePicker.cs
- DataTableNameHandler.cs
- NativeMethods.cs
- SafeUserTokenHandle.cs
- ConstructorBuilder.cs
- TextInfo.cs
- ActiveXSite.cs
- MethodCallConverter.cs
- SQLMoney.cs
- ValidationContext.cs
- HttpResponse.cs
- WebScriptMetadataMessageEncoderFactory.cs
- PageCodeDomTreeGenerator.cs
- SafeLocalAllocation.cs
- ModifierKeysValueSerializer.cs
- DragCompletedEventArgs.cs
- BordersPage.cs
- PolyLineSegment.cs
- _ContextAwareResult.cs
- PackWebResponse.cs
- OdbcErrorCollection.cs
- XMLDiffLoader.cs
- Rotation3DAnimation.cs
- SqlDataSourceFilteringEventArgs.cs
- ActiveXSite.cs
- MeasureData.cs
- PropagatorResult.cs
- IsolatedStorageException.cs
- Mapping.cs
- XmlSchemaExporter.cs
- InvalidAsynchronousStateException.cs
- CapabilitiesAssignment.cs
- WindowsFormsEditorServiceHelper.cs
- ToolStripDropTargetManager.cs