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
- FileNotFoundException.cs
- PointConverter.cs
- PhysicalOps.cs
- PersonalizablePropertyEntry.cs
- ObjectDataSourceSelectingEventArgs.cs
- UnsafeNativeMethods.cs
- ServicePerformanceCounters.cs
- XmlSchemaAppInfo.cs
- EntityContainer.cs
- DiffuseMaterial.cs
- SafeEventLogWriteHandle.cs
- SkinBuilder.cs
- BinaryMethodMessage.cs
- RefreshPropertiesAttribute.cs
- TextFormatterImp.cs
- XsdCachingReader.cs
- MachineSettingsSection.cs
- FormViewModeEventArgs.cs
- Column.cs
- returneventsaver.cs
- IItemContainerGenerator.cs
- Viewport2DVisual3D.cs
- XsltConvert.cs
- HttpCacheParams.cs
- PtsHelper.cs
- UserNamePasswordValidator.cs
- PersonalizationDictionary.cs
- HotSpotCollection.cs
- ThreadAttributes.cs
- TransformedBitmap.cs
- MissingMemberException.cs
- XmlWriter.cs
- ProxyFragment.cs
- ProfileSettings.cs
- RightsManagementEncryptedStream.cs
- BatchParser.cs
- ItemDragEvent.cs
- UntypedNullExpression.cs
- TransportConfigurationTypeElementCollection.cs
- SimpleHandlerBuildProvider.cs
- WindowsRegion.cs
- RegexGroup.cs
- ReadOnlyDictionary.cs
- UniqueIdentifierService.cs
- System.Data_BID.cs
- ObjectDataProvider.cs
- Journaling.cs
- CacheChildrenQuery.cs
- SerTrace.cs
- InternalEnumValidatorAttribute.cs
- UnionExpr.cs
- NumberSubstitution.cs
- ParameterBuilder.cs
- Column.cs
- AttachmentService.cs
- VBCodeProvider.cs
- EtwTrackingBehaviorElement.cs
- Activator.cs
- PropertyGrid.cs
- Triplet.cs
- PEFileReader.cs
- ClickablePoint.cs
- TreeNodeBindingCollection.cs
- ColumnHeader.cs
- TypefaceMap.cs
- ToolStripComboBox.cs
- UIElement3D.cs
- EditorAttribute.cs
- XmlSchemaGroupRef.cs
- DataGridViewColumnTypeEditor.cs
- WebDescriptionAttribute.cs
- InputLanguageProfileNotifySink.cs
- FunctionQuery.cs
- RichTextBox.cs
- CodeGroup.cs
- SafeProcessHandle.cs
- DragDrop.cs
- GridViewPageEventArgs.cs
- EmptyStringExpandableObjectConverter.cs
- SoapInteropTypes.cs
- NotifyCollectionChangedEventArgs.cs
- CertificateReferenceElement.cs
- InvalidAsynchronousStateException.cs
- MissingMethodException.cs
- PeerCollaboration.cs
- ToolboxItemLoader.cs
- DocumentReferenceCollection.cs
- SurrogateSelector.cs
- AlgoModule.cs
- CodeNamespaceCollection.cs
- Cursors.cs
- CollectionConverter.cs
- D3DImage.cs
- TextPattern.cs
- Rect.cs
- ExtendedTransformFactory.cs
- EdmProperty.cs
- ReaderContextStackData.cs
- EventArgs.cs
- BufferedGraphics.cs