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
- OdbcConnection.cs
- LinqDataView.cs
- ConfigurationConverterBase.cs
- InputScope.cs
- MergeFilterQuery.cs
- DataServiceQuery.cs
- FontWeightConverter.cs
- PresentationTraceSources.cs
- PhysicalOps.cs
- DataGridViewColumnConverter.cs
- ThreadInterruptedException.cs
- WebMessageEncoderFactory.cs
- FormViewCommandEventArgs.cs
- MobileResource.cs
- FaultDesigner.cs
- SQLStringStorage.cs
- ArgumentException.cs
- OutputCacheModule.cs
- CurrentTimeZone.cs
- Not.cs
- PointLightBase.cs
- PartialCachingAttribute.cs
- PropertyTabChangedEvent.cs
- SqlDataRecord.cs
- ResourceReferenceExpressionConverter.cs
- VirtualDirectoryMapping.cs
- ObjectSpanRewriter.cs
- ResourceSetExpression.cs
- ServiceDocumentFormatter.cs
- SafeThemeHandle.cs
- CachingHintValidation.cs
- BitmapSource.cs
- ModifierKeysConverter.cs
- ContentFilePart.cs
- DesignerUtility.cs
- SimpleMailWebEventProvider.cs
- Dictionary.cs
- EmbossBitmapEffect.cs
- UriTemplateVariablePathSegment.cs
- SqlDataReader.cs
- Light.cs
- BuildManagerHost.cs
- HttpModuleCollection.cs
- ContentValidator.cs
- FormClosedEvent.cs
- DataGridViewColumnConverter.cs
- ConnectivityStatus.cs
- DrawingAttributes.cs
- TraceListeners.cs
- AuthorizationContext.cs
- ClassHandlersStore.cs
- HttpServerProtocol.cs
- ComplexPropertyEntry.cs
- ProfileSettings.cs
- FormattedText.cs
- XmlSchemaSimpleTypeList.cs
- FixedSOMSemanticBox.cs
- DetailsViewPageEventArgs.cs
- PluggableProtocol.cs
- RecognizeCompletedEventArgs.cs
- EventArgs.cs
- EncoderParameters.cs
- ContainerUtilities.cs
- ResourceExpression.cs
- ZoneIdentityPermission.cs
- PageContentAsyncResult.cs
- AttributeQuery.cs
- DBCommand.cs
- ReverseInheritProperty.cs
- BuiltInPermissionSets.cs
- DirectoryObjectSecurity.cs
- ScriptReferenceEventArgs.cs
- SecurityPolicySection.cs
- CryptoHandle.cs
- UIElementIsland.cs
- MdiWindowListItemConverter.cs
- SamlAudienceRestrictionCondition.cs
- COM2ICategorizePropertiesHandler.cs
- FlowDocumentReaderAutomationPeer.cs
- SelectedCellsCollection.cs
- ColorAnimationBase.cs
- MeasurementDCInfo.cs
- EntryPointNotFoundException.cs
- HttpListenerContext.cs
- HttpWebResponse.cs
- TextEncodedRawTextWriter.cs
- WebBrowserContainer.cs
- BitmapFrameEncode.cs
- XmlSchemaAnyAttribute.cs
- TreeViewEvent.cs
- RequestTimeoutManager.cs
- InlineObject.cs
- ConvertersCollection.cs
- TextContainer.cs
- DecimalStorage.cs
- Imaging.cs
- EntityTypeBase.cs
- XmlSchemaImporter.cs
- DropAnimation.xaml.cs
- CompositeCollection.cs