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
- DataGridCheckBoxColumn.cs
- TimeoutException.cs
- ScriptResourceHandler.cs
- ListInitExpression.cs
- Viewport3DAutomationPeer.cs
- QilStrConcat.cs
- NullableBoolConverter.cs
- RijndaelManagedTransform.cs
- CryptoConfig.cs
- OdbcCommandBuilder.cs
- HashRepartitionStream.cs
- SignalGate.cs
- CryptoConfig.cs
- Form.cs
- DbConnectionClosed.cs
- TableRow.cs
- UnmanagedHandle.cs
- ToolStrip.cs
- JsonMessageEncoderFactory.cs
- ToolStripInSituService.cs
- HttpRequestTraceRecord.cs
- HtmlInputSubmit.cs
- FileUpload.cs
- HandleCollector.cs
- ClientSideQueueItem.cs
- _ConnectOverlappedAsyncResult.cs
- AvTraceFormat.cs
- CookieHandler.cs
- EdmComplexPropertyAttribute.cs
- Menu.cs
- EntityClassGenerator.cs
- HMAC.cs
- CalendarDataBindingHandler.cs
- smtpconnection.cs
- nulltextnavigator.cs
- CopyNodeSetAction.cs
- ElementProxy.cs
- SchemaConstraints.cs
- DataGridViewTopLeftHeaderCell.cs
- DirectoryInfo.cs
- SweepDirectionValidation.cs
- Storyboard.cs
- StringStorage.cs
- TabletDevice.cs
- AssemblyBuilder.cs
- MouseEventArgs.cs
- ListViewTableCell.cs
- TableLayoutSettings.cs
- BrowserTree.cs
- SpellCheck.cs
- EmptyStringExpandableObjectConverter.cs
- GridToolTip.cs
- RuntimeUtils.cs
- RSAOAEPKeyExchangeFormatter.cs
- ListParaClient.cs
- AstNode.cs
- DataFormats.cs
- ComponentSerializationService.cs
- ApplicationTrust.cs
- TemplateComponentConnector.cs
- GridView.cs
- AsymmetricSignatureFormatter.cs
- ZoneButton.cs
- XmlText.cs
- Table.cs
- NamedServiceModelExtensionCollectionElement.cs
- SslStream.cs
- DataObjectEventArgs.cs
- WindowsToolbar.cs
- ToolStripItemTextRenderEventArgs.cs
- RowBinding.cs
- ValidatorCompatibilityHelper.cs
- DisposableCollectionWrapper.cs
- XmlWrappingWriter.cs
- SqlCommandBuilder.cs
- IdentityHolder.cs
- ResourceProperty.cs
- CachedFontFamily.cs
- BitmapDecoder.cs
- DefaultDiscoveryService.cs
- Matrix.cs
- ArgIterator.cs
- XamlBrushSerializer.cs
- X509PeerCertificateAuthenticationElement.cs
- COM2IDispatchConverter.cs
- FixedSOMTableCell.cs
- DrawItemEvent.cs
- InfiniteTimeSpanConverter.cs
- CommentGlyph.cs
- DocumentDesigner.cs
- HandlerFactoryCache.cs
- Stackframe.cs
- RectangleF.cs
- ConfigurationException.cs
- TransactionFlowBindingElementImporter.cs
- InternalControlCollection.cs
- CodeExporter.cs
- SynchronizationContext.cs
- TemplateKeyConverter.cs
- SmtpException.cs