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
- SqlPersonalizationProvider.cs
- TraceHwndHost.cs
- FreezableDefaultValueFactory.cs
- OleCmdHelper.cs
- SqlStream.cs
- ApplicationSettingsBase.cs
- SQLString.cs
- NavigationCommands.cs
- StreamWithDictionary.cs
- XmlWriter.cs
- Adorner.cs
- webclient.cs
- DependencyObject.cs
- AssemblyFilter.cs
- MetadataItem.cs
- SimpleBitVector32.cs
- InputLangChangeEvent.cs
- ClientSection.cs
- PeekCompletedEventArgs.cs
- MarkupCompilePass1.cs
- ParserContext.cs
- EventItfInfo.cs
- ValidatorCollection.cs
- FederatedMessageSecurityOverHttpElement.cs
- HeaderCollection.cs
- _AutoWebProxyScriptHelper.cs
- RotationValidation.cs
- EditorBrowsableAttribute.cs
- MenuItem.cs
- XmlSerializer.cs
- QilIterator.cs
- _OverlappedAsyncResult.cs
- XmlDocument.cs
- DynamicValueConverter.cs
- CodeAttributeArgumentCollection.cs
- SymLanguageType.cs
- SchemaComplexType.cs
- Effect.cs
- XmlQualifiedNameTest.cs
- ReflectionHelper.cs
- TreeNodeCollection.cs
- FunctionDescription.cs
- XPathDocumentNavigator.cs
- HasCopySemanticsAttribute.cs
- StylusPlugInCollection.cs
- CryptoConfig.cs
- dataobject.cs
- SemaphoreFullException.cs
- GlyphCache.cs
- RenderDataDrawingContext.cs
- DesignTimeDataBinding.cs
- SmiEventSink_DeferedProcessing.cs
- DetailsViewActionList.cs
- AutoGeneratedFieldProperties.cs
- __Error.cs
- ConfigurationException.cs
- XmlElementAttribute.cs
- LinqDataSourceUpdateEventArgs.cs
- TypeUtil.cs
- _AuthenticationState.cs
- ValidationResult.cs
- SpecialTypeDataContract.cs
- ElapsedEventArgs.cs
- LogicalChannel.cs
- GridViewPageEventArgs.cs
- SqlDataSourceEnumerator.cs
- TemplateInstanceAttribute.cs
- ErasingStroke.cs
- RenderData.cs
- UserNameSecurityTokenProvider.cs
- AdornedElementPlaceholder.cs
- ProviderSettings.cs
- ModelItem.cs
- ConfigurationManagerHelperFactory.cs
- Floater.cs
- ControlIdConverter.cs
- TdsParameterSetter.cs
- AssemblyInfo.cs
- ActiveXContainer.cs
- FontWeights.cs
- SafeRightsManagementQueryHandle.cs
- ExclusiveHandleList.cs
- FileRecordSequenceHelper.cs
- StandardOleMarshalObject.cs
- BlurEffect.cs
- ApplicationActivator.cs
- RotateTransform3D.cs
- SqlDataSourceCache.cs
- _NTAuthentication.cs
- RectIndependentAnimationStorage.cs
- HttpHeaderCollection.cs
- AttachedAnnotation.cs
- ObjectStateEntryOriginalDbUpdatableDataRecord.cs
- DriveInfo.cs
- ArrayElementGridEntry.cs
- RegexBoyerMoore.cs
- ClosableStream.cs
- DateTimeValueSerializerContext.cs
- DecoderReplacementFallback.cs
- DataQuery.cs