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
- ScrollChrome.cs
- HttpServerUtilityBase.cs
- InlineUIContainer.cs
- PackageFilter.cs
- ToolboxItem.cs
- WebPartZone.cs
- OdbcStatementHandle.cs
- SimpleHandlerBuildProvider.cs
- SettingsPropertyValueCollection.cs
- Visitors.cs
- RouteItem.cs
- DeploymentExceptionMapper.cs
- TargetConverter.cs
- SQLInt16.cs
- MatrixConverter.cs
- wgx_render.cs
- MultiSelector.cs
- TextSpanModifier.cs
- ObjectMemberMapping.cs
- VolatileResourceManager.cs
- ClientSponsor.cs
- ConfigurationManagerHelper.cs
- StringDictionaryCodeDomSerializer.cs
- Binding.cs
- MatchAttribute.cs
- SelfIssuedAuthRSAPKCS1SignatureFormatter.cs
- EntityDataSourceMemberPath.cs
- ItemCheckedEvent.cs
- SnapLine.cs
- Sql8ExpressionRewriter.cs
- FileClassifier.cs
- CheckBoxField.cs
- OdbcParameterCollection.cs
- GeometryConverter.cs
- IFlowDocumentViewer.cs
- InvalidAsynchronousStateException.cs
- PublisherMembershipCondition.cs
- WebRequestModulesSection.cs
- BrowserCapabilitiesCodeGenerator.cs
- SafeUserTokenHandle.cs
- CacheForPrimitiveTypes.cs
- ToolStripDropDownClosedEventArgs.cs
- RandomNumberGenerator.cs
- ToolStripStatusLabel.cs
- XmlUtil.cs
- InvalidFilterCriteriaException.cs
- SpanIndex.cs
- FontUnit.cs
- ZoneLinkButton.cs
- SchemaCollectionCompiler.cs
- ProtectedConfigurationSection.cs
- ListItem.cs
- SmiContextFactory.cs
- DPAPIProtectedConfigurationProvider.cs
- StatusBarItem.cs
- AutomationFocusChangedEventArgs.cs
- PackageStore.cs
- OutgoingWebRequestContext.cs
- RSAPKCS1KeyExchangeFormatter.cs
- EventProviderWriter.cs
- Freezable.cs
- XamlFilter.cs
- WebPart.cs
- HtmlString.cs
- CompilerHelpers.cs
- EncodingTable.cs
- UIElement.cs
- ElementMarkupObject.cs
- Cursor.cs
- AsyncOperationManager.cs
- WindowsToolbarAsMenu.cs
- BulletChrome.cs
- ListBindableAttribute.cs
- ProjectionCamera.cs
- RbTree.cs
- PersonalizationDictionary.cs
- XslCompiledTransform.cs
- TextSegment.cs
- BackStopAuthenticationModule.cs
- NameSpaceEvent.cs
- TextRunCache.cs
- WorkflowEnvironment.cs
- AuthenticatingEventArgs.cs
- FlowDocumentPaginator.cs
- UnknownWrapper.cs
- ConversionContext.cs
- EndpointNameMessageFilter.cs
- RegionInfo.cs
- DecimalAnimation.cs
- ListView.cs
- ADRoleFactoryConfiguration.cs
- CryptoConfig.cs
- ActivityExecutorOperation.cs
- PropertyReference.cs
- WorkflowMarkupSerializationProvider.cs
- ChildrenQuery.cs
- AnnotationDocumentPaginator.cs
- StickyNoteContentControl.cs
- FloatUtil.cs
- Point3DCollectionConverter.cs