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 / CopyNodeSetAction.cs / 1 / CopyNodeSetAction.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 CopyNodeSetAction : Action { private const int BeginEvent = 2; private const int Contents = 3; private const int Namespaces = 4; private const int Attributes = 5; private const int Subtree = 6; private const int EndEvent = 7; private static CopyNodeSetAction s_Action = new CopyNodeSetAction(); internal static CopyNodeSetAction 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.NextNode(processor)) { frame.State = BeginEvent; goto case BeginEvent; } else { frame.Finished(); break; } case BeginEvent: Debug.Assert(frame.State == BeginEvent); if (SendBeginEvent(processor, frame.Node) == false) { // This one wasn't output break; } frame.State = Contents; continue; case Contents: Debug.Assert(frame.State == Contents); XPathNodeType nodeType = frame.Node.NodeType; if (nodeType == XPathNodeType.Element || nodeType == XPathNodeType.Root) { processor.PushActionFrame(CopyNamespacesAction.GetAction(), frame.NodeSet); frame.State = Namespaces; break; } if (SendTextEvent(processor, frame.Node) == false) { // This one wasn't output break; } frame.State = EndEvent; continue; case Namespaces: processor.PushActionFrame(CopyAttributesAction.GetAction(), frame.NodeSet); frame.State = Attributes; break; case Attributes: if (frame.Node.HasChildren) { processor.PushActionFrame(GetAction(), frame.Node.SelectChildren(XPathNodeType.All)); frame.State = Subtree; break; } frame.State = EndEvent; goto case EndEvent; case Subtree: //frame.Node.MoveToParent(); frame.State = EndEvent; continue; case EndEvent: Debug.Assert(frame.State == EndEvent); if (SendEndEvent(processor, frame.Node) == false) { // This one wasn't output break; } frame.State = Initialized; continue; } break; } } private static bool SendBeginEvent(Processor processor, XPathNavigator node) { return processor.CopyBeginEvent(node, node.IsEmptyElement); } private static bool SendTextEvent(Processor processor, XPathNavigator node) { return processor.CopyTextEvent(node); } private static bool SendEndEvent(Processor processor, XPathNavigator node) { return processor.CopyEndEvent(node); } } } // 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 CopyNodeSetAction : Action { private const int BeginEvent = 2; private const int Contents = 3; private const int Namespaces = 4; private const int Attributes = 5; private const int Subtree = 6; private const int EndEvent = 7; private static CopyNodeSetAction s_Action = new CopyNodeSetAction(); internal static CopyNodeSetAction 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.NextNode(processor)) { frame.State = BeginEvent; goto case BeginEvent; } else { frame.Finished(); break; } case BeginEvent: Debug.Assert(frame.State == BeginEvent); if (SendBeginEvent(processor, frame.Node) == false) { // This one wasn't output break; } frame.State = Contents; continue; case Contents: Debug.Assert(frame.State == Contents); XPathNodeType nodeType = frame.Node.NodeType; if (nodeType == XPathNodeType.Element || nodeType == XPathNodeType.Root) { processor.PushActionFrame(CopyNamespacesAction.GetAction(), frame.NodeSet); frame.State = Namespaces; break; } if (SendTextEvent(processor, frame.Node) == false) { // This one wasn't output break; } frame.State = EndEvent; continue; case Namespaces: processor.PushActionFrame(CopyAttributesAction.GetAction(), frame.NodeSet); frame.State = Attributes; break; case Attributes: if (frame.Node.HasChildren) { processor.PushActionFrame(GetAction(), frame.Node.SelectChildren(XPathNodeType.All)); frame.State = Subtree; break; } frame.State = EndEvent; goto case EndEvent; case Subtree: //frame.Node.MoveToParent(); frame.State = EndEvent; continue; case EndEvent: Debug.Assert(frame.State == EndEvent); if (SendEndEvent(processor, frame.Node) == false) { // This one wasn't output break; } frame.State = Initialized; continue; } break; } } private static bool SendBeginEvent(Processor processor, XPathNavigator node) { return processor.CopyBeginEvent(node, node.IsEmptyElement); } private static bool SendTextEvent(Processor processor, XPathNavigator node) { return processor.CopyTextEvent(node); } private static bool SendEndEvent(Processor processor, XPathNavigator node) { return processor.CopyEndEvent(node); } } } // 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
- BitmapCodecInfo.cs
- ClaimSet.cs
- MachineKeySection.cs
- DataGridTextBox.cs
- ContainerVisual.cs
- BuildProviderAppliesToAttribute.cs
- MenuEventArgs.cs
- QilBinary.cs
- DataGridViewColumnHeaderCell.cs
- SetStoryboardSpeedRatio.cs
- DesignerSerializationOptionsAttribute.cs
- UnauthorizedWebPart.cs
- SystemIPGlobalProperties.cs
- UInt16Storage.cs
- SafeFindHandle.cs
- SchemaNotation.cs
- EventProxy.cs
- MyContact.cs
- UnsafeNativeMethods.cs
- KeyBinding.cs
- XPathMultyIterator.cs
- RequiredAttributeAttribute.cs
- TransformCollection.cs
- ComplexPropertyEntry.cs
- DetailsViewInsertEventArgs.cs
- StringInfo.cs
- MenuItemBinding.cs
- XmlHierarchicalDataSourceView.cs
- ClientTargetSection.cs
- Error.cs
- ToolboxComponentsCreatedEventArgs.cs
- MissingMemberException.cs
- ToolboxComponentsCreatingEventArgs.cs
- ItemsControl.cs
- XmlSchemaGroupRef.cs
- ScrollPattern.cs
- ShapingEngine.cs
- WsdlBuildProvider.cs
- itemelement.cs
- WorkflowExecutor.cs
- VarInfo.cs
- WebPartDescription.cs
- WaitHandle.cs
- SqlBuilder.cs
- WebPartExportVerb.cs
- DummyDataSource.cs
- ConfigurationSchemaErrors.cs
- GeneralTransform.cs
- StylusPointProperty.cs
- SmiMetaData.cs
- DataServiceRequestException.cs
- PermissionToken.cs
- PropertyEmitter.cs
- GeneralTransform3D.cs
- WmpBitmapEncoder.cs
- System.Data_BID.cs
- MetadataProperty.cs
- CategoryAttribute.cs
- InputScope.cs
- DataViewManagerListItemTypeDescriptor.cs
- DocumentSequence.cs
- ReflectionHelper.cs
- COM2ColorConverter.cs
- TypedMessageConverter.cs
- ObjectNotFoundException.cs
- SQLDecimalStorage.cs
- AttributeEmitter.cs
- DataGridViewCellValidatingEventArgs.cs
- HtmlPageAdapter.cs
- UriTemplateTrieLocation.cs
- PlanCompilerUtil.cs
- TextChange.cs
- ScriptMethodAttribute.cs
- WebAdminConfigurationHelper.cs
- SqlAliasesReferenced.cs
- CustomErrorCollection.cs
- StackOverflowException.cs
- SQLSingleStorage.cs
- SoapDocumentServiceAttribute.cs
- TextOutput.cs
- Item.cs
- ObjectStateEntryOriginalDbUpdatableDataRecord.cs
- XmlEntity.cs
- TableCell.cs
- LinqToSqlWrapper.cs
- SamlAssertionKeyIdentifierClause.cs
- ImagingCache.cs
- BinaryObjectReader.cs
- ResourcePermissionBaseEntry.cs
- NotifyCollectionChangedEventArgs.cs
- SmtpSection.cs
- SynchronizationLockException.cs
- Brushes.cs
- PermissionToken.cs
- HttpRuntimeSection.cs
- ContextMenuStripGroupCollection.cs
- TemplateControl.cs
- ValueUnavailableException.cs
- ComponentResourceKeyConverter.cs
- RSAPKCS1SignatureDeformatter.cs