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
- EastAsianLunisolarCalendar.cs
- NotSupportedException.cs
- OutputWindow.cs
- ErrorView.xaml.cs
- PaginationProgressEventArgs.cs
- LineMetrics.cs
- ProxyGenerationError.cs
- DBDataPermissionAttribute.cs
- InputScope.cs
- Component.cs
- TextServicesDisplayAttribute.cs
- SmtpFailedRecipientsException.cs
- MetadataArtifactLoaderResource.cs
- FrugalList.cs
- DateTimeValueSerializer.cs
- Transactions.cs
- ClrPerspective.cs
- HotSpot.cs
- DragDropHelper.cs
- QueryContinueDragEventArgs.cs
- UTF32Encoding.cs
- SerializationSectionGroup.cs
- DesignTimeData.cs
- DataGridViewCellLinkedList.cs
- ExpressionBuilder.cs
- TimeoutValidationAttribute.cs
- Message.cs
- DrawListViewSubItemEventArgs.cs
- PtsPage.cs
- ArrayElementGridEntry.cs
- HttpServerVarsCollection.cs
- FormattedText.cs
- LifetimeManager.cs
- ControlIdConverter.cs
- Decimal.cs
- TraceHandler.cs
- XmlObjectSerializerWriteContextComplex.cs
- Socket.cs
- ButtonBase.cs
- EllipseGeometry.cs
- PolicyLevel.cs
- ComponentDispatcherThread.cs
- CompositeFontFamily.cs
- SemanticResolver.cs
- MSHTMLHost.cs
- SqlRetyper.cs
- ListViewEditEventArgs.cs
- TypeDelegator.cs
- TaiwanCalendar.cs
- SyndicationFeed.cs
- TrackingRecord.cs
- HttpCachePolicyElement.cs
- PreviewPrintController.cs
- OdbcDataAdapter.cs
- URLEditor.cs
- DataColumnChangeEvent.cs
- ProxyWebPart.cs
- SQLRoleProvider.cs
- TargetParameterCountException.cs
- SafePointer.cs
- SqlFunctionAttribute.cs
- ChangeToolStripParentVerb.cs
- HttpEncoder.cs
- DefaultParameterValueAttribute.cs
- Range.cs
- ClientViaElement.cs
- EntityViewGenerator.cs
- SoapFormatter.cs
- ObjectDataSourceStatusEventArgs.cs
- TileBrush.cs
- SessionStateItemCollection.cs
- SqlDependencyUtils.cs
- CookielessHelper.cs
- RoleManagerModule.cs
- SharedUtils.cs
- ValueUnavailableException.cs
- FormsAuthenticationCredentials.cs
- Point3DCollectionValueSerializer.cs
- HttpCapabilitiesSectionHandler.cs
- EnterpriseServicesHelper.cs
- SafeLibraryHandle.cs
- DefaultHttpHandler.cs
- ValidationRuleCollection.cs
- BamlResourceSerializer.cs
- GroupItem.cs
- EntityParameterCollection.cs
- InvariantComparer.cs
- XmlElementAttribute.cs
- EditingCommands.cs
- XmlSchemaComplexContentExtension.cs
- Rect.cs
- ConnectionStringsExpressionBuilder.cs
- DecimalAnimationUsingKeyFrames.cs
- DecimalKeyFrameCollection.cs
- X509UI.cs
- XmlQueryCardinality.cs
- ListViewInsertionMark.cs
- ISAPIWorkerRequest.cs
- SqlDataSourceCustomCommandEditor.cs
- EntityDataReader.cs