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
- SqlInfoMessageEvent.cs
- PenContexts.cs
- _ProxyRegBlob.cs
- WebPartAuthorizationEventArgs.cs
- XsdDuration.cs
- DataGridViewLinkCell.cs
- ContentPresenter.cs
- SiteMapNodeItemEventArgs.cs
- SqlClientWrapperSmiStreamChars.cs
- MobilePage.cs
- XmlDomTextWriter.cs
- UserCancellationException.cs
- TextElementEditingBehaviorAttribute.cs
- DataSourceCollectionBase.cs
- GroupBox.cs
- WebBrowserSiteBase.cs
- ExtensionFile.cs
- PropertyChangedEventManager.cs
- NoClickablePointException.cs
- DataControlLinkButton.cs
- XPathNodePointer.cs
- ListParaClient.cs
- CodeExpressionRuleDeclaration.cs
- XmlDomTextWriter.cs
- CacheSection.cs
- BasePropertyDescriptor.cs
- UrlRoutingModule.cs
- VersionedStreamOwner.cs
- ETagAttribute.cs
- TextChange.cs
- GlyphRunDrawing.cs
- TemplateAction.cs
- ColorAnimation.cs
- HelloMessage11.cs
- TransformPatternIdentifiers.cs
- ParameterElementCollection.cs
- SafeFileMappingHandle.cs
- ListBoxItemWrapperAutomationPeer.cs
- VerticalConnector.xaml.cs
- SHA1.cs
- DetailsViewUpdateEventArgs.cs
- GridViewUpdatedEventArgs.cs
- UntypedNullExpression.cs
- Scripts.cs
- UIEndRequest.cs
- Currency.cs
- OrderByQueryOptionExpression.cs
- DurationConverter.cs
- WorkerRequest.cs
- ISAPIRuntime.cs
- DbMetaDataColumnNames.cs
- DependencyPropertyConverter.cs
- precedingsibling.cs
- ProfileServiceManager.cs
- SocketException.cs
- ColorIndependentAnimationStorage.cs
- DataGridViewHitTestInfo.cs
- EmptyReadOnlyDictionaryInternal.cs
- ExclusiveTcpTransportManager.cs
- UpDownEvent.cs
- _NegoState.cs
- RefreshInfo.cs
- CachedCompositeFamily.cs
- Transform3D.cs
- EdmSchemaError.cs
- EventDescriptorCollection.cs
- HtmlContainerControl.cs
- XmlSerializerAssemblyAttribute.cs
- ProviderSettingsCollection.cs
- GeometryCombineModeValidation.cs
- DataGridViewButtonColumn.cs
- MultilineStringConverter.cs
- TimeZoneNotFoundException.cs
- SiteMapProvider.cs
- DbSetClause.cs
- SmtpException.cs
- SqlCacheDependency.cs
- TreeViewImageKeyConverter.cs
- CurrencyManager.cs
- Int64.cs
- CustomTypeDescriptor.cs
- Freezable.cs
- SamlAction.cs
- _ConnectStream.cs
- GridItemProviderWrapper.cs
- SerialErrors.cs
- EllipseGeometry.cs
- BinaryFormatter.cs
- ToolStripDesignerUtils.cs
- WmlTextBoxAdapter.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- XmlWrappingReader.cs
- BitmapEffect.cs
- DesignerDataTable.cs
- DataColumnCollection.cs
- CheckBoxStandardAdapter.cs
- BitmapEffectCollection.cs
- TextParagraphProperties.cs
- NamespaceEmitter.cs
- DataGridViewDataErrorEventArgs.cs