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
- ProxyHwnd.cs
- PermissionRequestEvidence.cs
- DispatchChannelSink.cs
- TypefaceMap.cs
- SqlGenericUtil.cs
- Page.cs
- ExpandedWrapper.cs
- BindingBase.cs
- mda.cs
- ValidatorCompatibilityHelper.cs
- SignerInfo.cs
- InProcStateClientManager.cs
- TreeViewImageKeyConverter.cs
- ServiceReference.cs
- ResourceDefaultValueAttribute.cs
- TableCell.cs
- WebDisplayNameAttribute.cs
- JumpTask.cs
- ProfileEventArgs.cs
- WebServiceResponse.cs
- DefaultClaimSet.cs
- JsonObjectDataContract.cs
- CqlWriter.cs
- FixedHighlight.cs
- Aggregates.cs
- DataRecordInternal.cs
- WebPageTraceListener.cs
- HtmlUtf8RawTextWriter.cs
- WriteTimeStream.cs
- ApplicationHost.cs
- JumpPath.cs
- SynchronizationContext.cs
- HttpResponse.cs
- RequestQueryParser.cs
- CompilerParameters.cs
- DecimalConverter.cs
- RuntimeConfigLKG.cs
- CompositeScriptReferenceEventArgs.cs
- CombinedGeometry.cs
- SizeConverter.cs
- XmlRawWriterWrapper.cs
- shaperfactory.cs
- ImageBrush.cs
- ColorAnimationBase.cs
- SafeNativeMethodsMilCoreApi.cs
- ApplicationInterop.cs
- SymmetricKeyWrap.cs
- TransformDescriptor.cs
- Terminate.cs
- XmlElementList.cs
- GlyphRunDrawing.cs
- LassoHelper.cs
- WindowsImpersonationContext.cs
- CatalogPartChrome.cs
- NullReferenceException.cs
- WindowPatternIdentifiers.cs
- ModifierKeysValueSerializer.cs
- OperatorExpressions.cs
- _KerberosClient.cs
- ExpressionDumper.cs
- HtmlEmptyTagControlBuilder.cs
- TextCollapsingProperties.cs
- IdentitySection.cs
- XmlIterators.cs
- DataGridViewSelectedCellsAccessibleObject.cs
- TTSEngineProxy.cs
- Workspace.cs
- ComboBox.cs
- RelationalExpressions.cs
- SqlDeflator.cs
- XPathExpr.cs
- WmlValidatorAdapter.cs
- RequestChannelBinder.cs
- FlowDocumentScrollViewer.cs
- QuaternionConverter.cs
- AdornerDecorator.cs
- WebPartExportVerb.cs
- AdPostCacheSubstitution.cs
- RSAProtectedConfigurationProvider.cs
- UInt16.cs
- TypedTableBaseExtensions.cs
- SqlLiftWhereClauses.cs
- Graphics.cs
- OleTxTransactionInfo.cs
- HttpModulesSection.cs
- BypassElement.cs
- Point3DCollectionValueSerializer.cs
- BrowserCapabilitiesCompiler.cs
- IItemProperties.cs
- ToolStripSplitStackLayout.cs
- MediaSystem.cs
- XmlDigitalSignatureProcessor.cs
- ThicknessAnimationBase.cs
- Rect3D.cs
- DurableRuntimeValidator.cs
- WebPartConnectVerb.cs
- TextParagraphView.cs
- WinEventHandler.cs
- XamlGridLengthSerializer.cs
- NumberEdit.cs