Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / XmlUtils / System / Xml / Xsl / XsltOld / CopyAttributesAction.cs / 1 / 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. //------------------------------------------------------------------------------ //// 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
- HttpRawResponse.cs
- PaginationProgressEventArgs.cs
- MessageAction.cs
- QuaternionIndependentAnimationStorage.cs
- DocumentXmlWriter.cs
- SimpleMailWebEventProvider.cs
- ReplacementText.cs
- OleAutBinder.cs
- WebPartHelpVerb.cs
- SessionEndedEventArgs.cs
- BounceEase.cs
- StorageAssociationTypeMapping.cs
- LocatorBase.cs
- BinaryUtilClasses.cs
- FSWPathEditor.cs
- Properties.cs
- InternalSafeNativeMethods.cs
- IgnoreDeviceFilterElementCollection.cs
- RenameRuleObjectDialog.Designer.cs
- ChildTable.cs
- X509ScopedServiceCertificateElementCollection.cs
- TagNameToTypeMapper.cs
- BindingManagerDataErrorEventArgs.cs
- ButtonField.cs
- SecUtil.cs
- WebPartConnectionsCloseVerb.cs
- XmlSchemaInferenceException.cs
- BamlBinaryWriter.cs
- JsonFormatReaderGenerator.cs
- DataListCommandEventArgs.cs
- UnionCodeGroup.cs
- SemanticResolver.cs
- FaultPropagationQuery.cs
- OleServicesContext.cs
- CustomErrorsSectionWrapper.cs
- Hash.cs
- UnderstoodHeaders.cs
- localization.cs
- precedingsibling.cs
- CheckBox.cs
- ProxyFragment.cs
- ThaiBuddhistCalendar.cs
- PageHandlerFactory.cs
- DrawingCollection.cs
- Selection.cs
- UIElement3D.cs
- XpsResourcePolicy.cs
- GridViewRowPresenterBase.cs
- TrackingRecord.cs
- LocalizableAttribute.cs
- LogEntryUtils.cs
- DelayLoadType.cs
- XNodeValidator.cs
- ObjectSet.cs
- CuspData.cs
- KeyValueConfigurationElement.cs
- Clock.cs
- ProfileModule.cs
- ConnectionModeReader.cs
- TraceLevelStore.cs
- FastEncoder.cs
- GuidConverter.cs
- DrawingBrush.cs
- DynamicPhysicalDiscoSearcher.cs
- AutomationPropertyInfo.cs
- NullableLongAverageAggregationOperator.cs
- MarkerProperties.cs
- PrintPreviewGraphics.cs
- COM2Enum.cs
- OleDbError.cs
- EmitterCache.cs
- designeractionbehavior.cs
- CuspData.cs
- SqlBuffer.cs
- ACE.cs
- ViewEventArgs.cs
- Effect.cs
- SingleStorage.cs
- CompilationUnit.cs
- ImportContext.cs
- PathFigure.cs
- UrlMappingsModule.cs
- ToolZone.cs
- CurrentChangedEventManager.cs
- XslTransformFileEditor.cs
- CheckBox.cs
- XmlToDatasetMap.cs
- CreateUserWizard.cs
- ChannelSinkStacks.cs
- NumberFormatInfo.cs
- PolicyUnit.cs
- FragmentQueryProcessor.cs
- SubtreeProcessor.cs
- PageParser.cs
- ListenerBinder.cs
- XmlSchemaComplexType.cs
- PropertyChangingEventArgs.cs
- PropertyContainer.cs
- MarkerProperties.cs
- DataRelation.cs