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
- TableLayoutPanelResizeGlyph.cs
- Icon.cs
- IssuedTokenServiceCredential.cs
- HtmlButton.cs
- AssemblyName.cs
- CorrelationScope.cs
- HtmlTableRowCollection.cs
- DesignerLoader.cs
- ConstraintEnumerator.cs
- wgx_sdk_version.cs
- ZoneLinkButton.cs
- VerticalAlignConverter.cs
- QueryOperator.cs
- SqlTriggerContext.cs
- Style.cs
- WindowsMenu.cs
- ConfigurationStrings.cs
- SafeWaitHandle.cs
- CharacterHit.cs
- BuilderInfo.cs
- AppDomainAttributes.cs
- MailDefinition.cs
- DateTimeSerializationSection.cs
- HandleCollector.cs
- validationstate.cs
- DoubleAnimationUsingKeyFrames.cs
- RtfControlWordInfo.cs
- XmlSchemaComplexContent.cs
- SystemParameters.cs
- SizeConverter.cs
- CultureInfo.cs
- EntryPointNotFoundException.cs
- CommandBindingCollection.cs
- ByteViewer.cs
- Literal.cs
- TextParentUndoUnit.cs
- RegisteredArrayDeclaration.cs
- MediaPlayerState.cs
- FormatControl.cs
- GPPOINT.cs
- PipeConnection.cs
- KeyValueConfigurationElement.cs
- PageAdapter.cs
- SolidColorBrush.cs
- SqlHelper.cs
- SqlConnectionPoolGroupProviderInfo.cs
- PropertyValueUIItem.cs
- FlowPosition.cs
- SQLChars.cs
- tooltip.cs
- XmlPreloadedResolver.cs
- AssemblyAttributes.cs
- UdpDiscoveryEndpointProvider.cs
- _ListenerAsyncResult.cs
- PlatformNotSupportedException.cs
- ValueUnavailableException.cs
- Size.cs
- PDBReader.cs
- RectangleHotSpot.cs
- OracleCommandBuilder.cs
- GridViewDeletedEventArgs.cs
- MsmqInputChannelListener.cs
- COSERVERINFO.cs
- Accessible.cs
- TimeIntervalCollection.cs
- AsyncCompletedEventArgs.cs
- LockedAssemblyCache.cs
- Application.cs
- PenContexts.cs
- ConfigsHelper.cs
- TextWriterTraceListener.cs
- ListViewItemMouseHoverEvent.cs
- ApplicationServiceHelper.cs
- CanExecuteRoutedEventArgs.cs
- ColumnHeaderConverter.cs
- DynamicRenderer.cs
- ImageListImageEditor.cs
- UpDownEvent.cs
- DesignTable.cs
- BinHexEncoder.cs
- ProfessionalColorTable.cs
- ImageInfo.cs
- HttpTransportSecurityElement.cs
- SchemaEntity.cs
- Function.cs
- WebPartCatalogCloseVerb.cs
- ReadWriteObjectLock.cs
- MethodBuilder.cs
- XPathMessageFilterElementComparer.cs
- FullTrustAssembliesSection.cs
- TimeoutTimer.cs
- FormViewPageEventArgs.cs
- PersonalizationState.cs
- DataSourceControlBuilder.cs
- SecondaryViewProvider.cs
- ContentTypeSettingClientMessageFormatter.cs
- CodeValidator.cs
- PipelineComponent.cs
- DiagnosticTrace.cs
- QilStrConcat.cs