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
- VariableQuery.cs
- DrawingState.cs
- EntityTypeEmitter.cs
- DynamicObjectAccessor.cs
- DataSourceListEditor.cs
- ResourcesBuildProvider.cs
- XmlSiteMapProvider.cs
- _ContextAwareResult.cs
- PropertyDescriptorCollection.cs
- ListBindableAttribute.cs
- _BufferOffsetSize.cs
- DbExpressionVisitor.cs
- WebResourceUtil.cs
- InstancePersistenceEvent.cs
- TableCell.cs
- UnsafeNetInfoNativeMethods.cs
- Pair.cs
- CodeEventReferenceExpression.cs
- RadioButtonAutomationPeer.cs
- SiteIdentityPermission.cs
- XmlSchemaAppInfo.cs
- HostingPreferredMapPath.cs
- ComboBoxItem.cs
- ReturnValue.cs
- TextHintingModeValidation.cs
- ContravarianceAdapter.cs
- TreePrinter.cs
- ContextStack.cs
- Annotation.cs
- HttpListenerRequest.cs
- ChtmlImageAdapter.cs
- ChtmlTextWriter.cs
- GuidelineCollection.cs
- WebPageTraceListener.cs
- Lasso.cs
- MsmqIntegrationBindingElement.cs
- GeneralTransform3D.cs
- HatchBrush.cs
- InitializingNewItemEventArgs.cs
- SourceItem.cs
- CornerRadiusConverter.cs
- ClientSponsor.cs
- HelpEvent.cs
- BaseComponentEditor.cs
- DefaultValueConverter.cs
- LoginAutoFormat.cs
- FtpWebResponse.cs
- OuterGlowBitmapEffect.cs
- Animatable.cs
- TextChange.cs
- TextDocumentView.cs
- DCSafeHandle.cs
- XmlReflectionImporter.cs
- X509Certificate2Collection.cs
- AppSecurityManager.cs
- FileUpload.cs
- XmlEncoding.cs
- Range.cs
- OutputScope.cs
- SerialReceived.cs
- PartitionerStatic.cs
- FunctionDescription.cs
- TreeViewItem.cs
- HttpException.cs
- CheckBoxPopupAdapter.cs
- HandleCollector.cs
- SaveFileDialog.cs
- ComponentSerializationService.cs
- SizeFConverter.cs
- TimelineGroup.cs
- SecurityState.cs
- UnsafeNativeMethods.cs
- NotImplementedException.cs
- DataGridViewRowConverter.cs
- ScriptingAuthenticationServiceSection.cs
- DataGridViewCheckBoxColumn.cs
- PaperSource.cs
- Visual3DCollection.cs
- ApplicationServiceManager.cs
- UDPClient.cs
- CharAnimationBase.cs
- HostingPreferredMapPath.cs
- Point3DAnimation.cs
- SqlDataSourceView.cs
- ViewBox.cs
- ItemContainerGenerator.cs
- TypeValidationEventArgs.cs
- XmlReflectionMember.cs
- EDesignUtil.cs
- Int64AnimationUsingKeyFrames.cs
- HashHelper.cs
- OdbcErrorCollection.cs
- _CacheStreams.cs
- ApplicationCommands.cs
- HotCommands.cs
- Function.cs
- TransformerConfigurationWizardBase.cs
- ReadOnlyHierarchicalDataSourceView.cs
- SqlNodeTypeOperators.cs
- DesignerAttribute.cs