Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / XmlUtils / System / Xml / Xsl / XsltOld / CopyAttributesAction.cs / 1305376 / 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
- WorkflowServiceBehavior.cs
- AttributeCollection.cs
- LocalizedNameDescriptionPair.cs
- MenuAdapter.cs
- FastEncoderWindow.cs
- ExecutionContext.cs
- WebBrowser.cs
- PropertyIDSet.cs
- DropDownList.cs
- TransactionInterop.cs
- CodeMemberEvent.cs
- AspNetHostingPermission.cs
- Visual.cs
- XmlSchemaSimpleContentRestriction.cs
- DesignTimeTemplateParser.cs
- CodeAttributeArgumentCollection.cs
- WebExceptionStatus.cs
- Vector3DConverter.cs
- FilteredDataSetHelper.cs
- _OverlappedAsyncResult.cs
- GridViewRowPresenter.cs
- PropertyMap.cs
- TransformationRules.cs
- DataObjectMethodAttribute.cs
- CodeTypeParameter.cs
- TraceLevelHelper.cs
- DatasetMethodGenerator.cs
- ObjectTag.cs
- ResourceDisplayNameAttribute.cs
- XmlDictionaryReaderQuotas.cs
- DesignerVerbCollection.cs
- DiagnosticsConfigurationHandler.cs
- TrackBarRenderer.cs
- RtfFormatStack.cs
- EntityDataSourceMemberPath.cs
- DiagnosticsConfigurationHandler.cs
- ScriptReferenceEventArgs.cs
- DbProviderManifest.cs
- WindowsGraphics2.cs
- OleAutBinder.cs
- SelectionWordBreaker.cs
- WebScriptEndpointElement.cs
- VectorAnimation.cs
- MediaElement.cs
- BamlBinaryWriter.cs
- ListComponentEditorPage.cs
- DefaultSection.cs
- Span.cs
- CodeLabeledStatement.cs
- SmtpReplyReaderFactory.cs
- FullTextLine.cs
- XmlAttributeOverrides.cs
- XpsSerializerWriter.cs
- xamlnodes.cs
- ZipIOExtraField.cs
- DoubleStorage.cs
- SingleResultAttribute.cs
- shaperfactoryquerycacheentry.cs
- XmlDictionaryString.cs
- DriveNotFoundException.cs
- FormatSettings.cs
- DbReferenceCollection.cs
- FileIOPermission.cs
- WCFModelStrings.Designer.cs
- X509Utils.cs
- XsltSettings.cs
- SelectedDatesCollection.cs
- RootProfilePropertySettingsCollection.cs
- coordinatorscratchpad.cs
- _BasicClient.cs
- TextControl.cs
- DbQueryCommandTree.cs
- TypeConverter.cs
- Visual3D.cs
- StatusBarPanelClickEvent.cs
- FormatVersion.cs
- TemplatedWizardStep.cs
- DataError.cs
- SchemaComplexType.cs
- TypeSystem.cs
- PageAsyncTask.cs
- RequestQueryParser.cs
- ReflectionTypeLoadException.cs
- TimeoutHelper.cs
- Region.cs
- SqlCommand.cs
- ContentElementAutomationPeer.cs
- ComponentResourceManager.cs
- IIS7WorkerRequest.cs
- NamespaceList.cs
- WebBrowserContainer.cs
- ParameterCollection.cs
- EndpointConfigContainer.cs
- JavascriptCallbackBehaviorAttribute.cs
- NamespaceDisplayAutomationPeer.cs
- LogExtent.cs
- XmlSchemaSimpleContentExtension.cs
- PeerDuplexChannel.cs
- OpenTypeLayoutCache.cs
- ProbeMatchesApril2005.cs