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
- GridViewDeletedEventArgs.cs
- FileAuthorizationModule.cs
- MouseEvent.cs
- ForEachAction.cs
- UpdateManifestForBrowserApplication.cs
- RawStylusActions.cs
- QuaternionKeyFrameCollection.cs
- ButtonBaseAutomationPeer.cs
- EpmSyndicationContentSerializer.cs
- ResolvePPIDRequest.cs
- XslException.cs
- MeasureItemEvent.cs
- updateconfighost.cs
- ErrorEventArgs.cs
- HtmlControlDesigner.cs
- XPathArrayIterator.cs
- DataGridItemAttachedStorage.cs
- GridViewRow.cs
- SqlCommandBuilder.cs
- Attachment.cs
- StructuralCache.cs
- RootBrowserWindowProxy.cs
- Mutex.cs
- DesignerOptionService.cs
- FontDriver.cs
- SubstitutionList.cs
- NativeMethods.cs
- XmlSchemaSequence.cs
- SqlProvider.cs
- EventPrivateKey.cs
- EntityDataSourceContainerNameItem.cs
- IssuedTokenParametersEndpointAddressElement.cs
- documentsequencetextpointer.cs
- RadialGradientBrush.cs
- ThreadExceptionDialog.cs
- FontResourceCache.cs
- DataChangedEventManager.cs
- BamlStream.cs
- iisPickupDirectory.cs
- ExecutionContext.cs
- WebHeaderCollection.cs
- NamespaceExpr.cs
- _LoggingObject.cs
- Form.cs
- SchemaImporterExtensionElementCollection.cs
- DetailsViewPagerRow.cs
- dataSvcMapFileLoader.cs
- PersonalizationStateInfoCollection.cs
- NativeBuffer.cs
- VirtualizedContainerService.cs
- DispatcherExceptionEventArgs.cs
- NumericUpDown.cs
- PagerSettings.cs
- CacheHelper.cs
- EntityDesignerUtils.cs
- RelationshipDetailsCollection.cs
- ReadOnlyDataSourceView.cs
- OdbcConnectionString.cs
- IPEndPoint.cs
- ButtonChrome.cs
- ICspAsymmetricAlgorithm.cs
- EnvelopedSignatureTransform.cs
- SizeLimitedCache.cs
- CodeIterationStatement.cs
- DataGridViewCellStyle.cs
- _AcceptOverlappedAsyncResult.cs
- HtmlImage.cs
- EntityDataSourceContextCreatedEventArgs.cs
- AppearanceEditorPart.cs
- SchemaDeclBase.cs
- BrowserCapabilitiesCodeGenerator.cs
- UnsafeNativeMethods.cs
- MarshalByRefObject.cs
- ToolboxDataAttribute.cs
- DockPattern.cs
- ExpressionEditorAttribute.cs
- FormViewUpdateEventArgs.cs
- Dispatcher.cs
- ADMembershipUser.cs
- Positioning.cs
- RegexInterpreter.cs
- DataMisalignedException.cs
- RepeatBehaviorConverter.cs
- Encoder.cs
- AliasedSlot.cs
- PersonalizationProvider.cs
- Size3D.cs
- ArraySortHelper.cs
- InstanceDataCollectionCollection.cs
- TypeTypeConverter.cs
- BeginStoryboard.cs
- SafeNativeMethods.cs
- EncoderParameter.cs
- Trigger.cs
- ExpressionEvaluator.cs
- TextTreeRootTextBlock.cs
- DataGridColumn.cs
- InstanceCollisionException.cs
- IArgumentProvider.cs
- fixedPageContentExtractor.cs