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
- _NegotiateClient.cs
- LockCookie.cs
- DataSourceConverter.cs
- PreProcessInputEventArgs.cs
- ColorAnimation.cs
- PackWebRequest.cs
- SoundPlayer.cs
- WebEvents.cs
- RootBrowserWindowProxy.cs
- SHA512Managed.cs
- ExtensionWindow.cs
- WmlImageAdapter.cs
- ResourceKey.cs
- ObjectTypeMapping.cs
- WorkflowEventArgs.cs
- Point4D.cs
- Nodes.cs
- ResXResourceReader.cs
- PathFigureCollection.cs
- ColorInterpolationModeValidation.cs
- SynthesizerStateChangedEventArgs.cs
- PageAsyncTask.cs
- BrowserDefinitionCollection.cs
- HtmlShim.cs
- DataFormats.cs
- X509UI.cs
- RootBrowserWindowProxy.cs
- ComAdminWrapper.cs
- LogArchiveSnapshot.cs
- ISO2022Encoding.cs
- SQLSingleStorage.cs
- FormsAuthentication.cs
- WindowsTokenRoleProvider.cs
- PhysicalAddress.cs
- ConcurrencyMode.cs
- MessageSecurityException.cs
- NameValueFileSectionHandler.cs
- DecimalAnimationUsingKeyFrames.cs
- HtmlString.cs
- AnimationException.cs
- ReceiveErrorHandling.cs
- XmlDataSourceNodeDescriptor.cs
- RegisteredHiddenField.cs
- Transform.cs
- ScriptRegistrationManager.cs
- CapiNative.cs
- StoryFragments.cs
- _PooledStream.cs
- ValuePattern.cs
- FormConverter.cs
- PathSegment.cs
- DataGridRow.cs
- MediaScriptCommandRoutedEventArgs.cs
- SapiAttributeParser.cs
- DefinitionUpdate.cs
- MaskedTextBox.cs
- SqlTriggerAttribute.cs
- PathSegmentCollection.cs
- ApplicationServicesHostFactory.cs
- MetadataItemEmitter.cs
- MembershipSection.cs
- XPathBinder.cs
- CodeAttributeDeclarationCollection.cs
- BuiltInPermissionSets.cs
- BitmapMetadata.cs
- SingleAnimationBase.cs
- FixedSchema.cs
- _ChunkParse.cs
- PassportAuthenticationModule.cs
- LocationInfo.cs
- OracleConnectionString.cs
- StyleCollection.cs
- RectConverter.cs
- Instrumentation.cs
- RectIndependentAnimationStorage.cs
- FormatException.cs
- Substitution.cs
- HttpDateParse.cs
- OAVariantLib.cs
- ProfilePropertySettings.cs
- MulticastDelegate.cs
- ContainerFilterService.cs
- ExtendedProtectionPolicyElement.cs
- SpeechEvent.cs
- QilXmlWriter.cs
- HandlerFactoryCache.cs
- QilCloneVisitor.cs
- HttpRequest.cs
- KeyValueConfigurationElement.cs
- HostedTransportConfigurationBase.cs
- Bitmap.cs
- MSAAEventDispatcher.cs
- OneWayChannelListener.cs
- HtmlLink.cs
- HttpListener.cs
- WithStatement.cs
- Int32KeyFrameCollection.cs
- DataViewManagerListItemTypeDescriptor.cs
- EmptyCollection.cs
- TextLineBreak.cs