Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DesignTimeParseData.cs
- LineGeometry.cs
- PtsPage.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- DataViewManager.cs
- DataSvcMapFileSerializer.cs
- FixedDocumentPaginator.cs
- ImportContext.cs
- KoreanLunisolarCalendar.cs
- BuildResultCache.cs
- Mutex.cs
- ToolStripEditorManager.cs
- RawKeyboardInputReport.cs
- QueuedDeliveryRequirementsMode.cs
- ProcessInfo.cs
- HwndHost.cs
- DbConnectionPoolCounters.cs
- HtmlGenericControl.cs
- XmlSchemaSubstitutionGroup.cs
- XomlCompilerParameters.cs
- SessionEndingCancelEventArgs.cs
- RemoteHelper.cs
- Console.cs
- CustomWebEventKey.cs
- TypeUnloadedException.cs
- ResponseStream.cs
- QueryStringConverter.cs
- JoinTreeNode.cs
- XmlSchemaDatatype.cs
- Permission.cs
- NamespaceEmitter.cs
- GPRECTF.cs
- SelectionEditingBehavior.cs
- AutomationIdentifier.cs
- IfAction.cs
- WebBrowser.cs
- VersionUtil.cs
- ColumnWidthChangedEvent.cs
- OrderedHashRepartitionEnumerator.cs
- ListArgumentProvider.cs
- OAVariantLib.cs
- SupportingTokenListenerFactory.cs
- SigningCredentials.cs
- TablePattern.cs
- AssemblyCache.cs
- GlyphRunDrawing.cs
- ExpressionPrefixAttribute.cs
- TabletDeviceInfo.cs
- WebEvents.cs
- OleDbConnectionInternal.cs
- DropSource.cs
- HtmlControlPersistable.cs
- SoapCodeExporter.cs
- XmlMtomReader.cs
- Stream.cs
- SoapObjectReader.cs
- TraceContextEventArgs.cs
- NamespaceQuery.cs
- ContractTypeNameElement.cs
- WindowsScroll.cs
- PeerCollaboration.cs
- PublisherIdentityPermission.cs
- WebHttpElement.cs
- Propagator.JoinPropagator.SubstitutingCloneVisitor.cs
- TrustManagerPromptUI.cs
- ParseHttpDate.cs
- JoinTreeSlot.cs
- RankException.cs
- Form.cs
- TemplateContent.cs
- ExternalException.cs
- XmlMembersMapping.cs
- UniqueEventHelper.cs
- Stackframe.cs
- ObjectRef.cs
- DateTimeValueSerializerContext.cs
- FileRecordSequenceCompletedAsyncResult.cs
- InheritanceRules.cs
- SponsorHelper.cs
- AsyncPostBackErrorEventArgs.cs
- PersistencePipeline.cs
- HTTPNotFoundHandler.cs
- PeerToPeerException.cs
- DataColumnMapping.cs
- WebPartsSection.cs
- TextEditorDragDrop.cs
- UnauthorizedWebPart.cs
- PenLineJoinValidation.cs
- ObjectDataSourceMethodEventArgs.cs
- CompilerState.cs
- ProcessRequestArgs.cs
- DiagnosticTrace.cs
- DictionaryBase.cs
- PolicyException.cs
- ControlAdapter.cs
- AccessDataSourceView.cs
- TransactionsSectionGroup.cs
- TranslateTransform3D.cs
- SQLCharsStorage.cs
- SqlTypeConverter.cs