Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / XmlUtils / System / Xml / Xsl / XsltOld / CopyOfAction.cs / 1305376 / CopyOfAction.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.XPath; internal class CopyOfAction : CompiledAction { private const int ResultStored = 2; private const int NodeSetCopied = 3; private int selectKey = Compiler.InvalidQueryKey; internal override void Compile(Compiler compiler) { CompileAttributes(compiler); CheckRequiredAttribute(compiler, selectKey != Compiler.InvalidQueryKey, "select"); CheckEmpty(compiler); } internal override bool CompileAttribute(Compiler compiler) { string name = compiler.Input.LocalName; string value = compiler.Input.Value; if (Ref.Equal(name, compiler.Atoms.Select)) { this.selectKey = compiler.AddQuery(value); } else { return false; } return true; } internal override void Execute(Processor processor, ActionFrame frame) { Debug.Assert(processor != null && frame != null); switch (frame.State) { case Initialized: Debug.Assert(frame.NodeSet != null); Query query = processor.GetValueQuery(this.selectKey); object result = query.Evaluate(frame.NodeSet); if (result is XPathNodeIterator) { // we cash this query because otherwise current() works incorrectly. Bug#382166. // To be perfect we should use frame.NewNodeSet here processor.PushActionFrame(CopyNodeSetAction.GetAction(), new XPathArrayIterator(query)); frame.State = NodeSetCopied; break; } XPathNavigator nav = result as XPathNavigator; if (nav != null) { processor.PushActionFrame(CopyNodeSetAction.GetAction(), new XPathSingletonIterator(nav)); frame.State = NodeSetCopied; break; } string value = XmlConvert.ToXPathString(result); if (processor.TextEvent(value)) { frame.Finished(); } else { frame.StoredOutput = value; frame.State = ResultStored; } break; case ResultStored: Debug.Assert(frame.StoredOutput != null); processor.TextEvent(frame.StoredOutput); frame.Finished(); break; case NodeSetCopied: Debug.Assert(frame.State == NodeSetCopied); frame.Finished(); break; } } } } // 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.XPath; internal class CopyOfAction : CompiledAction { private const int ResultStored = 2; private const int NodeSetCopied = 3; private int selectKey = Compiler.InvalidQueryKey; internal override void Compile(Compiler compiler) { CompileAttributes(compiler); CheckRequiredAttribute(compiler, selectKey != Compiler.InvalidQueryKey, "select"); CheckEmpty(compiler); } internal override bool CompileAttribute(Compiler compiler) { string name = compiler.Input.LocalName; string value = compiler.Input.Value; if (Ref.Equal(name, compiler.Atoms.Select)) { this.selectKey = compiler.AddQuery(value); } else { return false; } return true; } internal override void Execute(Processor processor, ActionFrame frame) { Debug.Assert(processor != null && frame != null); switch (frame.State) { case Initialized: Debug.Assert(frame.NodeSet != null); Query query = processor.GetValueQuery(this.selectKey); object result = query.Evaluate(frame.NodeSet); if (result is XPathNodeIterator) { // we cash this query because otherwise current() works incorrectly. Bug#382166. // To be perfect we should use frame.NewNodeSet here processor.PushActionFrame(CopyNodeSetAction.GetAction(), new XPathArrayIterator(query)); frame.State = NodeSetCopied; break; } XPathNavigator nav = result as XPathNavigator; if (nav != null) { processor.PushActionFrame(CopyNodeSetAction.GetAction(), new XPathSingletonIterator(nav)); frame.State = NodeSetCopied; break; } string value = XmlConvert.ToXPathString(result); if (processor.TextEvent(value)) { frame.Finished(); } else { frame.StoredOutput = value; frame.State = ResultStored; } break; case ResultStored: Debug.Assert(frame.StoredOutput != null); processor.TextEvent(frame.StoredOutput); frame.Finished(); break; case NodeSetCopied: Debug.Assert(frame.State == NodeSetCopied); frame.Finished(); break; } } } } // 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
- controlskin.cs
- CfgParser.cs
- FormsAuthentication.cs
- SimpleHandlerFactory.cs
- ManualResetEvent.cs
- WebServiceParameterData.cs
- PropertyPathConverter.cs
- MediaEntryAttribute.cs
- SystemMulticastIPAddressInformation.cs
- CodeArgumentReferenceExpression.cs
- TextPointer.cs
- ToolboxComponentsCreatedEventArgs.cs
- _FtpControlStream.cs
- ExclusiveTcpListener.cs
- Convert.cs
- VisualBrush.cs
- MarkupProperty.cs
- QueryableDataSourceEditData.cs
- Util.cs
- DbConnectionClosed.cs
- NativeMethods.cs
- FilterUserControlBase.cs
- RepeatBehavior.cs
- ProfileBuildProvider.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- DesignerImageAdapter.cs
- SmtpNtlmAuthenticationModule.cs
- RuntimeCompatibilityAttribute.cs
- _NestedMultipleAsyncResult.cs
- CounterCreationDataCollection.cs
- TaskExceptionHolder.cs
- ContentDefinition.cs
- SmtpNegotiateAuthenticationModule.cs
- GridLength.cs
- CssTextWriter.cs
- ActivityBindForm.cs
- XPathConvert.cs
- _HelperAsyncResults.cs
- OLEDB_Util.cs
- CommandSet.cs
- EdmMember.cs
- NavigationEventArgs.cs
- BadImageFormatException.cs
- WinInet.cs
- DataControlCommands.cs
- DesignOnlyAttribute.cs
- TrackBarRenderer.cs
- LinkConverter.cs
- SafeLibraryHandle.cs
- PartitionerQueryOperator.cs
- IItemContainerGenerator.cs
- CellCreator.cs
- AuthenticateEventArgs.cs
- SendKeys.cs
- XPathNodeInfoAtom.cs
- X509ChainPolicy.cs
- ErrorWrapper.cs
- Button.cs
- ResourceWriter.cs
- InvalidWMPVersionException.cs
- EmbeddedObject.cs
- DesignTimeParseData.cs
- WebBrowser.cs
- StrokeCollectionConverter.cs
- CreateCardRequest.cs
- processwaithandle.cs
- PageEventArgs.cs
- FormViewRow.cs
- DefaultWorkflowLoaderService.cs
- ProvidersHelper.cs
- ServiceNotStartedException.cs
- RegistryKey.cs
- WebConfigurationHostFileChange.cs
- MouseActionConverter.cs
- HyperLink.cs
- DeleteHelper.cs
- TextModifier.cs
- TreeView.cs
- SubclassTypeValidator.cs
- ChannelBase.cs
- BaseInfoTable.cs
- PropertyInfoSet.cs
- _SslSessionsCache.cs
- CodeGen.cs
- KeyPressEvent.cs
- ComponentResourceKey.cs
- ExtensionSurface.cs
- PersonalizableAttribute.cs
- ObjectContextServiceProvider.cs
- Pen.cs
- SmtpDateTime.cs
- NavigationProgressEventArgs.cs
- HtmlTitle.cs
- DesignerSelectionListAdapter.cs
- IdnMapping.cs
- HtmlHistory.cs
- Facet.cs
- WebBrowser.cs
- TextTreeExtractElementUndoUnit.cs
- EncryptedKeyHashIdentifierClause.cs