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
- XmlSchemaImport.cs
- DbReferenceCollection.cs
- PersistNameAttribute.cs
- EntityDataSourceWrapper.cs
- X509Extension.cs
- ProfileModule.cs
- HttpPostedFileWrapper.cs
- ReceiveCompletedEventArgs.cs
- TextServicesCompartment.cs
- FileDetails.cs
- DSASignatureFormatter.cs
- InheritanceContextChangedEventManager.cs
- WebConfigurationManager.cs
- OdbcUtils.cs
- SBCSCodePageEncoding.cs
- DataGridViewRowCollection.cs
- ToolStripActionList.cs
- ModelUtilities.cs
- WebPartVerb.cs
- XmlUtil.cs
- WindowsStatusBar.cs
- CapabilitiesAssignment.cs
- IdnMapping.cs
- SessionIDManager.cs
- TdsParameterSetter.cs
- CachedResourceDictionaryExtension.cs
- X509Certificate2.cs
- Attributes.cs
- XsltLibrary.cs
- WindowsRichEditRange.cs
- TypeGeneratedEventArgs.cs
- XmlCustomFormatter.cs
- HttpCapabilitiesSectionHandler.cs
- WebPartTransformerAttribute.cs
- TransformGroup.cs
- PerformanceCounterPermission.cs
- GPPOINT.cs
- PriorityQueue.cs
- StaticExtension.cs
- DbDeleteCommandTree.cs
- MergeFilterQuery.cs
- RuleInfoComparer.cs
- JavaScriptString.cs
- XsltContext.cs
- ClassHandlersStore.cs
- QuaternionAnimationUsingKeyFrames.cs
- XsltSettings.cs
- TableParaClient.cs
- TrustSection.cs
- ConfigurationSectionCollection.cs
- DBParameter.cs
- Statements.cs
- CorruptingExceptionCommon.cs
- ProfilePropertySettingsCollection.cs
- PluralizationServiceUtil.cs
- BufferModesCollection.cs
- pingexception.cs
- ConfigXmlElement.cs
- AttributeInfo.cs
- __Error.cs
- LinearQuaternionKeyFrame.cs
- DataKeyCollection.cs
- XmlSchemaValidationException.cs
- PartialTrustVisibleAssembly.cs
- ClientApiGenerator.cs
- TypeGeneratedEventArgs.cs
- UniqueIdentifierService.cs
- DesignTimeXamlWriter.cs
- MarkedHighlightComponent.cs
- SqlExpressionNullability.cs
- OdbcCommand.cs
- GetPageNumberCompletedEventArgs.cs
- Rect3DConverter.cs
- DateRangeEvent.cs
- GeneralTransform.cs
- EndPoint.cs
- SchemaLookupTable.cs
- DebugTracing.cs
- SqlRewriteScalarSubqueries.cs
- ExtensibleClassFactory.cs
- EventLogTraceListener.cs
- EnterpriseServicesHelper.cs
- _emptywebproxy.cs
- SecurityRequiresReviewAttribute.cs
- XamlTreeBuilder.cs
- ApplicationId.cs
- GridSplitter.cs
- BaseDataBoundControlDesigner.cs
- ScrollProperties.cs
- SqlProfileProvider.cs
- EncryptedKeyIdentifierClause.cs
- CollectionChangedEventManager.cs
- Authorization.cs
- MatrixAnimationUsingPath.cs
- DataGridViewLayoutData.cs
- ProcessModelInfo.cs
- ContractReference.cs
- DetailsViewDeleteEventArgs.cs
- ParserHooks.cs
- SqlCommandBuilder.cs