Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / XmlUtils / System / Xml / Xsl / XsltOld / CallTemplateAction.cs / 1305376 / CallTemplateAction.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 class CallTemplateAction : ContainerAction { private const int ProcessedChildren = 2; private const int ProcessedTemplate = 3; private XmlQualifiedName name; internal override void Compile(Compiler compiler) { CompileAttributes(compiler); CheckRequiredAttribute(compiler, this.name, "name"); CompileContent(compiler); } internal override bool CompileAttribute(Compiler compiler) { string name = compiler.Input.LocalName; string value = compiler.Input.Value; if (Ref.Equal(name, compiler.Atoms.Name)) { Debug.Assert(this.name == null); this.name = compiler.CreateXPathQName(value); } else { return false; } return true; } private void CompileContent(Compiler compiler) { NavigatorInput input = compiler.Input; if (compiler.Recurse()) { do { switch(input.NodeType) { case XPathNodeType.Element: compiler.PushNamespaceScope(); string nspace = input.NamespaceURI; string name = input.LocalName; if (Ref.Equal(nspace, input.Atoms.UriXsl) && Ref.Equal(name, input.Atoms.WithParam)) { WithParamAction par = compiler.CreateWithParamAction(); CheckDuplicateParams(par.Name); AddAction(par); } else { throw compiler.UnexpectedKeyword(); } compiler.PopScope(); break; case XPathNodeType.Comment: case XPathNodeType.ProcessingInstruction: case XPathNodeType.Whitespace: case XPathNodeType.SignificantWhitespace: break; default: throw XsltException.Create(Res.Xslt_InvalidContents, "call-template"); } } while(compiler.Advance()); compiler.ToParent(); } } internal override void Execute(Processor processor, ActionFrame frame) { Debug.Assert(processor != null && frame != null); switch(frame.State) { case Initialized : processor.ResetParams(); if (this.containedActions != null && this.containedActions.Count > 0) { processor.PushActionFrame(frame); frame.State = ProcessedChildren; break; } goto case ProcessedChildren; case ProcessedChildren: TemplateAction action = processor.Stylesheet.FindTemplate(this.name); if (action != null) { frame.State = ProcessedTemplate; processor.PushActionFrame(action, frame.NodeSet); break; } else { throw XsltException.Create(Res.Xslt_InvalidCallTemplate, this.name.ToString()); } case ProcessedTemplate: frame.Finished(); break; default: Debug.Fail("Invalid CallTemplateAction execution state"); 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
- DataErrorValidationRule.cs
- ScriptComponentDescriptor.cs
- CustomAttribute.cs
- Thickness.cs
- DrawingGroupDrawingContext.cs
- PropertiesTab.cs
- XPathSelfQuery.cs
- KeyConverter.cs
- SecurityCriticalDataForSet.cs
- RijndaelManaged.cs
- ImageSource.cs
- NativeMethods.cs
- Attachment.cs
- ZipPackage.cs
- BaseProcessor.cs
- BufferedReceiveElement.cs
- ShadowGlyph.cs
- TypeElementCollection.cs
- ComponentSerializationService.cs
- Configuration.cs
- FilterQueryOptionExpression.cs
- LinkLabelLinkClickedEvent.cs
- DiscoveryClientOutputChannel.cs
- WebScriptEnablingElement.cs
- CryptoStream.cs
- DrawingContextWalker.cs
- ContentIterators.cs
- XamlClipboardData.cs
- ApplicationSettingsBase.cs
- OleDbPermission.cs
- DataGridRelationshipRow.cs
- smtppermission.cs
- AbstractExpressions.cs
- EventData.cs
- ColorInterpolationModeValidation.cs
- FormViewUpdateEventArgs.cs
- StringDictionary.cs
- GCHandleCookieTable.cs
- FlowLayout.cs
- StyleXamlTreeBuilder.cs
- ItemsControlAutomationPeer.cs
- AbandonedMutexException.cs
- ChildTable.cs
- SafeViewOfFileHandle.cs
- AppSettingsReader.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- SamlAuthorityBinding.cs
- UpDownBase.cs
- CommandHelpers.cs
- ScriptRegistrationManager.cs
- AssociationTypeEmitter.cs
- MarkupExtensionParser.cs
- StrokeFIndices.cs
- BevelBitmapEffect.cs
- ScrollProviderWrapper.cs
- MetadataWorkspace.cs
- HierarchicalDataTemplate.cs
- XPathNavigator.cs
- XmlLoader.cs
- PrimitiveXmlSerializers.cs
- DataKeyCollection.cs
- RoleManagerModule.cs
- InfoCardRSACryptoProvider.cs
- ArrangedElementCollection.cs
- ImageCollectionCodeDomSerializer.cs
- ZoneMembershipCondition.cs
- BaseCodeDomTreeGenerator.cs
- NativeRightsManagementAPIsStructures.cs
- UpdateCommand.cs
- WindowsFormsSynchronizationContext.cs
- XsltOutput.cs
- CalculatedColumn.cs
- ComponentEvent.cs
- PersonalizationProviderCollection.cs
- DiscreteKeyFrames.cs
- DataTableExtensions.cs
- AutoGeneratedFieldProperties.cs
- QueueProcessor.cs
- DataGridTextBoxColumn.cs
- WindowsTreeView.cs
- TextServicesCompartment.cs
- PathFigureCollection.cs
- WebHttpSecurity.cs
- assemblycache.cs
- CodeCastExpression.cs
- DynamicUpdateCommand.cs
- ResolveMatchesMessage11.cs
- PackagingUtilities.cs
- XmlLanguage.cs
- XmlNamespaceMappingCollection.cs
- ListViewUpdateEventArgs.cs
- TableStyle.cs
- ImmutablePropertyDescriptorGridEntry.cs
- StringCollection.cs
- LogExtentCollection.cs
- SymDocumentType.cs
- EventProxy.cs
- ProgressPage.cs
- ChildTable.cs
- ArglessEventHandlerProxy.cs