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 / CopyAttributesAction.cs / 1 / CopyAttributesAction.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 CopyAttributesAction : Action { private const int BeginEvent = 2; private const int TextEvent = 3; private const int EndEvent = 4; private const int Advance = 5; private static CopyAttributesAction s_Action = new CopyAttributesAction(); internal static CopyAttributesAction 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.Node.HasAttributes || frame.Node.MoveToFirstAttribute() == false) { frame.Finished(); break; } frame.State = BeginEvent; goto case BeginEvent; case BeginEvent: Debug.Assert(frame.State == BeginEvent); Debug.Assert(frame.Node.NodeType == XPathNodeType.Attribute); if (SendBeginEvent(processor, frame.Node) == false) { // This one wasn't output break; } frame.State = TextEvent; continue; case TextEvent: Debug.Assert(frame.State == TextEvent); Debug.Assert(frame.Node.NodeType == XPathNodeType.Attribute); if (SendTextEvent(processor, frame.Node) == false) { // This one wasn't output break; } frame.State = EndEvent; continue; case EndEvent: Debug.Assert(frame.State == EndEvent); Debug.Assert(frame.Node.NodeType == XPathNodeType.Attribute); if (SendEndEvent(processor, frame.Node) == false) { // This one wasn't output break; } frame.State = Advance; continue; case Advance: Debug.Assert(frame.State == Advance); Debug.Assert(frame.Node.NodeType == XPathNodeType.Attribute); if (frame.Node.MoveToNextAttribute()) { frame.State = BeginEvent; continue; } else { frame.Node.MoveToParent(); frame.Finished(); break; } } break; }// while (processor.CanContinue) } private static bool SendBeginEvent(Processor processor, XPathNavigator node) { Debug.Assert(node.NodeType == XPathNodeType.Attribute); return processor.BeginEvent(XPathNodeType.Attribute, node.Prefix, node.LocalName, node.NamespaceURI, false); } private static bool SendTextEvent(Processor processor, XPathNavigator node) { Debug.Assert(node.NodeType == XPathNodeType.Attribute); return processor.TextEvent(node.Value); } private static bool SendEndEvent(Processor processor, XPathNavigator node) { Debug.Assert(node.NodeType == XPathNodeType.Attribute); return processor.EndEvent(XPathNodeType.Attribute); } } } // 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 CopyAttributesAction : Action { private const int BeginEvent = 2; private const int TextEvent = 3; private const int EndEvent = 4; private const int Advance = 5; private static CopyAttributesAction s_Action = new CopyAttributesAction(); internal static CopyAttributesAction 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.Node.HasAttributes || frame.Node.MoveToFirstAttribute() == false) { frame.Finished(); break; } frame.State = BeginEvent; goto case BeginEvent; case BeginEvent: Debug.Assert(frame.State == BeginEvent); Debug.Assert(frame.Node.NodeType == XPathNodeType.Attribute); if (SendBeginEvent(processor, frame.Node) == false) { // This one wasn't output break; } frame.State = TextEvent; continue; case TextEvent: Debug.Assert(frame.State == TextEvent); Debug.Assert(frame.Node.NodeType == XPathNodeType.Attribute); if (SendTextEvent(processor, frame.Node) == false) { // This one wasn't output break; } frame.State = EndEvent; continue; case EndEvent: Debug.Assert(frame.State == EndEvent); Debug.Assert(frame.Node.NodeType == XPathNodeType.Attribute); if (SendEndEvent(processor, frame.Node) == false) { // This one wasn't output break; } frame.State = Advance; continue; case Advance: Debug.Assert(frame.State == Advance); Debug.Assert(frame.Node.NodeType == XPathNodeType.Attribute); if (frame.Node.MoveToNextAttribute()) { frame.State = BeginEvent; continue; } else { frame.Node.MoveToParent(); frame.Finished(); break; } } break; }// while (processor.CanContinue) } private static bool SendBeginEvent(Processor processor, XPathNavigator node) { Debug.Assert(node.NodeType == XPathNodeType.Attribute); return processor.BeginEvent(XPathNodeType.Attribute, node.Prefix, node.LocalName, node.NamespaceURI, false); } private static bool SendTextEvent(Processor processor, XPathNavigator node) { Debug.Assert(node.NodeType == XPathNodeType.Attribute); return processor.TextEvent(node.Value); } private static bool SendEndEvent(Processor processor, XPathNavigator node) { Debug.Assert(node.NodeType == XPathNodeType.Attribute); return processor.EndEvent(XPathNodeType.Attribute); } } } // 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
- XPathParser.cs
- OSFeature.cs
- SecurityVerifiedMessage.cs
- PrintDialogException.cs
- ChannelSinkStacks.cs
- ProgressChangedEventArgs.cs
- ExpressionBuilder.cs
- _DisconnectOverlappedAsyncResult.cs
- HwndAppCommandInputProvider.cs
- AnimationException.cs
- DurableInstanceManager.cs
- IPipelineRuntime.cs
- IItemProperties.cs
- OrderedEnumerableRowCollection.cs
- PinnedBufferMemoryStream.cs
- StringFormat.cs
- DispatcherTimer.cs
- ProxyAttribute.cs
- MobileListItem.cs
- WebMessageEncodingElement.cs
- SecurityUtils.cs
- CustomAttribute.cs
- ScalarConstant.cs
- ModuleConfigurationInfo.cs
- LinkClickEvent.cs
- HttpFormatExtensions.cs
- TabItemWrapperAutomationPeer.cs
- PickDesigner.xaml.cs
- PersonalizationEntry.cs
- RelatedEnd.cs
- ProjectionAnalyzer.cs
- TemplateBindingExpressionConverter.cs
- SvcMapFileLoader.cs
- TableProviderWrapper.cs
- ToggleProviderWrapper.cs
- JapaneseLunisolarCalendar.cs
- PngBitmapDecoder.cs
- GeneralTransform3DGroup.cs
- DataContractAttribute.cs
- SessionParameter.cs
- PropertyCollection.cs
- BuildProviderCollection.cs
- TransformedBitmap.cs
- Renderer.cs
- SurrogateSelector.cs
- WebPartEditorOkVerb.cs
- ObjectDataSourceDisposingEventArgs.cs
- PingOptions.cs
- WebConfigurationHostFileChange.cs
- WeakRefEnumerator.cs
- ListControlDesigner.cs
- WindowHideOrCloseTracker.cs
- SystemResourceHost.cs
- SqlCommand.cs
- MaskDescriptors.cs
- MsdtcWrapper.cs
- NativeRecognizer.cs
- SqlResolver.cs
- PrintEvent.cs
- Normalization.cs
- TerminateWorkflow.cs
- TimeStampChecker.cs
- Merger.cs
- SplayTreeNode.cs
- CodeTypeOfExpression.cs
- DoubleAnimationUsingKeyFrames.cs
- InitializingNewItemEventArgs.cs
- SHA1Managed.cs
- DataReceivedEventArgs.cs
- CompareValidator.cs
- RegexMatch.cs
- Exceptions.cs
- QueueSurrogate.cs
- SocketException.cs
- LogicalExpr.cs
- SqlMetaData.cs
- SecurityHeaderElementInferenceEngine.cs
- SigningCredentials.cs
- GrammarBuilderBase.cs
- SqlBinder.cs
- Transform.cs
- SwitchElementsCollection.cs
- MiniCustomAttributeInfo.cs
- DCSafeHandle.cs
- ResourceReferenceKeyNotFoundException.cs
- TableLayout.cs
- RectangleGeometry.cs
- InkCanvasFeedbackAdorner.cs
- WorkflowTransactionOptions.cs
- DeflateStream.cs
- DefaultSerializationProviderAttribute.cs
- TextRangeAdaptor.cs
- EventMemberCodeDomSerializer.cs
- StringHelper.cs
- DataGridViewAddColumnDialog.cs
- Int32KeyFrameCollection.cs
- ListViewAutomationPeer.cs
- DeflateEmulationStream.cs
- NamedPermissionSet.cs
- TdsEnums.cs