Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- BlurEffect.cs
- DllNotFoundException.cs
- OleDbReferenceCollection.cs
- DrawingImage.cs
- ImageFormatConverter.cs
- DataSourceControlBuilder.cs
- LinqDataSource.cs
- CustomExpression.cs
- PopOutPanel.cs
- SerializationException.cs
- ClonableStack.cs
- ChildrenQuery.cs
- IPAddress.cs
- MenuBindingsEditorForm.cs
- ZoneIdentityPermission.cs
- PassportAuthentication.cs
- AxHost.cs
- TcpSocketManager.cs
- AnnouncementSendsAsyncResult.cs
- OdbcConnectionOpen.cs
- AssertSection.cs
- MailHeaderInfo.cs
- SafeNativeMethodsOther.cs
- GregorianCalendar.cs
- CompoundFileIOPermission.cs
- CmsUtils.cs
- LinqToSqlWrapper.cs
- SqlFactory.cs
- XhtmlBasicFormAdapter.cs
- RightsDocument.cs
- ButtonColumn.cs
- MenuItemStyleCollection.cs
- BitStack.cs
- FragmentQueryProcessor.cs
- ServiceHostingEnvironment.cs
- SharedPerformanceCounter.cs
- FacetValueContainer.cs
- JsonQueryStringConverter.cs
- Int32Animation.cs
- XmlSchemaExporter.cs
- MethodBody.cs
- SmiContext.cs
- HtmlSelectionListAdapter.cs
- DataSourceHelper.cs
- control.ime.cs
- XmlComment.cs
- GroupItemAutomationPeer.cs
- PolicyManager.cs
- Page.cs
- BaseAutoFormat.cs
- XmlTextAttribute.cs
- NominalTypeEliminator.cs
- adornercollection.cs
- EventManager.cs
- DependencyPropertyChangedEventArgs.cs
- UInt16.cs
- ConfigXmlReader.cs
- DbExpressionBuilder.cs
- PageThemeCodeDomTreeGenerator.cs
- UInt64Storage.cs
- SplitContainer.cs
- Events.cs
- ModelPropertyDescriptor.cs
- CompositeControl.cs
- EntityDataSourceContextCreatingEventArgs.cs
- Command.cs
- EntityChangedParams.cs
- DrawingContext.cs
- ProtocolsConfigurationEntry.cs
- ServiceOperation.cs
- ExpressionEditorAttribute.cs
- ClientCultureInfo.cs
- DependencyObject.cs
- ProvidePropertyAttribute.cs
- RawMouseInputReport.cs
- XmlSchema.cs
- SemanticBasicElement.cs
- hwndwrapper.cs
- CounterSampleCalculator.cs
- ContentTextAutomationPeer.cs
- Rotation3DAnimation.cs
- DesignerAttribute.cs
- X509UI.cs
- ScriptManager.cs
- AttachedPropertyBrowsableAttribute.cs
- PagedControl.cs
- TextEditorContextMenu.cs
- IdentifierService.cs
- EntitySqlQueryCacheKey.cs
- CombinedGeometry.cs
- TabletCollection.cs
- ButtonAutomationPeer.cs
- FrameworkPropertyMetadata.cs
- SurrogateEncoder.cs
- MemoryPressure.cs
- HTTPNotFoundHandler.cs
- Parallel.cs
- DataListItemEventArgs.cs
- ConnectionManagementElement.cs
- EasingFunctionBase.cs