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
- DependencyPropertyDescriptor.cs
- DataGrid.cs
- XsltLibrary.cs
- TextBounds.cs
- BoundField.cs
- ResourceManager.cs
- DataMemberAttribute.cs
- ConnectivityStatus.cs
- QueuePathDialog.cs
- ThumbAutomationPeer.cs
- RefreshEventArgs.cs
- DragEventArgs.cs
- ThreadExceptionEvent.cs
- PartialCachingAttribute.cs
- Package.cs
- FaultConverter.cs
- ValidationPropertyAttribute.cs
- TcpHostedTransportConfiguration.cs
- NativeMethods.cs
- CodeRegionDirective.cs
- UdpContractFilterBehavior.cs
- compensatingcollection.cs
- RoleExceptions.cs
- GroupDescription.cs
- Mapping.cs
- InternalConfigConfigurationFactory.cs
- ElementMarkupObject.cs
- InkCanvas.cs
- DefaultTextStoreTextComposition.cs
- UiaCoreApi.cs
- ImageList.cs
- CorruptingExceptionCommon.cs
- PagesChangedEventArgs.cs
- File.cs
- Table.cs
- UTF8Encoding.cs
- ErrorHandler.cs
- AttachedPropertyBrowsableWhenAttributePresentAttribute.cs
- WebPartEditorApplyVerb.cs
- RoleGroupCollection.cs
- CodeArrayCreateExpression.cs
- DropShadowEffect.cs
- TemplateParser.cs
- XmlAttributeOverrides.cs
- WebMessageFormatHelper.cs
- SimpleLine.cs
- WeakEventTable.cs
- InheritanceAttribute.cs
- sqlstateclientmanager.cs
- ViewEventArgs.cs
- BoundsDrawingContextWalker.cs
- CompositeControlDesigner.cs
- DataGridItem.cs
- XmlElementAttribute.cs
- ZipIOLocalFileBlock.cs
- PlatformNotSupportedException.cs
- XhtmlBasicValidatorAdapter.cs
- ToolStripHighContrastRenderer.cs
- CallbackException.cs
- GenericTypeParameterBuilder.cs
- WebConvert.cs
- CommandLibraryHelper.cs
- DrawingImage.cs
- Rotation3DKeyFrameCollection.cs
- VerticalConnector.xaml.cs
- DeferredReference.cs
- BitFlagsGenerator.cs
- _DisconnectOverlappedAsyncResult.cs
- ToReply.cs
- LogAppendAsyncResult.cs
- FieldDescriptor.cs
- RolePrincipal.cs
- TextServicesCompartmentEventSink.cs
- Mappings.cs
- ModuleConfigurationInfo.cs
- TemplateBindingExtension.cs
- NotifyInputEventArgs.cs
- XmlSchemaProviderAttribute.cs
- TdsValueSetter.cs
- SHA384.cs
- Trigger.cs
- GlyphRun.cs
- TreeNodeCollection.cs
- ScriptResourceAttribute.cs
- EntityDataSourceState.cs
- Control.cs
- ValidationErrorEventArgs.cs
- EventEntry.cs
- InfoCardCryptoHelper.cs
- PropertySegmentSerializationProvider.cs
- MissingManifestResourceException.cs
- PermissionSetEnumerator.cs
- XmlSchema.cs
- QueryTask.cs
- DetailsViewPagerRow.cs
- TimeZone.cs
- MarshalDirectiveException.cs
- WindowCollection.cs
- ExpressionWriter.cs
- WebConfigurationHostFileChange.cs