Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- WebPartZoneBase.cs
- TdsParameterSetter.cs
- HtmlTextArea.cs
- MinMaxParagraphWidth.cs
- KeyFrames.cs
- CollectionConverter.cs
- DPCustomTypeDescriptor.cs
- ResetableIterator.cs
- SchemaImporterExtension.cs
- SchemaRegistration.cs
- TextLineBreak.cs
- CodeTypeMember.cs
- GifBitmapDecoder.cs
- SspiHelper.cs
- TypeUnloadedException.cs
- mediaeventshelper.cs
- OutputCacheModule.cs
- TemplateKeyConverter.cs
- NativeCppClassAttribute.cs
- RootAction.cs
- MetadataImporter.cs
- BitSet.cs
- ControlPropertyNameConverter.cs
- LastQueryOperator.cs
- SpeechAudioFormatInfo.cs
- Part.cs
- HtmlHistory.cs
- XPathEmptyIterator.cs
- LeaseManager.cs
- CutCopyPasteHelper.cs
- HtmlPhoneCallAdapter.cs
- TypeDefinition.cs
- SortQuery.cs
- httpstaticobjectscollection.cs
- WebCategoryAttribute.cs
- BookmarkWorkItem.cs
- ModelPerspective.cs
- GenericTypeParameterBuilder.cs
- versioninfo.cs
- SqlDataSourceCache.cs
- ToolStripRenderer.cs
- HtmlValidatorAdapter.cs
- IncrementalReadDecoders.cs
- TransactionChannelListener.cs
- MostlySingletonList.cs
- WSFederationHttpBindingElement.cs
- HttpRequestCacheValidator.cs
- LinearKeyFrames.cs
- Pen.cs
- sqlnorm.cs
- HtmlWindow.cs
- SplitterEvent.cs
- ReliabilityContractAttribute.cs
- CustomError.cs
- SizeKeyFrameCollection.cs
- SamlAuthorizationDecisionStatement.cs
- EmbeddedMailObject.cs
- CharacterBuffer.cs
- QueryInterceptorAttribute.cs
- XmlSchema.cs
- XmlSchemaCollection.cs
- JavaScriptSerializer.cs
- MenuTracker.cs
- JoinSymbol.cs
- Byte.cs
- TileBrush.cs
- InheritanceContextChangedEventManager.cs
- DynamicMetaObjectBinder.cs
- ToolStripRendererSwitcher.cs
- AnnotationMap.cs
- Rfc2898DeriveBytes.cs
- CodeMemberEvent.cs
- ObjectDataSourceMethodEventArgs.cs
- FacetChecker.cs
- XmlObjectSerializerWriteContext.cs
- BamlTreeMap.cs
- MailSettingsSection.cs
- LinkConverter.cs
- LogWriteRestartAreaState.cs
- XmlSchemaImporter.cs
- WebServiceFault.cs
- _TimerThread.cs
- UniqueConstraint.cs
- PageSetupDialog.cs
- XmlWriter.cs
- DoubleLinkListEnumerator.cs
- FileLevelControlBuilderAttribute.cs
- DataSetMappper.cs
- ClientProtocol.cs
- ThousandthOfEmRealDoubles.cs
- ArraySortHelper.cs
- XmlUtilWriter.cs
- Symbol.cs
- SecurityTokenParametersEnumerable.cs
- FontFamily.cs
- PageAsyncTask.cs
- EmbossBitmapEffect.cs
- InfoCardServiceInstallComponent.cs
- Brush.cs
- infer.cs