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
- WorkflowDesignerColors.cs
- DispatcherObject.cs
- KernelTypeValidation.cs
- DataGridAutomationPeer.cs
- RequestCacheValidator.cs
- StorageAssociationSetMapping.cs
- UnknownBitmapEncoder.cs
- LinqDataSource.cs
- PartialToken.cs
- MasterPageParser.cs
- DataSourceExpressionCollection.cs
- DesignerTransaction.cs
- IconHelper.cs
- Transform.cs
- ChtmlSelectionListAdapter.cs
- DotNetATv1WindowsLogEntrySerializer.cs
- SqlDataSourceCustomCommandPanel.cs
- ToolStripHighContrastRenderer.cs
- HttpModuleCollection.cs
- CreateUserWizardDesigner.cs
- CategoryGridEntry.cs
- DATA_BLOB.cs
- DebugInfoGenerator.cs
- XmlValidatingReaderImpl.cs
- DateTimeFormatInfoScanner.cs
- MasterPageParser.cs
- ParameterEditorUserControl.cs
- WorkflowMarkupSerializerMapping.cs
- DeviceContexts.cs
- TypePresenter.xaml.cs
- Clipboard.cs
- AuthenticateEventArgs.cs
- _TLSstream.cs
- CanExecuteRoutedEventArgs.cs
- SqlDataSourceAdvancedOptionsForm.cs
- AuthenticatingEventArgs.cs
- EventEntry.cs
- DrawingBrush.cs
- CellConstant.cs
- MailWriter.cs
- PrintDialog.cs
- SqlCacheDependency.cs
- SourceChangedEventArgs.cs
- StrongNameMembershipCondition.cs
- FigureParagraph.cs
- DataStorage.cs
- XmlC14NWriter.cs
- Logging.cs
- RepeaterItemEventArgs.cs
- PolicyVersion.cs
- EmptyArray.cs
- ConfigErrorGlyph.cs
- SplitterEvent.cs
- BindingValueChangedEventArgs.cs
- BindingMemberInfo.cs
- SessionStateUtil.cs
- __ComObject.cs
- ConfigurationLocationCollection.cs
- ReturnEventArgs.cs
- IdnMapping.cs
- ObjRef.cs
- _ProxyChain.cs
- SafeCoTaskMem.cs
- WorkflowServiceHost.cs
- MenuItemCollection.cs
- EnterpriseServicesHelper.cs
- GridViewRowEventArgs.cs
- HttpChannelListener.cs
- XslTransformFileEditor.cs
- PointKeyFrameCollection.cs
- MobileControlsSectionHelper.cs
- TypeSystem.cs
- DictionaryManager.cs
- ControlParameter.cs
- FormsAuthenticationModule.cs
- SystemNetHelpers.cs
- SecurityUniqueId.cs
- ObjectQueryExecutionPlan.cs
- BinaryObjectWriter.cs
- InkCanvasInnerCanvas.cs
- ContextDataSource.cs
- XamlRtfConverter.cs
- DuplicateWaitObjectException.cs
- BinaryObjectWriter.cs
- DelegatingChannelListener.cs
- ResourceDisplayNameAttribute.cs
- ListViewGroup.cs
- DocComment.cs
- CLSCompliantAttribute.cs
- LayoutTableCell.cs
- HttpConfigurationContext.cs
- SiteOfOriginContainer.cs
- ThreadPool.cs
- GPPOINTF.cs
- MetabaseServerConfig.cs
- TcpStreams.cs
- LocalTransaction.cs
- ObjectDataSourceFilteringEventArgs.cs
- MarginsConverter.cs
- XmlJsonReader.cs