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
- CharEnumerator.cs
- ExpressionHelper.cs
- BindingExpressionBase.cs
- AutomationPropertyInfo.cs
- TextEditorCharacters.cs
- InstanceKeyCollisionException.cs
- ReliableMessagingHelpers.cs
- GenericTextProperties.cs
- webeventbuffer.cs
- StyleCollectionEditor.cs
- SHA256Managed.cs
- ListBox.cs
- XPathNodeList.cs
- AuthenticateEventArgs.cs
- AQNBuilder.cs
- DesignerAttribute.cs
- LinearGradientBrush.cs
- SqlDataSourceEnumerator.cs
- ContainerVisual.cs
- TextBox.cs
- SqlParameterCollection.cs
- Crypto.cs
- XamlDesignerSerializationManager.cs
- SystemResourceKey.cs
- ImmutableCollection.cs
- CheckBoxField.cs
- SortedList.cs
- UserInitiatedRoutedEventPermissionAttribute.cs
- Repeater.cs
- EntityContainerEmitter.cs
- SHA256Managed.cs
- DiagnosticTraceSource.cs
- TableLayoutStyleCollection.cs
- TwoPhaseCommit.cs
- HostDesigntimeLicenseContext.cs
- DbMetaDataColumnNames.cs
- XamlTemplateSerializer.cs
- TextBounds.cs
- GridViewUpdateEventArgs.cs
- ZipIOLocalFileBlock.cs
- Rectangle.cs
- DataGridViewColumnEventArgs.cs
- TextBlockAutomationPeer.cs
- RadialGradientBrush.cs
- NullableIntMinMaxAggregationOperator.cs
- TextureBrush.cs
- ArgumentOutOfRangeException.cs
- OleDbPermission.cs
- DebugView.cs
- AssociatedControlConverter.cs
- ExpressionHelper.cs
- ProjectionCamera.cs
- EntityProxyFactory.cs
- TemplateBindingExpression.cs
- PropertiesTab.cs
- Pair.cs
- EditorPartChrome.cs
- BmpBitmapEncoder.cs
- SortDescription.cs
- SevenBitStream.cs
- SQLRoleProvider.cs
- TextAutomationPeer.cs
- FixedPageAutomationPeer.cs
- precedingquery.cs
- DocumentPageTextView.cs
- XmlSerializerOperationFormatter.cs
- InstanceData.cs
- Mutex.cs
- bidPrivateBase.cs
- CounterSetInstanceCounterDataSet.cs
- MultipleFilterMatchesException.cs
- PowerModeChangedEventArgs.cs
- UnsafeNetInfoNativeMethods.cs
- ZipIOExtraFieldElement.cs
- XmlConvert.cs
- MembershipPasswordException.cs
- HijriCalendar.cs
- X509InitiatorCertificateServiceElement.cs
- IsolatedStorage.cs
- Random.cs
- ToolStripContentPanel.cs
- SoapSchemaMember.cs
- TemplateEditingFrame.cs
- CommandExpr.cs
- RichTextBoxDesigner.cs
- ObjectStateEntryOriginalDbUpdatableDataRecord.cs
- CodeGroup.cs
- XmlIgnoreAttribute.cs
- ListItemConverter.cs
- FilteredReadOnlyMetadataCollection.cs
- Triplet.cs
- HelpOperationInvoker.cs
- NameNode.cs
- SafeLocalAllocation.cs
- Win32.cs
- CompositeFontFamily.cs
- WebPermission.cs
- StyleXamlParser.cs
- HttpServerVarsCollection.cs
- MemberAccessException.cs