Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- SrgsRule.cs
- IPipelineRuntime.cs
- AttributedMetaModel.cs
- CustomCategoryAttribute.cs
- DynamicMetaObjectBinder.cs
- ConsoleCancelEventArgs.cs
- XmlSchemaComplexContentRestriction.cs
- EventWaitHandle.cs
- base64Transforms.cs
- EntityDataSourceChangedEventArgs.cs
- TraceSwitch.cs
- PresentationTraceSources.cs
- TargetControlTypeAttribute.cs
- Assert.cs
- ImageButton.cs
- RequestTimeoutManager.cs
- TabItem.cs
- BitmapEffectInput.cs
- RenderContext.cs
- XmlQueryContext.cs
- DiagnosticsConfigurationHandler.cs
- PerformanceCountersElement.cs
- LineVisual.cs
- WindowsTooltip.cs
- ComplexObject.cs
- BamlResourceContent.cs
- ActivityDesigner.cs
- UpdateExpressionVisitor.cs
- AvtEvent.cs
- TextFormatterHost.cs
- StringBlob.cs
- StringSorter.cs
- AutoGeneratedFieldProperties.cs
- SettingsAttributes.cs
- RegisteredScript.cs
- MetabaseSettingsIis7.cs
- EntryPointNotFoundException.cs
- NonSerializedAttribute.cs
- SecurityContext.cs
- Trace.cs
- FormatConvertedBitmap.cs
- _AutoWebProxyScriptHelper.cs
- WsdlBuildProvider.cs
- ImpersonateTokenRef.cs
- TableRow.cs
- SoapIncludeAttribute.cs
- InvalidOleVariantTypeException.cs
- ByteConverter.cs
- QilLoop.cs
- CommonObjectSecurity.cs
- ResXBuildProvider.cs
- EventlogProvider.cs
- NotificationContext.cs
- CommonGetThemePartSize.cs
- LongPath.cs
- BindingFormattingDialog.cs
- ParenExpr.cs
- DataRowCollection.cs
- InternalResources.cs
- DataSpaceManager.cs
- CorruptStoreException.cs
- SqlGenerator.cs
- CommonXSendMessage.cs
- __ConsoleStream.cs
- NamedPipeTransportBindingElement.cs
- CodeExpressionCollection.cs
- SeparatorAutomationPeer.cs
- FileFormatException.cs
- UIElementParagraph.cs
- RoleService.cs
- DesignerSerializationVisibilityAttribute.cs
- UshortList2.cs
- XXXInfos.cs
- AnnotationAuthorChangedEventArgs.cs
- OracleDataAdapter.cs
- StringValidatorAttribute.cs
- XmlProcessingInstruction.cs
- ButtonChrome.cs
- DWriteFactory.cs
- EmptyArray.cs
- XamlRtfConverter.cs
- JoinGraph.cs
- DataGridItemAttachedStorage.cs
- ProviderBase.cs
- RuleElement.cs
- PtsContext.cs
- XmlValidatingReader.cs
- MarshalByValueComponent.cs
- PermissionSetEnumerator.cs
- XmlTextAttribute.cs
- FillErrorEventArgs.cs
- XmlCodeExporter.cs
- UpdateRecord.cs
- DesignerSerializationVisibilityAttribute.cs
- InvokeWebServiceDesigner.cs
- DelegateHelpers.Generated.cs
- WebPartConnectionsCancelEventArgs.cs
- ExpandSegment.cs
- CriticalHandle.cs
- XXXInfos.cs