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
- objectresult_tresulttype.cs
- MouseOverProperty.cs
- ResourceReferenceExpressionConverter.cs
- QueryParameter.cs
- ChangesetResponse.cs
- Control.cs
- ParallelTimeline.cs
- StagingAreaInputItem.cs
- DrawingContext.cs
- ComponentDesigner.cs
- AddressingProperty.cs
- NetworkAddressChange.cs
- Style.cs
- ResourceDictionary.cs
- BlockingCollection.cs
- CodeDOMUtility.cs
- SchemaImporterExtensionElement.cs
- XsltException.cs
- EventLogSession.cs
- XmlILConstructAnalyzer.cs
- LineProperties.cs
- ArgumentsParser.cs
- IconEditor.cs
- ListViewDeleteEventArgs.cs
- oledbmetadatacollectionnames.cs
- HighContrastHelper.cs
- ModulesEntry.cs
- KeyProperty.cs
- TraceData.cs
- CheckBoxField.cs
- PrePrepareMethodAttribute.cs
- SqlTriggerContext.cs
- SessionStateUtil.cs
- PreviousTrackingServiceAttribute.cs
- InvalidPropValue.cs
- ColumnWidthChangedEvent.cs
- TimeZoneInfo.cs
- WpfGeneratedKnownTypes.cs
- PropertyInfo.cs
- Util.cs
- SortQuery.cs
- WindowsFormsHelpers.cs
- CodeMethodInvokeExpression.cs
- GridViewUpdateEventArgs.cs
- TokenizerHelper.cs
- WebZone.cs
- KeyEvent.cs
- VolatileResourceManager.cs
- CultureTableRecord.cs
- FontClient.cs
- ControlBuilderAttribute.cs
- QilNode.cs
- FilteredReadOnlyMetadataCollection.cs
- ZipIOCentralDirectoryFileHeader.cs
- ConstructorExpr.cs
- ThreadStartException.cs
- ListBindableAttribute.cs
- PixelFormats.cs
- ListViewItem.cs
- APCustomTypeDescriptor.cs
- ControlPaint.cs
- ArgumentException.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- EntityConnectionStringBuilder.cs
- Random.cs
- ControlValuePropertyAttribute.cs
- VersionedStreamOwner.cs
- SqlAliaser.cs
- StrokeSerializer.cs
- ErrorsHelper.cs
- remotingproxy.cs
- DataStreamFromComStream.cs
- PropertyMappingExceptionEventArgs.cs
- Roles.cs
- versioninfo.cs
- ThicknessAnimationUsingKeyFrames.cs
- WindowsSolidBrush.cs
- RotateTransform3D.cs
- AuthenticatedStream.cs
- ExpressionParser.cs
- SqlDataSourceConnectionPanel.cs
- ConnectionStringsExpressionBuilder.cs
- SynchronizationContext.cs
- DeleteIndexBinder.cs
- Label.cs
- CompilerGlobalScopeAttribute.cs
- TreeNodeMouseHoverEvent.cs
- ManagementQuery.cs
- XdrBuilder.cs
- EntityDataSourceChangedEventArgs.cs
- DataPagerFieldCommandEventArgs.cs
- QueryStringParameter.cs
- SqlReferenceCollection.cs
- DataColumnMapping.cs
- WebUtility.cs
- ScriptResourceAttribute.cs
- UserPreferenceChangedEventArgs.cs
- BinaryConverter.cs
- BindStream.cs
- TextEncodedRawTextWriter.cs