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
- FixedSOMGroup.cs
- XmlSchemaSimpleTypeRestriction.cs
- SaveFileDialogDesigner.cs
- ButtonBase.cs
- ColumnTypeConverter.cs
- AutomationPeer.cs
- PermissionSetEnumerator.cs
- SHA1CryptoServiceProvider.cs
- RichTextBoxConstants.cs
- PolicyUtility.cs
- ProfileModule.cs
- QueryTaskGroupState.cs
- EngineSite.cs
- ProtectedProviderSettings.cs
- RefreshEventArgs.cs
- Char.cs
- WindowsFormsSectionHandler.cs
- FilterQuery.cs
- SqlExpressionNullability.cs
- WebRequestModuleElementCollection.cs
- ReferencedCollectionType.cs
- ManagementNamedValueCollection.cs
- BindingBase.cs
- MailWebEventProvider.cs
- OdbcConnection.cs
- MultiAsyncResult.cs
- UrlMappingsSection.cs
- MailBnfHelper.cs
- TextDecoration.cs
- DefaultBindingPropertyAttribute.cs
- ExecutedRoutedEventArgs.cs
- WindowsListView.cs
- AssemblyAttributesGoHere.cs
- ValidateNames.cs
- SqlDataSource.cs
- DbUpdateCommandTree.cs
- DeploymentSectionCache.cs
- CapabilitiesRule.cs
- ToolTipAutomationPeer.cs
- ParamArrayAttribute.cs
- StylusSystemGestureEventArgs.cs
- StrokeCollection2.cs
- CodeLabeledStatement.cs
- XmlSchemaDocumentation.cs
- GetWinFXPath.cs
- MenuItemCollectionEditor.cs
- XmlWrappingWriter.cs
- SharingService.cs
- Rfc2898DeriveBytes.cs
- GridViewColumnHeaderAutomationPeer.cs
- DataGridViewColumnTypePicker.cs
- TextDecoration.cs
- DataGridViewDataConnection.cs
- ItemCheckedEvent.cs
- XmlSigningNodeWriter.cs
- MulticastDelegate.cs
- SimpleLine.cs
- SmtpAuthenticationManager.cs
- RayMeshGeometry3DHitTestResult.cs
- StyleBamlTreeBuilder.cs
- ConnectionManagementElementCollection.cs
- LayoutUtils.cs
- DbConnectionPoolOptions.cs
- Rotation3D.cs
- ColorAnimation.cs
- SubMenuStyle.cs
- CompilerGlobalScopeAttribute.cs
- MetadataExporter.cs
- LabelAutomationPeer.cs
- WebServiceErrorEvent.cs
- SqlInfoMessageEvent.cs
- sortedlist.cs
- StatusBar.cs
- HtmlTableRowCollection.cs
- StrongNamePublicKeyBlob.cs
- DragEventArgs.cs
- AffineTransform3D.cs
- GlyphRunDrawing.cs
- RootBrowserWindow.cs
- MimeBasePart.cs
- Stylesheet.cs
- IisTraceListener.cs
- Matrix3D.cs
- AvtEvent.cs
- FreezableCollection.cs
- VoiceSynthesis.cs
- WebEventTraceProvider.cs
- _FtpControlStream.cs
- MemberJoinTreeNode.cs
- ResourceBinder.cs
- PartitionedStream.cs
- ConsoleKeyInfo.cs
- TargetParameterCountException.cs
- DefaultWorkflowTransactionService.cs
- SQLRoleProvider.cs
- TextDecorationUnitValidation.cs
- TripleDES.cs
- PersistenceMetadataNamespace.cs
- ContentAlignmentEditor.cs
- NetworkInformationException.cs