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
- RecordsAffectedEventArgs.cs
- HexParser.cs
- IHttpResponseInternal.cs
- XsltQilFactory.cs
- Visual3D.cs
- _LocalDataStore.cs
- RayHitTestParameters.cs
- KeyedHashAlgorithm.cs
- ValueType.cs
- lengthconverter.cs
- ReliabilityContractAttribute.cs
- Substitution.cs
- EntityStoreSchemaFilterEntry.cs
- TrackBarRenderer.cs
- ListenerUnsafeNativeMethods.cs
- AuthorizationContext.cs
- Utils.cs
- DataGridViewRowHeaderCell.cs
- Bits.cs
- SQLGuidStorage.cs
- DBConnectionString.cs
- OraclePermission.cs
- BaseCodeDomTreeGenerator.cs
- StructuredProperty.cs
- CustomAttributeBuilder.cs
- SizeKeyFrameCollection.cs
- SiblingIterators.cs
- NativeMethods.cs
- GeometryModel3D.cs
- TextServicesCompartment.cs
- SizeConverter.cs
- SortableBindingList.cs
- HuffCodec.cs
- GACMembershipCondition.cs
- FixedSOMPageElement.cs
- EditorPartCollection.cs
- RoutingService.cs
- PreservationFileWriter.cs
- DocumentViewerHelper.cs
- HostExecutionContextManager.cs
- ConstructorArgumentAttribute.cs
- Int32AnimationBase.cs
- VectorAnimation.cs
- XmlBinaryWriter.cs
- ProvidePropertyAttribute.cs
- HttpProfileGroupBase.cs
- HttpCookieCollection.cs
- SessionPageStateSection.cs
- TimeZone.cs
- SchemaImporterExtensionsSection.cs
- ContentHostHelper.cs
- TypedTableBaseExtensions.cs
- IItemContainerGenerator.cs
- OleDbTransaction.cs
- XamlVector3DCollectionSerializer.cs
- RowToParametersTransformer.cs
- HitTestDrawingContextWalker.cs
- TextTreeInsertElementUndoUnit.cs
- InstanceData.cs
- TextDecorationLocationValidation.cs
- DbDataAdapter.cs
- Rotation3DKeyFrameCollection.cs
- JoinElimination.cs
- _TLSstream.cs
- CodeIdentifiers.cs
- Int64Storage.cs
- SqlDataSourceView.cs
- OdbcInfoMessageEvent.cs
- PerformanceCounterManager.cs
- MessageEncodingBindingElementImporter.cs
- InfoCardMasterKey.cs
- SQLInt64.cs
- ActivityTypeCodeDomSerializer.cs
- MenuCommands.cs
- ItemContainerGenerator.cs
- QuadraticEase.cs
- BindToObject.cs
- RNGCryptoServiceProvider.cs
- FormView.cs
- UTF32Encoding.cs
- WindowsListViewGroup.cs
- CalendarDateRange.cs
- UnsafeNativeMethodsMilCoreApi.cs
- XmlObjectSerializerReadContextComplex.cs
- HttpCookie.cs
- QueryAccessibilityHelpEvent.cs
- CodeSubDirectoriesCollection.cs
- XmlSchemaComplexContentRestriction.cs
- ParsedAttributeCollection.cs
- ArrayExtension.cs
- HyperLink.cs
- TileBrush.cs
- VariantWrapper.cs
- AspNetSynchronizationContext.cs
- XPathExpr.cs
- DataGridViewSelectedCellCollection.cs
- MarshalByValueComponent.cs
- _LocalDataStoreMgr.cs
- TaskScheduler.cs
- AnnotationMap.cs