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 / CallTemplateAction.cs / 1 / 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, Keywords.s_Name); CompileContent(compiler); } internal override bool CompileAttribute(Compiler compiler) { string name = compiler.Input.LocalName; string value = compiler.Input.Value; if (Keywords.Equals(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 (Keywords.Equals(nspace, input.Atoms.XsltNamespace) && Keywords.Equals(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, Keywords.s_CallTemplate); } } 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. //------------------------------------------------------------------------------ //// 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, Keywords.s_Name); CompileContent(compiler); } internal override bool CompileAttribute(Compiler compiler) { string name = compiler.Input.LocalName; string value = compiler.Input.Value; if (Keywords.Equals(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 (Keywords.Equals(nspace, input.Atoms.XsltNamespace) && Keywords.Equals(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, Keywords.s_CallTemplate); } } 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
- RemoteX509AsymmetricSecurityKey.cs
- PageCache.cs
- MouseEventArgs.cs
- PromptStyle.cs
- AssemblyCache.cs
- TypeSemantics.cs
- AsymmetricKeyExchangeDeformatter.cs
- SoapSchemaExporter.cs
- ObjectQuery_EntitySqlExtensions.cs
- ValidatingCollection.cs
- TransactionCache.cs
- X509RecipientCertificateClientElement.cs
- EpmContentSerializer.cs
- WebBrowserContainer.cs
- DataContractJsonSerializerOperationFormatter.cs
- XmlEventCache.cs
- ButtonField.cs
- Visual3DCollection.cs
- XmlSchemaImporter.cs
- WebRequestModulesSection.cs
- AsyncDataRequest.cs
- BuildProvider.cs
- ArrangedElementCollection.cs
- ThreadAbortException.cs
- ProviderSettings.cs
- WorkflowTraceTransfer.cs
- DependencyPropertyKind.cs
- TextMetrics.cs
- NavigationProgressEventArgs.cs
- ImageFormat.cs
- CellRelation.cs
- FolderBrowserDialogDesigner.cs
- TextWriter.cs
- ProcessModelInfo.cs
- DataException.cs
- EventProviderClassic.cs
- OneWayChannelListener.cs
- WindowsListViewGroupHelper.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- RenderData.cs
- FixUp.cs
- GridProviderWrapper.cs
- WindowsComboBox.cs
- IMembershipProvider.cs
- TextEditorDragDrop.cs
- DictionaryContent.cs
- SchemaSetCompiler.cs
- ImageAttributes.cs
- Hex.cs
- TdsParserHelperClasses.cs
- BaseCAMarshaler.cs
- GeneralTransform3DGroup.cs
- TextEditor.cs
- MediaElement.cs
- PageRanges.cs
- SqlConnectionString.cs
- TextBoxLine.cs
- RouteData.cs
- SetState.cs
- MenuItemCollection.cs
- ConfigViewGenerator.cs
- _NativeSSPI.cs
- Multiply.cs
- DataPagerFieldCollection.cs
- TripleDESCryptoServiceProvider.cs
- SerializationAttributes.cs
- DesignTimeData.cs
- CustomValidator.cs
- ClientRoleProvider.cs
- SystemException.cs
- HttpFormatExtensions.cs
- WebPartVerbsEventArgs.cs
- DataGridAutomationPeer.cs
- SqlConnectionString.cs
- WindowsContainer.cs
- PageAction.cs
- CompiledIdentityConstraint.cs
- ToolStripContentPanelRenderEventArgs.cs
- BamlBinaryReader.cs
- RC2CryptoServiceProvider.cs
- ResourcePermissionBase.cs
- SocketCache.cs
- CircleHotSpot.cs
- ExceptionUtil.cs
- QueryCursorEventArgs.cs
- MetadataCache.cs
- LinkedResourceCollection.cs
- MemoryFailPoint.cs
- CanExecuteRoutedEventArgs.cs
- CompiledAction.cs
- ReflectionPermission.cs
- WindowVisualStateTracker.cs
- UnsafeNativeMethods.cs
- CustomAssemblyResolver.cs
- PrintControllerWithStatusDialog.cs
- ClientSettingsStore.cs
- MetaModel.cs
- TreeViewAutomationPeer.cs
- WorkflowStateRollbackService.cs
- XmlWriterTraceListener.cs