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
- WpfPayload.cs
- HttpSessionStateBase.cs
- SHA256Cng.cs
- RegexFCD.cs
- AttachmentService.cs
- TimeEnumHelper.cs
- ExtendedPropertyCollection.cs
- DataTableClearEvent.cs
- ResourceProviderFactory.cs
- ButtonFieldBase.cs
- Enumerable.cs
- StackOverflowException.cs
- NamespaceCollection.cs
- OrCondition.cs
- StatusBarDrawItemEvent.cs
- ToolStripRenderEventArgs.cs
- PipeSecurity.cs
- ScrollProperties.cs
- SoapServerMethod.cs
- XmlSchemaImporter.cs
- ProcessHostFactoryHelper.cs
- InvalidCommandTreeException.cs
- SqlDataSourceCommandParser.cs
- OperandQuery.cs
- _SecureChannel.cs
- StringStorage.cs
- AbstractExpressions.cs
- TextDecoration.cs
- OleDbConnection.cs
- StoreItemCollection.Loader.cs
- OdbcConnectionHandle.cs
- MatrixTransform.cs
- SecurityContextKeyIdentifierClause.cs
- MexHttpsBindingElement.cs
- MessageHeaders.cs
- Positioning.cs
- OrderedDictionaryStateHelper.cs
- WebPartDisplayModeCancelEventArgs.cs
- ISessionStateStore.cs
- VisualCollection.cs
- BaseDataList.cs
- EntityStoreSchemaFilterEntry.cs
- CompareInfo.cs
- MemberNameValidator.cs
- XmlILTrace.cs
- BatchParser.cs
- unitconverter.cs
- Transform.cs
- TextParaLineResult.cs
- Attachment.cs
- RelationshipConverter.cs
- ProgressBarBrushConverter.cs
- UnsafeNativeMethods.cs
- CngUIPolicy.cs
- _NestedSingleAsyncResult.cs
- XsltSettings.cs
- LineSegment.cs
- ModelFunctionTypeElement.cs
- OleAutBinder.cs
- DispatchChannelSink.cs
- X509ServiceCertificateAuthentication.cs
- EntityDataSourceState.cs
- WebPartUtil.cs
- SimplePropertyEntry.cs
- externdll.cs
- RunClient.cs
- IFlowDocumentViewer.cs
- TabRenderer.cs
- TextDpi.cs
- WinInetCache.cs
- RtfNavigator.cs
- relpropertyhelper.cs
- CacheMode.cs
- AsymmetricKeyExchangeDeformatter.cs
- PaperSize.cs
- LoadedOrUnloadedOperation.cs
- DataServices.cs
- ViewBox.cs
- HandlerWithFactory.cs
- Convert.cs
- DataSourceControl.cs
- RegexMatchCollection.cs
- PagedDataSource.cs
- SpecularMaterial.cs
- SapiGrammar.cs
- ComplexBindingPropertiesAttribute.cs
- DataRowView.cs
- ApplicationSecurityManager.cs
- ProcessThreadCollection.cs
- LockCookie.cs
- Mappings.cs
- SettingsPropertyValueCollection.cs
- rsa.cs
- CultureInfo.cs
- NativeMethods.cs
- StrongName.cs
- ResourceBinder.cs
- AnimationStorage.cs
- XmlValidatingReader.cs
- XmlComment.cs