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 / CopyAction.cs / 1 / CopyAction.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 CopyAction : ContainerAction { // Local execution states private const int CopyText = 4; private const int NamespaceCopy = 5; private const int ContentsCopy = 6; private const int ProcessChildren = 7; private const int ChildrenOnly = 8; private string useAttributeSets; private bool empty; internal override void Compile(Compiler compiler) { CompileAttributes(compiler); if (compiler.Recurse()) { CompileTemplate(compiler); compiler.ToParent(); } if (this.containedActions == null) this.empty = true; } internal override bool CompileAttribute(Compiler compiler) { string name = compiler.Input.LocalName; string value = compiler.Input.Value; if (Keywords.Equals(name, compiler.Atoms.UseAttributeSets)) { this.useAttributeSets = value; AddAction(compiler.CreateUseAttributeSetsAction()); } else { return false; } return true; } internal override void Execute(Processor processor, ActionFrame frame) { Debug.Assert(processor != null && frame != null); while (processor.CanContinue) { switch (frame.State) { case Initialized: if (Processor.IsRoot(frame.Node)) { processor.PushActionFrame(frame); frame.State = ChildrenOnly; break; } if (processor.CopyBeginEvent(frame.Node, this.empty) == false) { // This event wasn't processed break; } frame.State = NamespaceCopy; continue; case NamespaceCopy: frame.State = ContentsCopy; if ( frame.Node.NodeType == XPathNodeType.Element ) { processor.PushActionFrame(CopyNamespacesAction.GetAction(), frame.NodeSet); break; } continue; case ContentsCopy: if (frame.Node.NodeType == XPathNodeType.Element && !this.empty) { //Debug.Assert(frame.Node.HasValue == false); processor.PushActionFrame(frame); frame.State = ProcessChildren; break; } else { if (processor.CopyTextEvent(frame.Node)) { frame.State = ProcessChildren; continue; } else { // This event wasn't processed break; } } case ProcessChildren: if (processor.CopyEndEvent(frame.Node)) { frame.Finished(); } break; case ChildrenOnly: frame.Finished(); break; default: Debug.Fail("Invalid CopyAction execution state"); break; } 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 CopyAction : ContainerAction { // Local execution states private const int CopyText = 4; private const int NamespaceCopy = 5; private const int ContentsCopy = 6; private const int ProcessChildren = 7; private const int ChildrenOnly = 8; private string useAttributeSets; private bool empty; internal override void Compile(Compiler compiler) { CompileAttributes(compiler); if (compiler.Recurse()) { CompileTemplate(compiler); compiler.ToParent(); } if (this.containedActions == null) this.empty = true; } internal override bool CompileAttribute(Compiler compiler) { string name = compiler.Input.LocalName; string value = compiler.Input.Value; if (Keywords.Equals(name, compiler.Atoms.UseAttributeSets)) { this.useAttributeSets = value; AddAction(compiler.CreateUseAttributeSetsAction()); } else { return false; } return true; } internal override void Execute(Processor processor, ActionFrame frame) { Debug.Assert(processor != null && frame != null); while (processor.CanContinue) { switch (frame.State) { case Initialized: if (Processor.IsRoot(frame.Node)) { processor.PushActionFrame(frame); frame.State = ChildrenOnly; break; } if (processor.CopyBeginEvent(frame.Node, this.empty) == false) { // This event wasn't processed break; } frame.State = NamespaceCopy; continue; case NamespaceCopy: frame.State = ContentsCopy; if ( frame.Node.NodeType == XPathNodeType.Element ) { processor.PushActionFrame(CopyNamespacesAction.GetAction(), frame.NodeSet); break; } continue; case ContentsCopy: if (frame.Node.NodeType == XPathNodeType.Element && !this.empty) { //Debug.Assert(frame.Node.HasValue == false); processor.PushActionFrame(frame); frame.State = ProcessChildren; break; } else { if (processor.CopyTextEvent(frame.Node)) { frame.State = ProcessChildren; continue; } else { // This event wasn't processed break; } } case ProcessChildren: if (processor.CopyEndEvent(frame.Node)) { frame.Finished(); } break; case ChildrenOnly: frame.Finished(); break; default: Debug.Fail("Invalid CopyAction execution state"); break; } 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
- NameValuePair.cs
- ZipIOEndOfCentralDirectoryBlock.cs
- ComponentChangedEvent.cs
- StyleCollection.cs
- EntityKey.cs
- FeatureSupport.cs
- Transactions.cs
- ConnectionProviderAttribute.cs
- SoapInteropTypes.cs
- XmlEncoding.cs
- InputLanguageProfileNotifySink.cs
- RijndaelManagedTransform.cs
- SymbolTable.cs
- ConfigDefinitionUpdates.cs
- HttpHandlerActionCollection.cs
- PermissionSetEnumerator.cs
- ECDiffieHellmanCngPublicKey.cs
- KnownBoxes.cs
- _DisconnectOverlappedAsyncResult.cs
- QilXmlWriter.cs
- InternalSafeNativeMethods.cs
- ExpressionLink.cs
- DoubleAnimation.cs
- ListViewGroupItemCollection.cs
- Mutex.cs
- OptimisticConcurrencyException.cs
- TransformPattern.cs
- CodeGroup.cs
- GreenMethods.cs
- XamlPathDataSerializer.cs
- ExpressionBuilderContext.cs
- HandleCollector.cs
- SignedXml.cs
- LoadRetryAsyncResult.cs
- Subtree.cs
- InfocardExtendedInformationCollection.cs
- DbProviderFactories.cs
- TextParagraphCache.cs
- XamlSerializerUtil.cs
- Identifier.cs
- CustomCredentialPolicy.cs
- CancelEventArgs.cs
- UIHelper.cs
- SqlRecordBuffer.cs
- AspNetHostingPermission.cs
- ViewCellSlot.cs
- _UriSyntax.cs
- NavigatingCancelEventArgs.cs
- HistoryEventArgs.cs
- IsolatedStorage.cs
- TargetException.cs
- WebPermission.cs
- WebPartVerbCollection.cs
- IgnoreFileBuildProvider.cs
- TextEditorThreadLocalStore.cs
- UnsafeNativeMethods.cs
- CommonDialog.cs
- HwndAppCommandInputProvider.cs
- ValueHandle.cs
- DataControlFieldCollection.cs
- ObjectSecurity.cs
- KeyboardDevice.cs
- DataListAutoFormat.cs
- hebrewshape.cs
- Image.cs
- TemplateField.cs
- RtType.cs
- CryptoApi.cs
- VirtualizingPanel.cs
- XmlSchemaInferenceException.cs
- CommandHelpers.cs
- DesignBinding.cs
- MouseGestureConverter.cs
- SqlMetaData.cs
- BamlResourceDeserializer.cs
- HyperLinkField.cs
- webeventbuffer.cs
- DesignerAttribute.cs
- SortDescription.cs
- COM2ExtendedUITypeEditor.cs
- KeyMatchBuilder.cs
- GeneralTransform3DGroup.cs
- OracleFactory.cs
- PropertyGridEditorPart.cs
- Visual3DCollection.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- ConditionalAttribute.cs
- NameSpaceExtractor.cs
- InternalBufferOverflowException.cs
- counter.cs
- WebServiceClientProxyGenerator.cs
- TreeBuilderXamlTranslator.cs
- XmlLinkedNode.cs
- MediaContext.cs
- ProviderMetadataCachedInformation.cs
- RepeaterItemEventArgs.cs
- Int32AnimationUsingKeyFrames.cs
- MaskDescriptor.cs
- TdsParameterSetter.cs
- SQLCharsStorage.cs