Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / XmlUtils / System / Xml / Xsl / XsltOld / CopyAttributesAction.cs / 1305376 / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SocketInformation.cs
- DocumentsTrace.cs
- GACMembershipCondition.cs
- EventSinkHelperWriter.cs
- DataColumnCollection.cs
- DrawingVisualDrawingContext.cs
- WSDualHttpBinding.cs
- RemotingException.cs
- ResourceReferenceExpression.cs
- BitmapEffectDrawingContent.cs
- WorkflowTransactionService.cs
- ImportCatalogPart.cs
- Roles.cs
- Wizard.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- DataGridViewTopRowAccessibleObject.cs
- XmlElementCollection.cs
- ObfuscationAttribute.cs
- ProcessProtocolHandler.cs
- WindowHideOrCloseTracker.cs
- commandenforcer.cs
- OdbcCommand.cs
- ByteAnimation.cs
- Border.cs
- COM2PictureConverter.cs
- LicenseProviderAttribute.cs
- UInt32Storage.cs
- OutOfMemoryException.cs
- GregorianCalendar.cs
- NetworkInformationPermission.cs
- SiteMapNodeItemEventArgs.cs
- MenuItemBindingCollection.cs
- AuthenticationModulesSection.cs
- TextEffectResolver.cs
- MultiAsyncResult.cs
- PreApplicationStartMethodAttribute.cs
- WebBrowserUriTypeConverter.cs
- DataGridViewUtilities.cs
- ToolStripDropDownMenu.cs
- _HeaderInfo.cs
- PtsHost.cs
- MetadataExporter.cs
- Int32Animation.cs
- NavigationHelper.cs
- AffineTransform3D.cs
- AdPostCacheSubstitution.cs
- FrameworkContentElementAutomationPeer.cs
- HttpWebRequestElement.cs
- ProcessStartInfo.cs
- RegionIterator.cs
- ObjectComplexPropertyMapping.cs
- FocusWithinProperty.cs
- ImportOptions.cs
- OptimizedTemplateContentHelper.cs
- HotSpotCollection.cs
- MinimizableAttributeTypeConverter.cs
- ObjectConverter.cs
- ToolboxItemCollection.cs
- HttpBindingExtension.cs
- TrustSection.cs
- SafeLocalMemHandle.cs
- SingleObjectCollection.cs
- KeyPressEvent.cs
- util.cs
- PropertyOrder.cs
- ResourcesGenerator.cs
- DescendentsWalkerBase.cs
- followingsibling.cs
- ComAdminInterfaces.cs
- RelatedPropertyManager.cs
- SecUtil.cs
- AsyncResult.cs
- SafeBitVector32.cs
- initElementDictionary.cs
- RuleInfoComparer.cs
- ReverseInheritProperty.cs
- ValueOfAction.cs
- MethodInfo.cs
- FieldDescriptor.cs
- SmtpReplyReader.cs
- Brush.cs
- CalendarAutomationPeer.cs
- DataGridViewColumnCollection.cs
- FullTextLine.cs
- ApplicationInterop.cs
- Int64Converter.cs
- NamespaceInfo.cs
- IsolatedStorage.cs
- InstanceKeyView.cs
- Screen.cs
- XmlSerializerFactory.cs
- CheckPair.cs
- ContextBase.cs
- DefaultSerializationProviderAttribute.cs
- HasCopySemanticsAttribute.cs
- QueryCreatedEventArgs.cs
- NetSectionGroup.cs
- MemberHolder.cs
- httpstaticobjectscollection.cs
- PnrpPeerResolverBindingElement.cs