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
- Double.cs
- DependencyPropertyAttribute.cs
- ScriptControlManager.cs
- JsonServiceDocumentSerializer.cs
- ContentHostHelper.cs
- InvalidProgramException.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- HttpCacheVaryByContentEncodings.cs
- CodeSnippetExpression.cs
- AsymmetricKeyExchangeDeformatter.cs
- Thickness.cs
- LogStore.cs
- SoapFaultCodes.cs
- DataTemplateSelector.cs
- CreateUserWizardStep.cs
- HttpHandlersSection.cs
- IssuanceTokenProviderState.cs
- SudsCommon.cs
- UserControlParser.cs
- XmlDeclaration.cs
- Rfc2898DeriveBytes.cs
- DirectoryNotFoundException.cs
- XmlTextEncoder.cs
- CreatingCookieEventArgs.cs
- __Error.cs
- VersionedStreamOwner.cs
- TreeNodeMouseHoverEvent.cs
- Misc.cs
- GridItem.cs
- FilteredAttributeCollection.cs
- ListControlStringCollectionEditor.cs
- DataTableClearEvent.cs
- ColorDialog.cs
- PeerCollaboration.cs
- AbstractDataSvcMapFileLoader.cs
- ArrayTypeMismatchException.cs
- SamlDelegatingWriter.cs
- PropertyChangedEventArgs.cs
- HtmlLink.cs
- List.cs
- Base64Decoder.cs
- Char.cs
- InternalTypeHelper.cs
- KeyboardNavigation.cs
- ButtonChrome.cs
- CompleteWizardStep.cs
- CSharpCodeProvider.cs
- ResourceSet.cs
- OutOfMemoryException.cs
- _WebProxyDataBuilder.cs
- DiagnosticsConfiguration.cs
- BamlTreeUpdater.cs
- FrameworkReadOnlyPropertyMetadata.cs
- TypeLibConverter.cs
- SoapAttributes.cs
- CodeDirectiveCollection.cs
- CommonXSendMessage.cs
- DateTimeUtil.cs
- X509ChainElement.cs
- DSACryptoServiceProvider.cs
- WsiProfilesElement.cs
- XsdBuilder.cs
- ButtonChrome.cs
- RegexCompilationInfo.cs
- SqlDataSourceSelectingEventArgs.cs
- MailBnfHelper.cs
- SamlAssertionKeyIdentifierClause.cs
- ExceptionHandlers.cs
- ThreadStateException.cs
- ErrorReporting.cs
- XhtmlBasicLiteralTextAdapter.cs
- DelegatingConfigHost.cs
- BreakSafeBase.cs
- ThaiBuddhistCalendar.cs
- StrongNameMembershipCondition.cs
- SelfIssuedAuthRSAPKCS1SignatureFormatter.cs
- NativeMethods.cs
- XamlToRtfParser.cs
- XPathNavigatorReader.cs
- SecurityElement.cs
- SqlStatistics.cs
- CompilationPass2TaskInternal.cs
- BitVector32.cs
- AddressAccessDeniedException.cs
- BinaryCommonClasses.cs
- ViewLoader.cs
- ListenerConfig.cs
- ThreadTrace.cs
- HashRepartitionStream.cs
- CssStyleCollection.cs
- TextEditorCopyPaste.cs
- MailFileEditor.cs
- PropertyRef.cs
- XmlSchemaSimpleTypeList.cs
- LazyTextWriterCreator.cs
- CommandExpr.cs
- ConfigurationProperty.cs
- LinearGradientBrush.cs
- XmlSchemaAny.cs
- OleDbDataAdapter.cs