Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / XmlUtils / System / Xml / Xsl / XsltOld / CopyAttributesAction.cs / 1305376 / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DefaultTextStore.cs
- TableDetailsRow.cs
- QilTernary.cs
- DSASignatureFormatter.cs
- XPathPatternBuilder.cs
- NumericExpr.cs
- Context.cs
- sitestring.cs
- AxHost.cs
- BuildProviderUtils.cs
- SchemaNames.cs
- WebPartEditVerb.cs
- Soap12ProtocolImporter.cs
- SecurityContextSecurityToken.cs
- XmlElement.cs
- Pts.cs
- HttpEncoderUtility.cs
- DockAndAnchorLayout.cs
- DesignerHierarchicalDataSourceView.cs
- JournalEntry.cs
- ComplexObject.cs
- BrowserCapabilitiesFactoryBase.cs
- AddInControllerImpl.cs
- CommandEventArgs.cs
- ServiceBehaviorElement.cs
- ReadOnlyDataSource.cs
- FixedPage.cs
- ProfileInfo.cs
- xamlnodes.cs
- X509Certificate.cs
- TagMapInfo.cs
- DataRowComparer.cs
- NullableDoubleAverageAggregationOperator.cs
- ComplexObject.cs
- BindingFormattingDialog.cs
- HeaderPanel.cs
- remotingproxy.cs
- MimeObjectFactory.cs
- AppDomainUnloadedException.cs
- FixedSOMTableRow.cs
- ICspAsymmetricAlgorithm.cs
- EqualityArray.cs
- Viewport3DAutomationPeer.cs
- PointCollectionConverter.cs
- LineProperties.cs
- WebPartAuthorizationEventArgs.cs
- SimpleNameService.cs
- EdmError.cs
- UnaryNode.cs
- Main.cs
- SmiEventSink.cs
- ToolStripItemImageRenderEventArgs.cs
- UTF8Encoding.cs
- AmbientLight.cs
- ListViewEditEventArgs.cs
- Filter.cs
- TakeOrSkipWhileQueryOperator.cs
- FlowDocumentView.cs
- HostingEnvironment.cs
- FormsAuthenticationConfiguration.cs
- ListView.cs
- HtmlFormParameterReader.cs
- RoleService.cs
- CodeDOMUtility.cs
- EventArgs.cs
- RtfControls.cs
- TabControl.cs
- WebPartCancelEventArgs.cs
- ReaderOutput.cs
- FaultContractInfo.cs
- BuilderPropertyEntry.cs
- AdornerLayer.cs
- CompModSwitches.cs
- DbMetaDataFactory.cs
- ReaderOutput.cs
- Size3D.cs
- AsymmetricKeyExchangeDeformatter.cs
- ConnectionManagementSection.cs
- EdmError.cs
- InternalCache.cs
- DbModificationClause.cs
- FileLogRecord.cs
- Button.cs
- Menu.cs
- CrossSiteScriptingValidation.cs
- ParameterModifier.cs
- Condition.cs
- LinkLabelLinkClickedEvent.cs
- XmlSerializer.cs
- Assert.cs
- CustomAttribute.cs
- TextRunCache.cs
- EditCommandColumn.cs
- HostUtils.cs
- XmlEntity.cs
- MetadataPropertyCollection.cs
- FormsIdentity.cs
- CustomCredentialPolicy.cs
- ProtocolElementCollection.cs
- NullableIntAverageAggregationOperator.cs