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
- CodeCatchClauseCollection.cs
- SapiInterop.cs
- ProfileSettings.cs
- PrimitiveRenderer.cs
- ImportContext.cs
- WebPartVerb.cs
- FormViewDeletedEventArgs.cs
- FileVersionInfo.cs
- MetadataArtifactLoader.cs
- CmsInterop.cs
- CompatibleComparer.cs
- CursorConverter.cs
- MarkupExtensionReturnTypeAttribute.cs
- DocumentViewer.cs
- FontEmbeddingManager.cs
- CombinedGeometry.cs
- MinimizableAttributeTypeConverter.cs
- ControlValuePropertyAttribute.cs
- SqlException.cs
- NameValueFileSectionHandler.cs
- FocusChangedEventArgs.cs
- Vector3DCollection.cs
- ClientFormsIdentity.cs
- DataMemberAttribute.cs
- TextParaClient.cs
- SrgsElementList.cs
- EventLogPermission.cs
- DbFunctionCommandTree.cs
- Globals.cs
- WindowsSecurityToken.cs
- StaticSiteMapProvider.cs
- Model3D.cs
- XPathDocumentIterator.cs
- GridPattern.cs
- TemplateModeChangedEventArgs.cs
- NegotiateStream.cs
- TimeManager.cs
- TraceEventCache.cs
- DataControlPagerLinkButton.cs
- ProcessRequestArgs.cs
- PropertyDescriptorCollection.cs
- SafeTokenHandle.cs
- KerberosReceiverSecurityToken.cs
- BasicAsyncResult.cs
- AddingNewEventArgs.cs
- OpenTypeLayoutCache.cs
- TableItemPatternIdentifiers.cs
- SmtpNetworkElement.cs
- GeometryHitTestParameters.cs
- TransformProviderWrapper.cs
- UrlAuthFailedErrorFormatter.cs
- ItemCollection.cs
- TypedMessageConverter.cs
- AppDomainShutdownMonitor.cs
- AmbientLight.cs
- APCustomTypeDescriptor.cs
- TextTabProperties.cs
- ExecutionContext.cs
- Addressing.cs
- ContextMarshalException.cs
- DescriptionCreator.cs
- TimelineCollection.cs
- DesignerSerializationVisibilityAttribute.cs
- KeyProperty.cs
- DataControlField.cs
- TextLineBreak.cs
- OutputCacheProfile.cs
- SpoolingTask.cs
- dbdatarecord.cs
- MetadataWorkspace.cs
- DotExpr.cs
- BitConverter.cs
- SqlCachedBuffer.cs
- SortedSetDebugView.cs
- CompressStream.cs
- TaskHelper.cs
- AuthenticatingEventArgs.cs
- PropertyDescriptor.cs
- MonthCalendar.cs
- ConfigurationHelpers.cs
- CodeArrayCreateExpression.cs
- WindowsToolbar.cs
- FixedTextSelectionProcessor.cs
- SByteConverter.cs
- BitmapEffect.cs
- CodeRegionDirective.cs
- CatalogZoneBase.cs
- DataGridViewRowPostPaintEventArgs.cs
- ScaleTransform.cs
- DesignerSerializationOptionsAttribute.cs
- MessageFormatterConverter.cs
- RTTrackingProfile.cs
- RegistrySecurity.cs
- SettingsBase.cs
- ToolstripProfessionalRenderer.cs
- ClipboardProcessor.cs
- EditorPartChrome.cs
- Point.cs
- Helper.cs
- InstanceLockedException.cs