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
- BrushConverter.cs
- CanonicalFontFamilyReference.cs
- BitmapEffectInput.cs
- CultureTableRecord.cs
- MetadataUtilsSmi.cs
- PerformanceCounter.cs
- AsyncOperationManager.cs
- InternalPolicyElement.cs
- ProfilePropertySettings.cs
- Wizard.cs
- OuterGlowBitmapEffect.cs
- Endpoint.cs
- TableCellCollection.cs
- ServiceNameCollection.cs
- StubHelpers.cs
- DataGridViewRowPostPaintEventArgs.cs
- LinqToSqlWrapper.cs
- DataBoundControlParameterTarget.cs
- NamedObject.cs
- TcpServerChannel.cs
- HttpWebRequest.cs
- SynchronizationFilter.cs
- ReferencedCollectionType.cs
- HttpRuntimeSection.cs
- Ref.cs
- ThreadStateException.cs
- DataBinding.cs
- DataGridItemCollection.cs
- GridLengthConverter.cs
- XmlQueryCardinality.cs
- TextStore.cs
- TableLayoutSettings.cs
- BroadcastEventHelper.cs
- _DisconnectOverlappedAsyncResult.cs
- StateFinalizationDesigner.cs
- MessagingDescriptionAttribute.cs
- MeshGeometry3D.cs
- TypeTypeConverter.cs
- DoubleConverter.cs
- Int16.cs
- TimerEventSubscription.cs
- Ops.cs
- TransformerConfigurationWizardBase.cs
- UnicastIPAddressInformationCollection.cs
- DataGridViewRowStateChangedEventArgs.cs
- Buffer.cs
- SequentialWorkflowRootDesigner.cs
- MetadataArtifactLoaderResource.cs
- XmlAttributeCache.cs
- DataGridViewColumnTypeEditor.cs
- WeakReferenceEnumerator.cs
- HttpPostProtocolReflector.cs
- SoapIgnoreAttribute.cs
- InputScopeConverter.cs
- SoapFormatter.cs
- DataGridViewTextBoxEditingControl.cs
- ObjectQueryProvider.cs
- WhiteSpaceTrimStringConverter.cs
- OleDbReferenceCollection.cs
- FixUp.cs
- IncrementalCompileAnalyzer.cs
- EllipseGeometry.cs
- AbstractExpressions.cs
- metadatamappinghashervisitor.cs
- ColorInterpolationModeValidation.cs
- HybridObjectCache.cs
- StoreAnnotationsMap.cs
- MergeEnumerator.cs
- EntityDataSourceWizardForm.cs
- BooleanFacetDescriptionElement.cs
- ConfigurationManagerHelperFactory.cs
- ResXResourceReader.cs
- TimeoutException.cs
- SystemDiagnosticsSection.cs
- PeerDuplexChannel.cs
- TdsParameterSetter.cs
- ServiceHostFactory.cs
- TextProviderWrapper.cs
- XmlWriterTraceListener.cs
- WindowsAuthenticationEventArgs.cs
- PropertyGridView.cs
- MasterPageCodeDomTreeGenerator.cs
- LambdaCompiler.Generated.cs
- OleDbCommandBuilder.cs
- DebuggerAttributes.cs
- SqlStatistics.cs
- ProviderConnectionPointCollection.cs
- TypedServiceChannelBuilder.cs
- DataGridViewSortCompareEventArgs.cs
- EntityDataSourceState.cs
- InvalidWMPVersionException.cs
- AsyncOperationManager.cs
- PropertySet.cs
- ListViewHitTestInfo.cs
- ClosableStream.cs
- CodeMemberEvent.cs
- DecimalConverter.cs
- XmlSchemaAnyAttribute.cs
- Flattener.cs
- FontStretches.cs