Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / XmlUtils / System / Xml / Xsl / XsltOld / CopyNodeSetAction.cs / 1 / CopyNodeSetAction.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; internal sealed class CopyNodeSetAction : Action { private const int BeginEvent = 2; private const int Contents = 3; private const int Namespaces = 4; private const int Attributes = 5; private const int Subtree = 6; private const int EndEvent = 7; private static CopyNodeSetAction s_Action = new CopyNodeSetAction(); internal static CopyNodeSetAction GetAction() { Debug.Assert(s_Action != null); return s_Action; } internal override void Execute(Processor processor, ActionFrame frame) { Debug.Assert(processor != null && frame != null); while (processor.CanContinue) { switch (frame.State) { case Initialized: if (frame.NextNode(processor)) { frame.State = BeginEvent; goto case BeginEvent; } else { frame.Finished(); break; } case BeginEvent: Debug.Assert(frame.State == BeginEvent); if (SendBeginEvent(processor, frame.Node) == false) { // This one wasn't output break; } frame.State = Contents; continue; case Contents: Debug.Assert(frame.State == Contents); XPathNodeType nodeType = frame.Node.NodeType; if (nodeType == XPathNodeType.Element || nodeType == XPathNodeType.Root) { processor.PushActionFrame(CopyNamespacesAction.GetAction(), frame.NodeSet); frame.State = Namespaces; break; } if (SendTextEvent(processor, frame.Node) == false) { // This one wasn't output break; } frame.State = EndEvent; continue; case Namespaces: processor.PushActionFrame(CopyAttributesAction.GetAction(), frame.NodeSet); frame.State = Attributes; break; case Attributes: if (frame.Node.HasChildren) { processor.PushActionFrame(GetAction(), frame.Node.SelectChildren(XPathNodeType.All)); frame.State = Subtree; break; } frame.State = EndEvent; goto case EndEvent; case Subtree: //frame.Node.MoveToParent(); frame.State = EndEvent; continue; case EndEvent: Debug.Assert(frame.State == EndEvent); if (SendEndEvent(processor, frame.Node) == false) { // This one wasn't output break; } frame.State = Initialized; continue; } break; } } private static bool SendBeginEvent(Processor processor, XPathNavigator node) { return processor.CopyBeginEvent(node, node.IsEmptyElement); } private static bool SendTextEvent(Processor processor, XPathNavigator node) { return processor.CopyTextEvent(node); } private static bool SendEndEvent(Processor processor, XPathNavigator node) { return processor.CopyEndEvent(node); } } } // 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; internal sealed class CopyNodeSetAction : Action { private const int BeginEvent = 2; private const int Contents = 3; private const int Namespaces = 4; private const int Attributes = 5; private const int Subtree = 6; private const int EndEvent = 7; private static CopyNodeSetAction s_Action = new CopyNodeSetAction(); internal static CopyNodeSetAction GetAction() { Debug.Assert(s_Action != null); return s_Action; } internal override void Execute(Processor processor, ActionFrame frame) { Debug.Assert(processor != null && frame != null); while (processor.CanContinue) { switch (frame.State) { case Initialized: if (frame.NextNode(processor)) { frame.State = BeginEvent; goto case BeginEvent; } else { frame.Finished(); break; } case BeginEvent: Debug.Assert(frame.State == BeginEvent); if (SendBeginEvent(processor, frame.Node) == false) { // This one wasn't output break; } frame.State = Contents; continue; case Contents: Debug.Assert(frame.State == Contents); XPathNodeType nodeType = frame.Node.NodeType; if (nodeType == XPathNodeType.Element || nodeType == XPathNodeType.Root) { processor.PushActionFrame(CopyNamespacesAction.GetAction(), frame.NodeSet); frame.State = Namespaces; break; } if (SendTextEvent(processor, frame.Node) == false) { // This one wasn't output break; } frame.State = EndEvent; continue; case Namespaces: processor.PushActionFrame(CopyAttributesAction.GetAction(), frame.NodeSet); frame.State = Attributes; break; case Attributes: if (frame.Node.HasChildren) { processor.PushActionFrame(GetAction(), frame.Node.SelectChildren(XPathNodeType.All)); frame.State = Subtree; break; } frame.State = EndEvent; goto case EndEvent; case Subtree: //frame.Node.MoveToParent(); frame.State = EndEvent; continue; case EndEvent: Debug.Assert(frame.State == EndEvent); if (SendEndEvent(processor, frame.Node) == false) { // This one wasn't output break; } frame.State = Initialized; continue; } break; } } private static bool SendBeginEvent(Processor processor, XPathNavigator node) { return processor.CopyBeginEvent(node, node.IsEmptyElement); } private static bool SendTextEvent(Processor processor, XPathNavigator node) { return processor.CopyTextEvent(node); } private static bool SendEndEvent(Processor processor, XPathNavigator node) { return processor.CopyEndEvent(node); } } } // 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
- UnknownBitmapEncoder.cs
- BamlLocalizabilityResolver.cs
- SqlXml.cs
- SinglePageViewer.cs
- PeerResolverSettings.cs
- GridItemPatternIdentifiers.cs
- DataControlFieldCollection.cs
- SqlBooleanizer.cs
- TimeSpanMinutesConverter.cs
- IconHelper.cs
- ColumnResizeUndoUnit.cs
- DbSourceCommand.cs
- Point3DConverter.cs
- ToolStripSeparatorRenderEventArgs.cs
- AlignmentYValidation.cs
- IisTraceListener.cs
- Matrix.cs
- PointValueSerializer.cs
- Menu.cs
- DataList.cs
- Exception.cs
- FrameworkElementFactoryMarkupObject.cs
- QilInvokeLateBound.cs
- RegularExpressionValidator.cs
- WebHeaderCollection.cs
- VBCodeProvider.cs
- MDIControlStrip.cs
- ApplicationInfo.cs
- AsyncResult.cs
- DataGridViewHitTestInfo.cs
- TreeNode.cs
- BatchServiceHost.cs
- LinkDesigner.cs
- HandleCollector.cs
- OdbcTransaction.cs
- XmlRawWriter.cs
- DataGridViewCell.cs
- EntityUtil.cs
- SequentialUshortCollection.cs
- ObjectStorage.cs
- EntityCommandDefinition.cs
- InlinedLocationReference.cs
- HttpHeaderCollection.cs
- ReaderContextStackData.cs
- DocumentPageTextView.cs
- RecognizedWordUnit.cs
- DetailsViewPageEventArgs.cs
- OleDbRowUpdatedEvent.cs
- CqlWriter.cs
- XhtmlBasicLabelAdapter.cs
- Policy.cs
- EntryWrittenEventArgs.cs
- PagesChangedEventArgs.cs
- TryLoadRunnableWorkflowCommand.cs
- ClassicBorderDecorator.cs
- XsltQilFactory.cs
- SignedXml.cs
- BaseCAMarshaler.cs
- AddInDeploymentState.cs
- EventLogLink.cs
- ToolbarAUtomationPeer.cs
- KeySpline.cs
- EventHandlerList.cs
- PathGeometry.cs
- Cast.cs
- XmlValueConverter.cs
- ScrollContentPresenter.cs
- EventBuilder.cs
- HMACSHA384.cs
- QualificationDataItem.cs
- EventData.cs
- HotCommands.cs
- BrowserCapabilitiesFactory.cs
- RunInstallerAttribute.cs
- BlurBitmapEffect.cs
- KeyPullup.cs
- DecimalConstantAttribute.cs
- XmlAttributeAttribute.cs
- DesignerForm.cs
- BaseCollection.cs
- InvokeMemberBinder.cs
- ConfigurationPropertyCollection.cs
- StringDictionary.cs
- InitializationEventAttribute.cs
- DocumentSequenceHighlightLayer.cs
- ProxyHwnd.cs
- mediaeventshelper.cs
- PenThread.cs
- ProfilePropertySettingsCollection.cs
- SocketInformation.cs
- InkPresenterAutomationPeer.cs
- Underline.cs
- Profiler.cs
- FastEncoderStatics.cs
- TypeUsage.cs
- DataGridViewSelectedRowCollection.cs
- FactoryId.cs
- CollectionExtensions.cs
- PerformanceCounterLib.cs
- TypedElement.cs