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
- BasePropertyDescriptor.cs
- WindowsGraphicsWrapper.cs
- ShapingEngine.cs
- TypeConverterHelper.cs
- DataRow.cs
- ParserStreamGeometryContext.cs
- PersistenceTypeAttribute.cs
- QueueSurrogate.cs
- filewebresponse.cs
- ObjectTag.cs
- SqlDataSourceQueryConverter.cs
- ValidatorCompatibilityHelper.cs
- SmiGettersStream.cs
- EpmCustomContentSerializer.cs
- Util.cs
- PrintController.cs
- Literal.cs
- Parallel.cs
- SafeNativeMethodsCLR.cs
- ManagementNamedValueCollection.cs
- OracleMonthSpan.cs
- LocalIdKeyIdentifierClause.cs
- WinFormsUtils.cs
- CodeBlockBuilder.cs
- SemaphoreFullException.cs
- ScrollItemPattern.cs
- AnimationClockResource.cs
- IdentifierService.cs
- CurrentChangingEventManager.cs
- CheckBoxPopupAdapter.cs
- DetailsViewPagerRow.cs
- UnsafeNativeMethods.cs
- SelectionGlyphBase.cs
- QuaternionConverter.cs
- QuaternionRotation3D.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- PathGeometry.cs
- safex509handles.cs
- ProfileManager.cs
- WebHeaderCollection.cs
- DesignTimeVisibleAttribute.cs
- MoveSizeWinEventHandler.cs
- WindowsScrollBar.cs
- XmlMapping.cs
- EnumBuilder.cs
- AllowedAudienceUriElement.cs
- AutoCompleteStringCollection.cs
- GeometryValueSerializer.cs
- CodeTypeReference.cs
- TextBoxAutomationPeer.cs
- MappingMetadataHelper.cs
- DataGridViewColumnTypeEditor.cs
- QueryCreatedEventArgs.cs
- ProfileGroupSettings.cs
- SourceFileInfo.cs
- HttpProxyTransportBindingElement.cs
- TraceRecords.cs
- InputLanguage.cs
- XamlWriter.cs
- CodeGotoStatement.cs
- ProfileSettingsCollection.cs
- XmlSchemaSequence.cs
- ArraySubsetEnumerator.cs
- SchemaDeclBase.cs
- AlgoModule.cs
- MobileResource.cs
- LocalizableResourceBuilder.cs
- StyleSheetComponentEditor.cs
- NonVisualControlAttribute.cs
- ApplicationInterop.cs
- TypeHelper.cs
- VisualBrush.cs
- DataGridViewColumnStateChangedEventArgs.cs
- MaterialGroup.cs
- XamlReaderHelper.cs
- LocalizedNameDescriptionPair.cs
- StoreAnnotationsMap.cs
- AutomationPropertyInfo.cs
- shaperfactoryquerycachekey.cs
- ListSortDescriptionCollection.cs
- Vector3D.cs
- GridViewColumnCollectionChangedEventArgs.cs
- CodeAttributeDeclarationCollection.cs
- WebBrowserProgressChangedEventHandler.cs
- XmlSignatureManifest.cs
- Material.cs
- CharKeyFrameCollection.cs
- Select.cs
- unsafenativemethodstextservices.cs
- EllipseGeometry.cs
- StrokeRenderer.cs
- XmlNodeChangedEventManager.cs
- NGCSerializationManager.cs
- WebPartTracker.cs
- Converter.cs
- NullableLongAverageAggregationOperator.cs
- FontNameEditor.cs
- StringFreezingAttribute.cs
- ImportContext.cs
- ContextStack.cs