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
- UIElementIsland.cs
- XPathBinder.cs
- NetworkInterface.cs
- TraceContext.cs
- PingOptions.cs
- FixedHyperLink.cs
- MutexSecurity.cs
- DockProviderWrapper.cs
- X509IssuerSerialKeyIdentifierClause.cs
- MetricEntry.cs
- ClientApiGenerator.cs
- HtmlLiteralTextAdapter.cs
- Random.cs
- AsnEncodedData.cs
- PermissionToken.cs
- Matrix3DConverter.cs
- ReadOnlyNameValueCollection.cs
- sortedlist.cs
- ScriptControl.cs
- CorrelationResolver.cs
- LockCookie.cs
- QuaternionRotation3D.cs
- ComplexType.cs
- DataQuery.cs
- StatusBarItemAutomationPeer.cs
- IdentityManager.cs
- CodeSnippetTypeMember.cs
- GridViewCancelEditEventArgs.cs
- WebConfigurationFileMap.cs
- EndEvent.cs
- DataGridViewColumnHeaderCell.cs
- PriorityQueue.cs
- AssertFilter.cs
- Separator.cs
- MouseGestureValueSerializer.cs
- SafeRightsManagementPubHandle.cs
- LowerCaseStringConverter.cs
- ErrorFormatterPage.cs
- figurelength.cs
- ExchangeUtilities.cs
- DefaultDialogButtons.cs
- XhtmlBasicSelectionListAdapter.cs
- ServiceReference.cs
- NetTcpSecurity.cs
- DataSourceCollectionBase.cs
- WinEventHandler.cs
- MarkedHighlightComponent.cs
- mediaeventshelper.cs
- BamlVersionHeader.cs
- WindowsTokenRoleProvider.cs
- ProfileGroupSettings.cs
- DPCustomTypeDescriptor.cs
- SharedPersonalizationStateInfo.cs
- BufferAllocator.cs
- StreamReader.cs
- KnownColorTable.cs
- ImageListStreamer.cs
- DataGridViewColumnHeaderCell.cs
- GeneratedContractType.cs
- GridViewCellAutomationPeer.cs
- VirtualPathProvider.cs
- EditingCommands.cs
- ImagingCache.cs
- DbConnectionPool.cs
- XamlBrushSerializer.cs
- MediaElementAutomationPeer.cs
- FileDetails.cs
- AdornerHitTestResult.cs
- PropertyItemInternal.cs
- TargetFrameworkAttribute.cs
- FindCriteriaCD1.cs
- ObjectReaderCompiler.cs
- NewArray.cs
- COM2ExtendedBrowsingHandler.cs
- Guid.cs
- OLEDB_Util.cs
- ExceptionUtil.cs
- BufferedGraphicsContext.cs
- Vertex.cs
- Image.cs
- TreeNodeBinding.cs
- TextRangeEditLists.cs
- TextTreeRootTextBlock.cs
- MenuEventArgs.cs
- Substitution.cs
- ListViewInsertEventArgs.cs
- UriWriter.cs
- CodeTypeDelegate.cs
- SoapElementAttribute.cs
- OrderedEnumerableRowCollection.cs
- TextEditorDragDrop.cs
- PhysicalAddress.cs
- OneToOneMappingSerializer.cs
- DataTablePropertyDescriptor.cs
- KeyValuePair.cs
- RowParagraph.cs
- Base64Stream.cs
- DateTimeFormatInfoScanner.cs
- EffectiveValueEntry.cs
- Collection.cs