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 / CopyAction.cs / 1 / CopyAction.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;
using MS.Internal.Xml.XPath;
internal class CopyAction : ContainerAction {
// Local execution states
private const int CopyText = 4;
private const int NamespaceCopy = 5;
private const int ContentsCopy = 6;
private const int ProcessChildren = 7;
private const int ChildrenOnly = 8;
private string useAttributeSets;
private bool empty;
internal override void Compile(Compiler compiler) {
CompileAttributes(compiler);
if (compiler.Recurse()) {
CompileTemplate(compiler);
compiler.ToParent();
}
if (this.containedActions == null)
this.empty = true;
}
internal override bool CompileAttribute(Compiler compiler) {
string name = compiler.Input.LocalName;
string value = compiler.Input.Value;
if (Keywords.Equals(name, compiler.Atoms.UseAttributeSets)) {
this.useAttributeSets = value;
AddAction(compiler.CreateUseAttributeSetsAction());
}
else {
return false;
}
return true;
}
internal override void Execute(Processor processor, ActionFrame frame) {
Debug.Assert(processor != null && frame != null);
while (processor.CanContinue) {
switch (frame.State) {
case Initialized:
if (Processor.IsRoot(frame.Node)) {
processor.PushActionFrame(frame);
frame.State = ChildrenOnly;
break;
}
if (processor.CopyBeginEvent(frame.Node, this.empty) == false) {
// This event wasn't processed
break;
}
frame.State = NamespaceCopy;
continue;
case NamespaceCopy:
frame.State = ContentsCopy;
if ( frame.Node.NodeType == XPathNodeType.Element ) {
processor.PushActionFrame(CopyNamespacesAction.GetAction(), frame.NodeSet);
break;
}
continue;
case ContentsCopy:
if (frame.Node.NodeType == XPathNodeType.Element && !this.empty) {
//Debug.Assert(frame.Node.HasValue == false);
processor.PushActionFrame(frame);
frame.State = ProcessChildren;
break;
}
else {
if (processor.CopyTextEvent(frame.Node)) {
frame.State = ProcessChildren;
continue;
}
else {
// This event wasn't processed
break;
}
}
case ProcessChildren:
if (processor.CopyEndEvent(frame.Node)) {
frame.Finished();
}
break;
case ChildrenOnly:
frame.Finished();
break;
default:
Debug.Fail("Invalid CopyAction execution state");
break;
}
break;
}
}
}
}
// 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;
using MS.Internal.Xml.XPath;
internal class CopyAction : ContainerAction {
// Local execution states
private const int CopyText = 4;
private const int NamespaceCopy = 5;
private const int ContentsCopy = 6;
private const int ProcessChildren = 7;
private const int ChildrenOnly = 8;
private string useAttributeSets;
private bool empty;
internal override void Compile(Compiler compiler) {
CompileAttributes(compiler);
if (compiler.Recurse()) {
CompileTemplate(compiler);
compiler.ToParent();
}
if (this.containedActions == null)
this.empty = true;
}
internal override bool CompileAttribute(Compiler compiler) {
string name = compiler.Input.LocalName;
string value = compiler.Input.Value;
if (Keywords.Equals(name, compiler.Atoms.UseAttributeSets)) {
this.useAttributeSets = value;
AddAction(compiler.CreateUseAttributeSetsAction());
}
else {
return false;
}
return true;
}
internal override void Execute(Processor processor, ActionFrame frame) {
Debug.Assert(processor != null && frame != null);
while (processor.CanContinue) {
switch (frame.State) {
case Initialized:
if (Processor.IsRoot(frame.Node)) {
processor.PushActionFrame(frame);
frame.State = ChildrenOnly;
break;
}
if (processor.CopyBeginEvent(frame.Node, this.empty) == false) {
// This event wasn't processed
break;
}
frame.State = NamespaceCopy;
continue;
case NamespaceCopy:
frame.State = ContentsCopy;
if ( frame.Node.NodeType == XPathNodeType.Element ) {
processor.PushActionFrame(CopyNamespacesAction.GetAction(), frame.NodeSet);
break;
}
continue;
case ContentsCopy:
if (frame.Node.NodeType == XPathNodeType.Element && !this.empty) {
//Debug.Assert(frame.Node.HasValue == false);
processor.PushActionFrame(frame);
frame.State = ProcessChildren;
break;
}
else {
if (processor.CopyTextEvent(frame.Node)) {
frame.State = ProcessChildren;
continue;
}
else {
// This event wasn't processed
break;
}
}
case ProcessChildren:
if (processor.CopyEndEvent(frame.Node)) {
frame.Finished();
}
break;
case ChildrenOnly:
frame.Finished();
break;
default:
Debug.Fail("Invalid CopyAction execution state");
break;
}
break;
}
}
}
}
// 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
- CalendarModeChangedEventArgs.cs
- SqlProfileProvider.cs
- TableColumn.cs
- XmlSchemaType.cs
- StylusPointCollection.cs
- UInt32.cs
- ComponentGlyph.cs
- FontWeights.cs
- UniformGrid.cs
- CheckBoxList.cs
- HatchBrush.cs
- NativeMethodsOther.cs
- HelpProvider.cs
- TitleStyle.cs
- FileSystemEventArgs.cs
- SchemaTableColumn.cs
- BevelBitmapEffect.cs
- BitmapEffect.cs
- RelationshipManager.cs
- mediaclock.cs
- CompositeScriptReference.cs
- PropertyAccessVisitor.cs
- NestPullup.cs
- WebConfigurationManager.cs
- TextInfo.cs
- ObjectContext.cs
- RegexGroup.cs
- SmtpCommands.cs
- CodeObject.cs
- HttpRuntimeSection.cs
- CustomErrorsSection.cs
- CryptoConfig.cs
- Object.cs
- UnicastIPAddressInformationCollection.cs
- Int16AnimationBase.cs
- DiagnosticsElement.cs
- Module.cs
- DetailsViewPagerRow.cs
- BitmapEffectvisualstate.cs
- EntityContainerAssociationSet.cs
- UnsafeNativeMethods.cs
- ToolTip.cs
- ReachPageContentSerializer.cs
- StatusStrip.cs
- TextServicesCompartment.cs
- SqlFacetAttribute.cs
- XmlDataContract.cs
- WCFModelStrings.Designer.cs
- StdRegProviderWrapper.cs
- TcpConnectionPool.cs
- EntityObject.cs
- DateTimeStorage.cs
- SharedPersonalizationStateInfo.cs
- EventProviderClassic.cs
- FileDialogCustomPlacesCollection.cs
- OdbcInfoMessageEvent.cs
- DataGridViewImageCell.cs
- updatecommandorderer.cs
- XmlSerializableServices.cs
- TransformCollection.cs
- Tablet.cs
- FormViewCommandEventArgs.cs
- DataError.cs
- BaseInfoTable.cs
- DataGridViewSortCompareEventArgs.cs
- DataGridViewHeaderCell.cs
- BulletedListEventArgs.cs
- DesignTimeParseData.cs
- EditingContext.cs
- GlyphRunDrawing.cs
- TypefaceMap.cs
- DataGridViewRowErrorTextNeededEventArgs.cs
- UIntPtr.cs
- ProofTokenCryptoHandle.cs
- XmlException.cs
- MobileControlPersister.cs
- TypeDescriptorContext.cs
- WindowsFormsLinkLabel.cs
- SqlRowUpdatedEvent.cs
- XmlHierarchyData.cs
- AlphabetConverter.cs
- UIElement3D.cs
- RuntimeCompatibilityAttribute.cs
- CultureData.cs
- ProxyGenerationError.cs
- DataListComponentEditor.cs
- ClientApiGenerator.cs
- FormViewRow.cs
- SimpleWebHandlerParser.cs
- BigInt.cs
- UserControlCodeDomTreeGenerator.cs
- RayMeshGeometry3DHitTestResult.cs
- WebPartRestoreVerb.cs
- DataGridViewRowErrorTextNeededEventArgs.cs
- Bits.cs
- SortQuery.cs
- NamedServiceModelExtensionCollectionElement.cs
- DynamicILGenerator.cs
- QuaternionAnimation.cs
- Point4D.cs