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
- MimeFormatExtensions.cs
- CategoryGridEntry.cs
- Int32AnimationUsingKeyFrames.cs
- DataBoundLiteralControl.cs
- RepeatBehaviorConverter.cs
- ZipIOFileItemStream.cs
- PropertyPathWorker.cs
- AppDomainUnloadedException.cs
- NameValueConfigurationCollection.cs
- hwndwrapper.cs
- GrammarBuilderPhrase.cs
- Inline.cs
- DataGridCommandEventArgs.cs
- ButtonDesigner.cs
- StreamUpdate.cs
- JpegBitmapDecoder.cs
- CleanUpVirtualizedItemEventArgs.cs
- ProfileService.cs
- ExtractedStateEntry.cs
- HashAlgorithm.cs
- SpellerError.cs
- ActivityCompletionCallbackWrapper.cs
- DuplexChannelFactory.cs
- AuthorizationRuleCollection.cs
- EncryptedType.cs
- SuppressIldasmAttribute.cs
- ToolStripGrip.cs
- XmlSchemaAny.cs
- returneventsaver.cs
- SecurityStandardsManager.cs
- BindableTemplateBuilder.cs
- ColumnMapVisitor.cs
- COM2PropertyBuilderUITypeEditor.cs
- CollectionViewSource.cs
- DnsEndPoint.cs
- RotateTransform3D.cs
- MinimizableAttributeTypeConverter.cs
- HandlerFactoryCache.cs
- Listbox.cs
- InstanceOwnerException.cs
- CommonObjectSecurity.cs
- StreamWriter.cs
- PropertyReferenceSerializer.cs
- SortAction.cs
- PerformanceCounter.cs
- SerializationEventsCache.cs
- InfoCardRSACryptoProvider.cs
- InstancePersistenceContext.cs
- Wizard.cs
- _Connection.cs
- SelectionProcessor.cs
- HttpStreamFormatter.cs
- XPathQueryGenerator.cs
- XmlWellformedWriter.cs
- ButtonFlatAdapter.cs
- NegationPusher.cs
- RequestDescription.cs
- ImageSource.cs
- ConnectionManagementElement.cs
- _WinHttpWebProxyDataBuilder.cs
- Geometry.cs
- HandlerWithFactory.cs
- AxisAngleRotation3D.cs
- CommandConverter.cs
- PointAnimationUsingKeyFrames.cs
- ComponentGuaranteesAttribute.cs
- TimersDescriptionAttribute.cs
- DesignTimeHTMLTextWriter.cs
- DocumentPageView.cs
- ServiceBusyException.cs
- DataRecordObjectView.cs
- IgnoreFileBuildProvider.cs
- GridView.cs
- ComponentCodeDomSerializer.cs
- XPathDocument.cs
- AttributeCollection.cs
- AsnEncodedData.cs
- SamlAuthorizationDecisionClaimResource.cs
- JsonSerializer.cs
- SqlBulkCopyColumnMappingCollection.cs
- FormParameter.cs
- AbandonedMutexException.cs
- CodeDefaultValueExpression.cs
- RepeatButtonAutomationPeer.cs
- ParameterModifier.cs
- RouteParser.cs
- ResponseStream.cs
- XPathAncestorIterator.cs
- CapabilitiesRule.cs
- WS2007HttpBindingElement.cs
- VisemeEventArgs.cs
- TextTreeNode.cs
- SchemaDeclBase.cs
- DefaultShape.cs
- XmlParserContext.cs
- BamlResourceDeserializer.cs
- Graph.cs
- Tracer.cs
- GridViewDeleteEventArgs.cs
- CharUnicodeInfo.cs