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
- AffineTransform3D.cs
- CachingHintValidation.cs
- BuildResultCache.cs
- Pair.cs
- Selector.cs
- MenuItemBinding.cs
- TemplateInstanceAttribute.cs
- OperationCanceledException.cs
- AsyncCodeActivityContext.cs
- StackBuilderSink.cs
- TableRow.cs
- PaperSize.cs
- ItemsPanelTemplate.cs
- InputMethodStateTypeInfo.cs
- KeyNameIdentifierClause.cs
- ObjectManager.cs
- DesignTimeXamlWriter.cs
- ComplexLine.cs
- PropertyCondition.cs
- TemplateBindingExtensionConverter.cs
- BeginStoryboard.cs
- Inflater.cs
- AutomationPeer.cs
- UITypeEditor.cs
- ComponentCollection.cs
- HttpProfileBase.cs
- DoWorkEventArgs.cs
- Expressions.cs
- SrgsRulesCollection.cs
- DesignerSerializationOptionsAttribute.cs
- SqlAliasesReferenced.cs
- ObjectSpanRewriter.cs
- UmAlQuraCalendar.cs
- XmlSequenceWriter.cs
- HtmlLabelAdapter.cs
- RegexWriter.cs
- formatter.cs
- OTFRasterizer.cs
- ColorPalette.cs
- DataGridRow.cs
- OracleParameterCollection.cs
- SmtpReplyReader.cs
- IncomingWebResponseContext.cs
- DefaultBindingPropertyAttribute.cs
- XmlnsDictionary.cs
- ExtendedPropertyCollection.cs
- CompilerState.cs
- HyperLink.cs
- SinglePhaseEnlistment.cs
- DataList.cs
- GZipDecoder.cs
- MenuItemBinding.cs
- SafeFindHandle.cs
- CursorInteropHelper.cs
- ScriptIgnoreAttribute.cs
- ArrayWithOffset.cs
- DataSourceControl.cs
- InputQueue.cs
- SamlSerializer.cs
- ElementNotEnabledException.cs
- XamlDebuggerXmlReader.cs
- DbgUtil.cs
- Journaling.cs
- WebBrowserDocumentCompletedEventHandler.cs
- SharedPerformanceCounter.cs
- OutputCacheSettingsSection.cs
- XmlSerializableServices.cs
- Manipulation.cs
- WebConfigurationFileMap.cs
- SpecularMaterial.cs
- SystemEvents.cs
- CategoryNameCollection.cs
- Menu.cs
- XmlDataProvider.cs
- InteropBitmapSource.cs
- HostingEnvironmentException.cs
- HttpGetClientProtocol.cs
- FilterElement.cs
- DLinqTableProvider.cs
- DataGridViewCellCollection.cs
- WebPartManager.cs
- LingerOption.cs
- SqlCommandBuilder.cs
- log.cs
- SymbolUsageManager.cs
- ToolStripDropDownMenu.cs
- ImmutableObjectAttribute.cs
- WindowsPrincipal.cs
- SerialErrors.cs
- CorrelationResolver.cs
- DataBindingsDialog.cs
- WindowsListViewGroupHelper.cs
- HMACRIPEMD160.cs
- MsmqTransportReceiveParameters.cs
- SHA512Managed.cs
- InnerItemCollectionView.cs
- Condition.cs
- GcHandle.cs
- KeyTime.cs
- EdmToObjectNamespaceMap.cs