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
- ToolStripTextBox.cs
- SingleAnimationBase.cs
- OracleString.cs
- BamlMapTable.cs
- SelectionItemPattern.cs
- RectConverter.cs
- AdapterUtil.cs
- SqlParameterizer.cs
- TempEnvironment.cs
- HostingEnvironmentException.cs
- MethodBuilderInstantiation.cs
- TypeName.cs
- BuildProviderUtils.cs
- MembershipPasswordException.cs
- DataGridViewLinkCell.cs
- SoapAttributeAttribute.cs
- ContextMarshalException.cs
- ToolStripTextBox.cs
- XmlSerializationReader.cs
- Membership.cs
- DataGridViewComboBoxEditingControl.cs
- columnmapkeybuilder.cs
- ColorConvertedBitmap.cs
- ObjectDataSourceStatusEventArgs.cs
- DataObjectFieldAttribute.cs
- SignerInfo.cs
- XmlSchemaAttributeGroupRef.cs
- ScrollContentPresenter.cs
- DependencyPropertyValueSerializer.cs
- ToolStripButton.cs
- UnsafeNativeMethods.cs
- DataObjectFieldAttribute.cs
- OrderedEnumerableRowCollection.cs
- ErrorTolerantObjectWriter.cs
- TextRange.cs
- EmulateRecognizeCompletedEventArgs.cs
- CodeDOMProvider.cs
- ClientRuntimeConfig.cs
- DataSourceConverter.cs
- Console.cs
- EmptyCollection.cs
- MarshalDirectiveException.cs
- ObjectDataSourceFilteringEventArgs.cs
- COM2IPerPropertyBrowsingHandler.cs
- XmlSchemaAppInfo.cs
- BufferedGraphics.cs
- OperationInvokerTrace.cs
- ChannelBuilder.cs
- AssemblyUtil.cs
- EncoderFallback.cs
- StorageRoot.cs
- DbDataSourceEnumerator.cs
- ProfileGroupSettings.cs
- FileDialog.cs
- AuditLogLocation.cs
- DecimalAnimation.cs
- DynamicDiscoSearcher.cs
- WizardSideBarListControlItem.cs
- StatusBarAutomationPeer.cs
- Simplifier.cs
- DataTransferEventArgs.cs
- ResizeGrip.cs
- WebPartTransformer.cs
- SubMenuStyleCollection.cs
- CodeArrayIndexerExpression.cs
- _DisconnectOverlappedAsyncResult.cs
- Contracts.cs
- NativeObjectSecurity.cs
- HtmlWindowCollection.cs
- TextTreeFixupNode.cs
- RSAPKCS1SignatureDeformatter.cs
- HttpPostProtocolReflector.cs
- CryptoStream.cs
- MsmqHostedTransportManager.cs
- BuilderPropertyEntry.cs
- WindowsListViewGroup.cs
- StoreAnnotationsMap.cs
- ContextMarshalException.cs
- XmlDataCollection.cs
- SamlSubject.cs
- Adorner.cs
- Exception.cs
- MatrixTransform3D.cs
- ComponentChangingEvent.cs
- ObjectDataSourceSelectingEventArgs.cs
- DataServiceQuery.cs
- OleDbTransaction.cs
- RoleManagerEventArgs.cs
- InlinedLocationReference.cs
- oledbmetadatacollectionnames.cs
- TreeNodeStyle.cs
- CollectionViewGroupInternal.cs
- TypeDescriptionProviderAttribute.cs
- CatalogZone.cs
- CodeTypeDelegate.cs
- CreateDataSourceDialog.cs
- StyleSheetComponentEditor.cs
- TemplatePartAttribute.cs
- BitmapDecoder.cs
- Certificate.cs