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
- DataPagerFieldCollection.cs
- KeyTime.cs
- SystemIPAddressInformation.cs
- ConnectionPoolRegistry.cs
- ZipPackagePart.cs
- LineBreak.cs
- StylusPointProperties.cs
- StylusButtonCollection.cs
- ListBase.cs
- EnumValAlphaComparer.cs
- ObjectManager.cs
- StringFunctions.cs
- FileEnumerator.cs
- ResourceDisplayNameAttribute.cs
- GlyphsSerializer.cs
- TextRangeEdit.cs
- FontUnitConverter.cs
- SQLInt64.cs
- ListMarkerSourceInfo.cs
- WebPartAddingEventArgs.cs
- EventLogPermissionEntryCollection.cs
- DataGridViewCellStateChangedEventArgs.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- SeparatorAutomationPeer.cs
- CellTreeNodeVisitors.cs
- SqlCommandBuilder.cs
- OdbcDataReader.cs
- TypeInfo.cs
- WriterOutput.cs
- MsmqProcessProtocolHandler.cs
- CodeIdentifiers.cs
- ByteStorage.cs
- InitializerFacet.cs
- EmbeddedObject.cs
- FormViewUpdatedEventArgs.cs
- LabelLiteral.cs
- BindingWorker.cs
- ExtentCqlBlock.cs
- Symbol.cs
- Visual.cs
- BamlTreeMap.cs
- EndpointConfigContainer.cs
- EntityParameterCollection.cs
- AssociationSet.cs
- ReflectTypeDescriptionProvider.cs
- SmiContextFactory.cs
- AttributeEmitter.cs
- XmlSerializerAssemblyAttribute.cs
- LicenseProviderAttribute.cs
- RankException.cs
- FactoryMaker.cs
- MetadataItemEmitter.cs
- FlowDocumentFormatter.cs
- QueryOpeningEnumerator.cs
- SortableBindingList.cs
- LocalBuilder.cs
- DataException.cs
- XmlAttributeOverrides.cs
- XmlArrayItemAttribute.cs
- NotFiniteNumberException.cs
- DesignerAdRotatorAdapter.cs
- TargetParameterCountException.cs
- GridViewColumnHeaderAutomationPeer.cs
- DetailsViewCommandEventArgs.cs
- PageStatePersister.cs
- QilGeneratorEnv.cs
- ArraySortHelper.cs
- HMACRIPEMD160.cs
- FontCollection.cs
- Transactions.cs
- AssociationTypeEmitter.cs
- DesignTimeTemplateParser.cs
- LocalizableAttribute.cs
- HttpConfigurationSystem.cs
- WebException.cs
- AutomationElement.cs
- HandlerBase.cs
- TextFormatterHost.cs
- SocketException.cs
- ProcessModule.cs
- SettingsBindableAttribute.cs
- MessageQueueKey.cs
- UInt16Converter.cs
- ButtonField.cs
- MarkupExtensionParser.cs
- versioninfo.cs
- MouseActionValueSerializer.cs
- FlowLayoutSettings.cs
- PtsCache.cs
- ToolStripRendererSwitcher.cs
- XamlContextStack.cs
- RadioButton.cs
- HtmlTableCell.cs
- DynamicQueryableWrapper.cs
- ContractHandle.cs
- MarkupCompilePass1.cs
- ElementHostPropertyMap.cs
- DataRecord.cs
- KeyGestureConverter.cs
- TableProviderWrapper.cs