Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- ConfigurationStrings.cs
- Encoder.cs
- ToolStripItemCollection.cs
- OneToOneMappingSerializer.cs
- UserPersonalizationStateInfo.cs
- AncestorChangedEventArgs.cs
- PermissionSetTriple.cs
- DoubleCollection.cs
- DistributedTransactionPermission.cs
- MasterPageBuildProvider.cs
- CombinedHttpChannel.cs
- WizardStepBase.cs
- SingleAnimationBase.cs
- BuilderPropertyEntry.cs
- MemberDomainMap.cs
- ClientUrlResolverWrapper.cs
- StringAnimationUsingKeyFrames.cs
- VisualStyleRenderer.cs
- UnsafeNativeMethods.cs
- SctClaimSerializer.cs
- DecimalStorage.cs
- DataTemplateSelector.cs
- ParameterCollection.cs
- TextChangedEventArgs.cs
- EnumerableCollectionView.cs
- PipelineModuleStepContainer.cs
- AssemblyName.cs
- SqlConnectionFactory.cs
- EllipseGeometry.cs
- PolicyStatement.cs
- StringComparer.cs
- HostedTransportConfigurationBase.cs
- CellCreator.cs
- IISMapPath.cs
- SymbolType.cs
- ToolTipService.cs
- HyperLinkField.cs
- AccessDataSource.cs
- translator.cs
- SqlBulkCopyColumnMappingCollection.cs
- BadImageFormatException.cs
- SourceItem.cs
- DataControlFieldCell.cs
- ClientSponsor.cs
- DetailsViewCommandEventArgs.cs
- ComplusTypeValidator.cs
- ContractReference.cs
- XPathPatternParser.cs
- PropertyManager.cs
- DeclarativeConditionsCollection.cs
- FixedNode.cs
- Point3DCollection.cs
- Point.cs
- NetNamedPipeBinding.cs
- AutoGeneratedFieldProperties.cs
- xmlfixedPageInfo.cs
- UnsafeNativeMethods.cs
- NativeObjectSecurity.cs
- SystemWebSectionGroup.cs
- XmlAnyAttributeAttribute.cs
- ClientSettingsSection.cs
- QilGenerator.cs
- WaitHandle.cs
- FontFamily.cs
- Tag.cs
- GregorianCalendar.cs
- baseshape.cs
- InteropAutomationProvider.cs
- DataReceivedEventArgs.cs
- Int32.cs
- Component.cs
- AnchorEditor.cs
- AbandonedMutexException.cs
- Color.cs
- SearchForVirtualItemEventArgs.cs
- AttributeEmitter.cs
- ScriptMethodAttribute.cs
- ParserOptions.cs
- SerializationEventsCache.cs
- DataBinder.cs
- ProfilePropertyMetadata.cs
- DataGridViewCellCollection.cs
- AuthorizationRuleCollection.cs
- DataGridViewRowEventArgs.cs
- ApplicationContext.cs
- ObjectQuery.cs
- IItemContainerGenerator.cs
- XmlResolver.cs
- CommandEventArgs.cs
- CopyOnWriteList.cs
- IndexingContentUnit.cs
- BuildProviderAppliesToAttribute.cs
- ParameterEditorUserControl.cs
- SecurityResources.cs
- AdornerLayer.cs
- CodeDefaultValueExpression.cs
- TrackingProfileSerializer.cs
- SudsWriter.cs
- IISUnsafeMethods.cs
- TableDetailsCollection.cs