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
- AnnotationAuthorChangedEventArgs.cs
- MediaCommands.cs
- GatewayDefinition.cs
- TextEditorParagraphs.cs
- Point.cs
- Vars.cs
- ColorConverter.cs
- DesignerObject.cs
- XmlSchemaProviderAttribute.cs
- SoapTypeAttribute.cs
- TraceUtils.cs
- CatalogZone.cs
- BasicExpressionVisitor.cs
- SmtpDigestAuthenticationModule.cs
- ClientSettingsStore.cs
- XmlReflectionMember.cs
- OdbcEnvironmentHandle.cs
- MutableAssemblyCacheEntry.cs
- Assembly.cs
- UnsafeMethods.cs
- LayoutTableCell.cs
- XmlLoader.cs
- EventBuilder.cs
- DelegatingConfigHost.cs
- CoreSwitches.cs
- DataGridRowsPresenter.cs
- GPStream.cs
- DeviceSpecificChoiceCollection.cs
- NestedContainer.cs
- InfoCardSymmetricAlgorithm.cs
- PlaceHolder.cs
- CommandHelpers.cs
- BroadcastEventHelper.cs
- CheckPair.cs
- TypeElement.cs
- WebFormsRootDesigner.cs
- DetailsViewRow.cs
- Decimal.cs
- SslStream.cs
- BmpBitmapEncoder.cs
- OleDbEnumerator.cs
- SplitContainer.cs
- HttpBrowserCapabilitiesBase.cs
- DescendantOverDescendantQuery.cs
- NodeLabelEditEvent.cs
- TransactionOptions.cs
- Light.cs
- ClientProxyGenerator.cs
- IpcClientChannel.cs
- Drawing.cs
- LinkUtilities.cs
- COM2IDispatchConverter.cs
- MetadataItem_Static.cs
- ChtmlFormAdapter.cs
- ReliableMessagingVersion.cs
- dataprotectionpermissionattribute.cs
- AutomationAttributeInfo.cs
- SiteMap.cs
- AmbiguousMatchException.cs
- TableItemPattern.cs
- FigureParaClient.cs
- SettingsContext.cs
- HostedImpersonationContext.cs
- ContextProperty.cs
- tibetanshape.cs
- ConnectionManagementElementCollection.cs
- DbConnectionHelper.cs
- QilNode.cs
- EmbeddedMailObjectCollectionEditor.cs
- RectangleGeometry.cs
- RequestCachingSection.cs
- App.cs
- MouseEvent.cs
- IdentityNotMappedException.cs
- SafeRegistryHandle.cs
- BaseTemplateCodeDomTreeGenerator.cs
- SafeCoTaskMem.cs
- _DynamicWinsockMethods.cs
- XmlNode.cs
- TemplateLookupAction.cs
- GatewayDefinition.cs
- MsmqQueue.cs
- MembershipSection.cs
- TableHeaderCell.cs
- PreservationFileReader.cs
- TableLayoutPanel.cs
- SqlUserDefinedAggregateAttribute.cs
- SingleQueryOperator.cs
- SQLBytes.cs
- Variable.cs
- XmlSortKey.cs
- columnmapfactory.cs
- RotateTransform3D.cs
- ButtonFieldBase.cs
- UnknownBitmapDecoder.cs
- ErrorCodes.cs
- MultiAsyncResult.cs
- SendActivity.cs
- DecimalAverageAggregationOperator.cs
- XmlQueryOutput.cs