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
- OperandQuery.cs
- Compiler.cs
- DbProviderFactories.cs
- BaseValidator.cs
- Vector3dCollection.cs
- DataListItemEventArgs.cs
- ToolStripHighContrastRenderer.cs
- RetrieveVirtualItemEventArgs.cs
- MouseGestureValueSerializer.cs
- TextDecorationCollection.cs
- DataGridViewToolTip.cs
- HtmlGenericControl.cs
- ProxySimple.cs
- CommandBinding.cs
- String.cs
- ProtocolsSection.cs
- OleDbInfoMessageEvent.cs
- ObjectContextServiceProvider.cs
- QuadraticEase.cs
- XamlPointCollectionSerializer.cs
- CallId.cs
- ParameterToken.cs
- TcpSocketManager.cs
- CommonObjectSecurity.cs
- FrameworkRichTextComposition.cs
- QuaternionKeyFrameCollection.cs
- SqlClientFactory.cs
- RegexMatch.cs
- Restrictions.cs
- MouseOverProperty.cs
- ZoomPercentageConverter.cs
- XmlSchemaSimpleContentRestriction.cs
- Pen.cs
- ReadOnlyNameValueCollection.cs
- SelectionManager.cs
- GifBitmapEncoder.cs
- ParenthesizePropertyNameAttribute.cs
- CommandField.cs
- ContextMenuAutomationPeer.cs
- TraceContext.cs
- SettingsPropertyIsReadOnlyException.cs
- ScanQueryOperator.cs
- SiteMapSection.cs
- BaseDataList.cs
- NetPeerTcpBinding.cs
- DataObject.cs
- Base64Encoder.cs
- BinaryConverter.cs
- MonitorWrapper.cs
- SynchronizedDispatch.cs
- Animatable.cs
- EnvironmentPermission.cs
- TextDecorationCollectionConverter.cs
- StringStorage.cs
- PreservationFileWriter.cs
- FormClosedEvent.cs
- documentsequencetextview.cs
- ValidatorCompatibilityHelper.cs
- CharacterHit.cs
- QueueProcessor.cs
- SignedXml.cs
- DependencyProperty.cs
- XPathPatternParser.cs
- ParserStreamGeometryContext.cs
- ProcessModelInfo.cs
- LostFocusEventManager.cs
- QueryCacheEntry.cs
- TemplateNodeContextMenu.cs
- StateManagedCollection.cs
- DocumentReference.cs
- HttpProfileBase.cs
- KnowledgeBase.cs
- DataGridColumnCollection.cs
- DockingAttribute.cs
- DynamicActivityProperty.cs
- ImportDesigner.xaml.cs
- Point3DValueSerializer.cs
- ToolboxItemAttribute.cs
- NavigationWindowAutomationPeer.cs
- Frame.cs
- Positioning.cs
- HostingEnvironmentException.cs
- CodeDomSerializer.cs
- Environment.cs
- ScriptControl.cs
- StylusEventArgs.cs
- UTF8Encoding.cs
- MemberRelationshipService.cs
- CssClassPropertyAttribute.cs
- HttpConfigurationSystem.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- IArgumentProvider.cs
- ExtenderControl.cs
- DbConnectionInternal.cs
- UserControlParser.cs
- ScrollChrome.cs
- HMAC.cs
- ValueQuery.cs
- ControllableStoryboardAction.cs
- HttpCachePolicy.cs