Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- EntityWrapper.cs
- SelectedDatesCollection.cs
- VolatileEnlistmentMultiplexing.cs
- ItemList.cs
- UnsafeNativeMethodsTablet.cs
- GenericWebPart.cs
- AddInDeploymentState.cs
- BrowserDefinitionCollection.cs
- ObjectAssociationEndMapping.cs
- ExtendedPropertiesHandler.cs
- dataprotectionpermissionattribute.cs
- sqlmetadatafactory.cs
- DelimitedListTraceListener.cs
- DbConnectionOptions.cs
- EncryptedHeaderXml.cs
- ExpressionParser.cs
- SecurityHelper.cs
- QilInvokeLateBound.cs
- ConstraintConverter.cs
- HttpHandlerActionCollection.cs
- StackSpiller.Temps.cs
- ArgumentOutOfRangeException.cs
- HtmlImage.cs
- MenuAutoFormat.cs
- SoapReflector.cs
- TreeNode.cs
- DbCommandDefinition.cs
- SemanticValue.cs
- Point3DCollection.cs
- XmlByteStreamWriter.cs
- GridEntryCollection.cs
- InvokeProviderWrapper.cs
- DeviceContext2.cs
- FileFormatException.cs
- RewritingProcessor.cs
- SafeTokenHandle.cs
- LoginCancelEventArgs.cs
- RTLAwareMessageBox.cs
- FileSystemEnumerable.cs
- StructuredTypeInfo.cs
- SerializationObjectManager.cs
- sqlser.cs
- LineMetrics.cs
- DateTimeFormat.cs
- ExpressionVisitor.cs
- TemplateComponentConnector.cs
- WindowsTokenRoleProvider.cs
- ButtonAutomationPeer.cs
- PasswordDeriveBytes.cs
- UpDownBase.cs
- SqlDataReaderSmi.cs
- IdentifierCollection.cs
- GridViewRow.cs
- StringWriter.cs
- SafeCryptoHandles.cs
- Renderer.cs
- PersianCalendar.cs
- PlainXmlDeserializer.cs
- WebPartCollection.cs
- X509Extension.cs
- DbConnectionPoolGroupProviderInfo.cs
- XmlSchemaSimpleContent.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- StandardMenuStripVerb.cs
- StrongNameUtility.cs
- DBDataPermission.cs
- SpecularMaterial.cs
- HijriCalendar.cs
- AppDomain.cs
- DataGridSortCommandEventArgs.cs
- CodeAssignStatement.cs
- XmlNodeWriter.cs
- UnescapedXmlDiagnosticData.cs
- WindowsSlider.cs
- ConnectionModeReader.cs
- LabelAutomationPeer.cs
- IHttpResponseInternal.cs
- XmlCustomFormatter.cs
- SQLInt64.cs
- NaturalLanguageHyphenator.cs
- StringToken.cs
- SByteStorage.cs
- AsyncPostBackTrigger.cs
- MissingMemberException.cs
- Tag.cs
- CompilationRelaxations.cs
- HttpHandlerActionCollection.cs
- XamlClipboardData.cs
- DataServiceQueryOfT.cs
- RequestValidator.cs
- AuthenticationService.cs
- ViewStateModeByIdAttribute.cs
- InfoCardTraceRecord.cs
- SelectedDatesCollection.cs
- QuaternionIndependentAnimationStorage.cs
- SqlConnectionString.cs
- IProvider.cs
- AdjustableArrowCap.cs
- WsatTransactionInfo.cs
- ResourceDictionaryCollection.cs