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
- SourceInterpreter.cs
- DesignerActionHeaderItem.cs
- ResourceCodeDomSerializer.cs
- DataSetUtil.cs
- PeerEndPoint.cs
- PermissionToken.cs
- KnownBoxes.cs
- KoreanLunisolarCalendar.cs
- MailMessageEventArgs.cs
- SqlMethodTransformer.cs
- EventLogPermissionEntryCollection.cs
- OleDbCommandBuilder.cs
- CursorInteropHelper.cs
- X509Certificate.cs
- LinqDataSourceStatusEventArgs.cs
- GregorianCalendarHelper.cs
- AttachedPropertyBrowsableAttribute.cs
- UseLicense.cs
- BlurBitmapEffect.cs
- SqlCachedBuffer.cs
- RegexFCD.cs
- ClientRolePrincipal.cs
- Int32CAMarshaler.cs
- ByteStack.cs
- UInt64Converter.cs
- StringUtil.cs
- ItemChangedEventArgs.cs
- BindingExpressionBase.cs
- ParseChildrenAsPropertiesAttribute.cs
- HttpChannelFactory.cs
- HttpServerChannel.cs
- ToolStripDropTargetManager.cs
- RequestCachingSection.cs
- Listbox.cs
- FileChangesMonitor.cs
- SafeMemoryMappedViewHandle.cs
- FormClosedEvent.cs
- ListViewTableRow.cs
- PaperSource.cs
- ObjectViewFactory.cs
- DeflateStream.cs
- XmlSchema.cs
- InheritanceRules.cs
- EntityContainerEmitter.cs
- ParserOptions.cs
- WebServiceClientProxyGenerator.cs
- WebPartDisplayMode.cs
- MarshalDirectiveException.cs
- WebPartEditorOkVerb.cs
- TextTreeInsertElementUndoUnit.cs
- ShimAsPublicXamlType.cs
- FlowPosition.cs
- DropDownButton.cs
- XmlSignatureProperties.cs
- FixedSOMGroup.cs
- NativeMethodsOther.cs
- ApplicationFileCodeDomTreeGenerator.cs
- ToolStripItemEventArgs.cs
- WindowVisualStateTracker.cs
- WorkflowMessageEventArgs.cs
- SubpageParaClient.cs
- FormViewCommandEventArgs.cs
- SystemResources.cs
- XmlConvert.cs
- XmlComplianceUtil.cs
- HtmlMeta.cs
- GridViewSortEventArgs.cs
- PolyQuadraticBezierSegment.cs
- KeyGestureConverter.cs
- EventMappingSettings.cs
- ThreadStaticAttribute.cs
- TextOutput.cs
- Hash.cs
- _BasicClient.cs
- XPathException.cs
- SecurityPolicySection.cs
- SystemParameters.cs
- ArglessEventHandlerProxy.cs
- SizeAnimationClockResource.cs
- FormsAuthenticationUser.cs
- ContextMarshalException.cs
- CommonGetThemePartSize.cs
- Rotation3D.cs
- AttachInfo.cs
- TreeNodeCollection.cs
- GPStream.cs
- PropertyGridCommands.cs
- SpellCheck.cs
- ParenthesizePropertyNameAttribute.cs
- FormClosedEvent.cs
- SqlBuffer.cs
- _CookieModule.cs
- DecoderBestFitFallback.cs
- ResXResourceWriter.cs
- PerformanceCounter.cs
- NavigateEvent.cs
- ExpressionVisitor.cs
- BaseDataListComponentEditor.cs
- InputLanguageEventArgs.cs
- TypedTableBase.cs