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
- SpellerInterop.cs
- LineProperties.cs
- DateTimeFormatInfoScanner.cs
- TreeViewAutomationPeer.cs
- ToolBarPanel.cs
- SourceFileBuildProvider.cs
- FileRecordSequenceCompletedAsyncResult.cs
- TraceContextRecord.cs
- BitmapEffectOutputConnector.cs
- ImageCodecInfoPrivate.cs
- GlyphRun.cs
- EpmContentDeSerializer.cs
- SHA1Managed.cs
- SqlBinder.cs
- ReversePositionQuery.cs
- EntityContainerEmitter.cs
- ProfileProvider.cs
- compensatingcollection.cs
- SetStoryboardSpeedRatio.cs
- MultiBindingExpression.cs
- EmulateRecognizeCompletedEventArgs.cs
- ButtonDesigner.cs
- StringFreezingAttribute.cs
- AlphabetConverter.cs
- TransformerTypeCollection.cs
- UIElementParaClient.cs
- HandleValueEditor.cs
- ProtocolException.cs
- MdImport.cs
- IPPacketInformation.cs
- RIPEMD160.cs
- BitmapEffectInput.cs
- CodeDomSerializer.cs
- DbgUtil.cs
- UdpTransportBindingElement.cs
- TypeHelpers.cs
- DoubleLinkList.cs
- XmlNamespaceMapping.cs
- CompositeActivityDesigner.cs
- Stack.cs
- MultipleFilterMatchesException.cs
- SqlWriter.cs
- Panel.cs
- GeometryHitTestResult.cs
- DataBoundControlHelper.cs
- ControlAdapter.cs
- TraceSource.cs
- VisualBrush.cs
- StrokeSerializer.cs
- TableDetailsCollection.cs
- LexicalChunk.cs
- grammarelement.cs
- CompareValidator.cs
- DataSourceProvider.cs
- TypefaceCollection.cs
- EntitySet.cs
- AmbientProperties.cs
- WeakReferenceList.cs
- HostingEnvironment.cs
- SourceChangedEventArgs.cs
- BinaryObjectInfo.cs
- ThreadNeutralSemaphore.cs
- Header.cs
- IdentityReference.cs
- unsafenativemethodsother.cs
- PeerNameRecord.cs
- RuntimeResourceSet.cs
- DataViewSetting.cs
- OrderedDictionary.cs
- XmlSchemaSequence.cs
- WebZone.cs
- ToolStripOverflow.cs
- WorkItem.cs
- ListItemParagraph.cs
- DeobfuscatingStream.cs
- OrderedDictionaryStateHelper.cs
- DragEvent.cs
- NetSectionGroup.cs
- Propagator.cs
- VisualStyleElement.cs
- XPathAncestorQuery.cs
- LogReserveAndAppendState.cs
- TemplateBamlTreeBuilder.cs
- QueryCacheManager.cs
- IncrementalReadDecoders.cs
- ICspAsymmetricAlgorithm.cs
- Signature.cs
- BitVector32.cs
- Command.cs
- SafeNativeMemoryHandle.cs
- Add.cs
- InputProcessorProfilesLoader.cs
- DateTimeFormat.cs
- BaseInfoTable.cs
- UIElementAutomationPeer.cs
- UIAgentAsyncBeginRequest.cs
- DescendentsWalkerBase.cs
- dataobject.cs
- HeaderedItemsControl.cs
- BinaryObjectReader.cs