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
- SplineKeyFrames.cs
- AppDomainAttributes.cs
- ElementFactory.cs
- MulticastIPAddressInformationCollection.cs
- unitconverter.cs
- StylusCaptureWithinProperty.cs
- SharedStatics.cs
- MutexSecurity.cs
- MouseGestureValueSerializer.cs
- BuildTopDownAttribute.cs
- ListViewUpdatedEventArgs.cs
- CharacterMetrics.cs
- PartitionResolver.cs
- ISO2022Encoding.cs
- SafeProcessHandle.cs
- JulianCalendar.cs
- HyperLink.cs
- XmlDocumentFragment.cs
- Repeater.cs
- EntityKey.cs
- SQLByte.cs
- PlatformCulture.cs
- MemoryStream.cs
- CommentEmitter.cs
- Bitmap.cs
- PassportAuthenticationEventArgs.cs
- SubtreeProcessor.cs
- RenderOptions.cs
- MetadataItemSerializer.cs
- basevalidator.cs
- followingsibling.cs
- DocumentViewerHelper.cs
- DataGridViewCellPaintingEventArgs.cs
- JsonQNameDataContract.cs
- XsltContext.cs
- GridEntryCollection.cs
- AnimationStorage.cs
- _ListenerAsyncResult.cs
- ExpressionBindingCollection.cs
- Socket.cs
- ButtonColumn.cs
- XmlAnyElementAttribute.cs
- AssemblyAssociatedContentFileAttribute.cs
- FrameworkElementFactory.cs
- BuildResultCache.cs
- PointCollection.cs
- XmlSigningNodeWriter.cs
- OutOfMemoryException.cs
- SplitterCancelEvent.cs
- Buffer.cs
- SqlBuilder.cs
- SortableBindingList.cs
- ObjectQueryExecutionPlan.cs
- AutomationPropertyInfo.cs
- DynamicResourceExtension.cs
- VisualTreeUtils.cs
- WmpBitmapEncoder.cs
- ConnectionDemuxer.cs
- ExceptionTrace.cs
- RpcAsyncResult.cs
- Inline.cs
- ListViewItem.cs
- SafeHandles.cs
- CodeLabeledStatement.cs
- SafeArchiveContext.cs
- XmlUnspecifiedAttribute.cs
- ServiceErrorHandler.cs
- SimpleMailWebEventProvider.cs
- HttpWebRequest.cs
- PatternMatcher.cs
- Metadata.cs
- NeutralResourcesLanguageAttribute.cs
- AbstractSvcMapFileLoader.cs
- UnhandledExceptionEventArgs.cs
- MetadataItemCollectionFactory.cs
- NumberFunctions.cs
- AlgoModule.cs
- BookmarkScopeHandle.cs
- CaseStatement.cs
- FindProgressChangedEventArgs.cs
- CreatingCookieEventArgs.cs
- DataGridViewTextBoxColumn.cs
- StateDesignerConnector.cs
- assertwrapper.cs
- PEFileReader.cs
- InstanceDataCollectionCollection.cs
- Completion.cs
- DefaultProxySection.cs
- AssemblyCache.cs
- CompletionBookmark.cs
- Utility.cs
- AuthenticationServiceManager.cs
- ToolBarPanel.cs
- TextOutput.cs
- ExpressionPrinter.cs
- ToolStripRenderEventArgs.cs
- FixedSOMTable.cs
- ExtenderProviderService.cs
- ObjectSpanRewriter.cs
- Converter.cs