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
- SerializationInfoEnumerator.cs
- BindingContext.cs
- Base64WriteStateInfo.cs
- FlowDocumentView.cs
- ErrorWebPart.cs
- BigInt.cs
- ApplyTemplatesAction.cs
- SafeFileMappingHandle.cs
- WebPartCollection.cs
- WizardDesigner.cs
- BindingList.cs
- ArgIterator.cs
- AlphaSortedEnumConverter.cs
- ReliabilityContractAttribute.cs
- ButtonColumn.cs
- ProbeRequestResponseAsyncResult.cs
- CellParagraph.cs
- COM2PropertyDescriptor.cs
- SubqueryRules.cs
- AmbiguousMatchException.cs
- XMLSyntaxException.cs
- FilterElement.cs
- CaseKeyBox.xaml.cs
- MultipleViewPattern.cs
- PreProcessInputEventArgs.cs
- Activator.cs
- Point3DIndependentAnimationStorage.cs
- IdnMapping.cs
- UnsupportedPolicyOptionsException.cs
- Statements.cs
- SID.cs
- VirtualPath.cs
- TimeSpanOrInfiniteConverter.cs
- Pen.cs
- RichTextBox.cs
- ComponentDispatcherThread.cs
- RSAPKCS1SignatureDeformatter.cs
- TypeConverterValueSerializer.cs
- Latin1Encoding.cs
- TimeStampChecker.cs
- ClientTargetSection.cs
- ErrorFormatterPage.cs
- RequestQueue.cs
- TargetException.cs
- DataTemplate.cs
- InstanceOwnerException.cs
- BaseDataListActionList.cs
- CatalogZoneBase.cs
- WebBrowserNavigatingEventHandler.cs
- CodeExpressionRuleDeclaration.cs
- WebAdminConfigurationHelper.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- CodeExpressionStatement.cs
- CookielessHelper.cs
- ColumnCollectionEditor.cs
- DbProviderSpecificTypePropertyAttribute.cs
- SqlReferenceCollection.cs
- DocumentSchemaValidator.cs
- UpdatePanelTriggerCollection.cs
- ImageMapEventArgs.cs
- followingquery.cs
- DeviceContext.cs
- LeaseManager.cs
- ContextMenu.cs
- OperationContractGenerationContext.cs
- ExtensionsSection.cs
- TextDecorationCollection.cs
- DataGridViewRowCollection.cs
- DeclarativeCatalogPart.cs
- FixedFindEngine.cs
- PrimitiveSchema.cs
- LoginView.cs
- DbExpressionVisitor_TResultType.cs
- Match.cs
- ProcessHostMapPath.cs
- CultureInfo.cs
- ClassDataContract.cs
- TreeViewImageIndexConverter.cs
- HtmlInputCheckBox.cs
- glyphs.cs
- CounterNameConverter.cs
- BamlVersionHeader.cs
- HtmlTableRow.cs
- UndoEngine.cs
- CommandSet.cs
- WorkflowOwnershipException.cs
- WorkflowRuntimeService.cs
- WorkflowDispatchContext.cs
- TimeZoneInfo.cs
- ConfigurationLocationCollection.cs
- ConnectionStringSettings.cs
- Receive.cs
- CounterSetInstance.cs
- __Filters.cs
- UIElementParagraph.cs
- HtmlShimManager.cs
- PaintValueEventArgs.cs
- HwndStylusInputProvider.cs
- TypePropertyEditor.cs
- DecimalAnimationUsingKeyFrames.cs