Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- xmlfixedPageInfo.cs
- GestureRecognitionResult.cs
- XmlQualifiedName.cs
- DefaultAsyncDataDispatcher.cs
- SafeLocalMemHandle.cs
- _ListenerAsyncResult.cs
- EncoderReplacementFallback.cs
- SuppressMessageAttribute.cs
- PolygonHotSpot.cs
- GridViewRow.cs
- LineBreak.cs
- OleDbMetaDataFactory.cs
- recordstate.cs
- MsmqInputChannelListenerBase.cs
- TypeName.cs
- DiscardableAttribute.cs
- SigningCredentials.cs
- InkCanvasAutomationPeer.cs
- TextUtf8RawTextWriter.cs
- HostedImpersonationContext.cs
- XpsFontSerializationService.cs
- ExceptQueryOperator.cs
- SafeNativeMethods.cs
- TimeManager.cs
- sqlmetadatafactory.cs
- QueryRewriter.cs
- PermissionRequestEvidence.cs
- GenericPrincipal.cs
- SudsCommon.cs
- TextHidden.cs
- PolicyManager.cs
- SapiRecoContext.cs
- PriorityRange.cs
- MouseOverProperty.cs
- SQLInt16Storage.cs
- SQLMoney.cs
- PresentationSource.cs
- RpcCryptoRequest.cs
- DataGridItem.cs
- ViewEventArgs.cs
- UIElement3D.cs
- DataGridItemCollection.cs
- XmlArrayItemAttribute.cs
- ClientTargetSection.cs
- StructuredTypeEmitter.cs
- PropertyGeneratedEventArgs.cs
- Psha1DerivedKeyGenerator.cs
- LocationUpdates.cs
- EntityViewGenerationAttribute.cs
- Pair.cs
- TextComposition.cs
- NetworkAddressChange.cs
- BamlLocalizableResourceKey.cs
- RowToFieldTransformer.cs
- HttpHeaderCollection.cs
- EntityDesignerDataSourceView.cs
- IChannel.cs
- CompensationDesigner.cs
- returneventsaver.cs
- ArrangedElementCollection.cs
- StrongNameMembershipCondition.cs
- SelectorItemAutomationPeer.cs
- ApplicationHost.cs
- oledbconnectionstring.cs
- XmlArrayAttribute.cs
- AsymmetricAlgorithm.cs
- DocumentSequenceHighlightLayer.cs
- ScriptBehaviorDescriptor.cs
- BulletChrome.cs
- MessagePropertyFilter.cs
- InvalidOleVariantTypeException.cs
- ConnectionPoint.cs
- SyncOperationState.cs
- CheckedPointers.cs
- SqlWebEventProvider.cs
- PathSegment.cs
- FixUpCollection.cs
- SettingsPropertyValueCollection.cs
- ToolBarButtonClickEvent.cs
- HttpCapabilitiesBase.cs
- coordinatorscratchpad.cs
- Module.cs
- DesignerOptionService.cs
- PropertySegmentSerializer.cs
- RegexWorker.cs
- WebPartDisplayModeCollection.cs
- codemethodreferenceexpression.cs
- DataGridCaption.cs
- FixedElement.cs
- LogicalExpr.cs
- GenericXmlSecurityTokenAuthenticator.cs
- Accessible.cs
- ForeignConstraint.cs
- SecurityContextCookieSerializer.cs
- Missing.cs
- ControlBuilderAttribute.cs
- NameSpaceExtractor.cs
- NamedObject.cs
- TreeViewCancelEvent.cs
- OLEDB_Enum.cs