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
- RepeatInfo.cs
- AnnotationService.cs
- HwndHostAutomationPeer.cs
- ConfigurationSchemaErrors.cs
- NativeWrapper.cs
- ReadOnlyAttribute.cs
- WebPartHelpVerb.cs
- FunctionQuery.cs
- _SpnDictionary.cs
- SqlParameterCollection.cs
- EmptyStringExpandableObjectConverter.cs
- GetPageNumberCompletedEventArgs.cs
- UidManager.cs
- SchemaCompiler.cs
- UICuesEvent.cs
- cryptoapiTransform.cs
- MailAddressCollection.cs
- Line.cs
- QilTypeChecker.cs
- RawStylusInputCustomDataList.cs
- TextEditorCharacters.cs
- StateChangeEvent.cs
- TypeBuilder.cs
- XmlRootAttribute.cs
- AssemblyFilter.cs
- CompModSwitches.cs
- HierarchicalDataTemplate.cs
- AffineTransform3D.cs
- TokenBasedSet.cs
- ReferenceSchema.cs
- PersonalizablePropertyEntry.cs
- EmptyEnumerator.cs
- UdpChannelListener.cs
- PropertyTabChangedEvent.cs
- Exceptions.cs
- _NetRes.cs
- MenuItem.cs
- RadioButton.cs
- PropertyAccessVisitor.cs
- RemotingConfigParser.cs
- OrderingExpression.cs
- HebrewCalendar.cs
- SafeFileMappingHandle.cs
- ProjectedSlot.cs
- DescendentsWalker.cs
- WindowHideOrCloseTracker.cs
- PackageFilter.cs
- CustomValidator.cs
- Bits.cs
- Model3D.cs
- ProcessModelSection.cs
- MethodCallTranslator.cs
- InkCollectionBehavior.cs
- ComplexBindingPropertiesAttribute.cs
- InvalidComObjectException.cs
- PropertyChange.cs
- CAGDesigner.cs
- TableRowCollection.cs
- FilterException.cs
- SelfIssuedTokenFactoryCredential.cs
- Constraint.cs
- Viewport3DVisual.cs
- List.cs
- ProxySimple.cs
- RequestCachePolicy.cs
- CallbackValidatorAttribute.cs
- DateTimeFormat.cs
- List.cs
- Translator.cs
- TextOptions.cs
- RSAOAEPKeyExchangeDeformatter.cs
- Propagator.ExtentPlaceholderCreator.cs
- SHA384CryptoServiceProvider.cs
- DiscardableAttribute.cs
- Latin1Encoding.cs
- DoubleAnimationBase.cs
- Cursors.cs
- PlatformNotSupportedException.cs
- CodeAccessPermission.cs
- TextTreeUndo.cs
- StylusButtonEventArgs.cs
- LinqDataSourceDeleteEventArgs.cs
- Nullable.cs
- RefreshEventArgs.cs
- PngBitmapDecoder.cs
- PerformanceCounter.cs
- Timer.cs
- BCryptNative.cs
- OLEDB_Enum.cs
- Section.cs
- XmlDocumentSerializer.cs
- ReflectEventDescriptor.cs
- TripleDES.cs
- EnumMember.cs
- ApplicationDirectory.cs
- TabControlEvent.cs
- StrokeNodeOperations2.cs
- TraceXPathNavigator.cs
- WindowAutomationPeer.cs
- ZipIOLocalFileHeader.cs