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
- ExpandSegmentCollection.cs
- DataObjectEventArgs.cs
- CacheEntry.cs
- SQLDateTimeStorage.cs
- FilteredAttributeCollection.cs
- SmtpReplyReaderFactory.cs
- ListViewInsertionMark.cs
- MinimizableAttributeTypeConverter.cs
- wgx_exports.cs
- WorkflowInstanceExtensionManager.cs
- UnsafeNativeMethods.cs
- XsltException.cs
- InfoCardRSACryptoProvider.cs
- GetCardDetailsRequest.cs
- UntypedNullExpression.cs
- PropertyGridEditorPart.cs
- TileModeValidation.cs
- ThousandthOfEmRealDoubles.cs
- TcpTransportManager.cs
- GroupBoxRenderer.cs
- ScrollData.cs
- TimeoutHelper.cs
- ViewgenGatekeeper.cs
- ProtocolViolationException.cs
- ElapsedEventArgs.cs
- BufferBuilder.cs
- ListViewDataItem.cs
- DataListItemEventArgs.cs
- ComponentChangingEvent.cs
- BinaryReader.cs
- ComboBox.cs
- TreeView.cs
- CloudCollection.cs
- TemplateAction.cs
- Compress.cs
- Tracking.cs
- CreateUserErrorEventArgs.cs
- NameGenerator.cs
- NativeCppClassAttribute.cs
- SoapObjectReader.cs
- DoubleAnimation.cs
- RemoteWebConfigurationHostStream.cs
- DocumentsTrace.cs
- SerialStream.cs
- HttpCookiesSection.cs
- NullableConverter.cs
- TakeQueryOptionExpression.cs
- TextDecorationUnitValidation.cs
- cookie.cs
- OdbcConnectionOpen.cs
- JoinSymbol.cs
- CollectionViewGroupRoot.cs
- ScriptRef.cs
- GroupBox.cs
- JoinTreeNode.cs
- ResourceReader.cs
- OpenFileDialog.cs
- UdpTransportBindingElement.cs
- BaseCollection.cs
- SuppressMergeCheckAttribute.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- QilLiteral.cs
- MarkupExtensionParser.cs
- VerificationAttribute.cs
- SqlInfoMessageEvent.cs
- QilName.cs
- KeyGestureConverter.cs
- ICspAsymmetricAlgorithm.cs
- DrawingContextDrawingContextWalker.cs
- SqlFlattener.cs
- HtmlUtf8RawTextWriter.cs
- DataSvcMapFileSerializer.cs
- DropShadowEffect.cs
- CodeThrowExceptionStatement.cs
- InitializationEventAttribute.cs
- OracleDataReader.cs
- DataGridViewTextBoxColumn.cs
- SystemIPv4InterfaceProperties.cs
- CfgArc.cs
- StrokeNodeOperations.cs
- QueryableFilterUserControl.cs
- Crc32.cs
- PrintDialog.cs
- InkCanvasInnerCanvas.cs
- TypeConverterHelper.cs
- SqlFormatter.cs
- XamlReader.cs
- WorkflowApplicationAbortedEventArgs.cs
- SoapCodeExporter.cs
- XmlParser.cs
- HelpInfo.cs
- DataViewSettingCollection.cs
- CodeSnippetExpression.cs
- TrackingServices.cs
- TreeViewImageKeyConverter.cs
- SystemColorTracker.cs
- DayRenderEvent.cs
- AdornerHitTestResult.cs
- TypeTypeConverter.cs
- BitmapFrameDecode.cs