Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- ServicePoint.cs
- Rule.cs
- DispatcherExceptionEventArgs.cs
- DbgCompiler.cs
- BuildResult.cs
- PeerNameRegistration.cs
- ConstructorNeedsTagAttribute.cs
- StylusCaptureWithinProperty.cs
- FixedDocument.cs
- CodeRemoveEventStatement.cs
- infer.cs
- PowerModeChangedEventArgs.cs
- unsafeIndexingFilterStream.cs
- XmlTextAttribute.cs
- StyleXamlParser.cs
- SecurityPolicySection.cs
- ReadContentAsBinaryHelper.cs
- WebControlsSection.cs
- GraphicsPath.cs
- IdentityModelDictionary.cs
- CipherData.cs
- StateMachineExecutionState.cs
- CompilerWrapper.cs
- ChannelServices.cs
- StorageFunctionMapping.cs
- XmlEntity.cs
- PerformanceCounter.cs
- SchemaExporter.cs
- Utils.cs
- RotateTransform.cs
- Propagator.ExtentPlaceholderCreator.cs
- DataDocumentXPathNavigator.cs
- FontCollection.cs
- IFlowDocumentViewer.cs
- ColorConverter.cs
- _BaseOverlappedAsyncResult.cs
- ConfigPathUtility.cs
- ClientSideProviderDescription.cs
- DataFormat.cs
- TemplateColumn.cs
- UnmanagedMarshal.cs
- ModuleConfigurationInfo.cs
- RuntimeHandles.cs
- TypeConverterHelper.cs
- TypeResolver.cs
- CollectionChangeEventArgs.cs
- TransactionInterop.cs
- HexParser.cs
- ProcessModelSection.cs
- PerfCounterSection.cs
- QueryResponse.cs
- Utils.cs
- ContourSegment.cs
- FontUnit.cs
- IisTraceListener.cs
- Baml2006KeyRecord.cs
- SafeWaitHandle.cs
- LogExtentCollection.cs
- WhiteSpaceTrimStringConverter.cs
- ListManagerBindingsCollection.cs
- ConnectionPoint.cs
- UnSafeCharBuffer.cs
- PageHandlerFactory.cs
- HtmlTitle.cs
- ListViewCommandEventArgs.cs
- ExtensionElementCollection.cs
- PassportPrincipal.cs
- SpeechRecognitionEngine.cs
- WindowsGraphicsCacheManager.cs
- XmlCustomFormatter.cs
- RegexReplacement.cs
- Empty.cs
- validationstate.cs
- ChannelServices.cs
- CapabilitiesAssignment.cs
- PageClientProxyGenerator.cs
- DocumentSchemaValidator.cs
- DbSetClause.cs
- IResourceProvider.cs
- COM2PictureConverter.cs
- SortQuery.cs
- ImageDrawing.cs
- PrimitiveCodeDomSerializer.cs
- ConnectionStringSettings.cs
- TrackingStringDictionary.cs
- TaskExceptionHolder.cs
- ScrollBarRenderer.cs
- HttpChannelHelper.cs
- ALinqExpressionVisitor.cs
- XmlSchemaObjectTable.cs
- DataControlLinkButton.cs
- InternalBase.cs
- DataGridViewCellConverter.cs
- ThicknessConverter.cs
- DataGridViewCellStateChangedEventArgs.cs
- ZoneButton.cs
- SqlConnectionStringBuilder.cs
- FloatUtil.cs
- X509ThumbprintKeyIdentifierClause.cs
- ExpanderAutomationPeer.cs