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
- Automation.cs
- _FtpDataStream.cs
- MethodImplAttribute.cs
- VerticalAlignConverter.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- HttpRuntimeSection.cs
- ProjectionPathBuilder.cs
- Validator.cs
- MessagingActivityHelper.cs
- ClientSettingsStore.cs
- EnumType.cs
- UIElement3DAutomationPeer.cs
- ProfileGroupSettings.cs
- ReadingWritingEntityEventArgs.cs
- XmlDesigner.cs
- columnmapfactory.cs
- FileLoadException.cs
- MruCache.cs
- TokenBasedSet.cs
- SqlCrossApplyToCrossJoin.cs
- Helpers.cs
- FontSizeConverter.cs
- WeakReferenceEnumerator.cs
- DataControlCommands.cs
- MultipartContentParser.cs
- PointCollectionValueSerializer.cs
- SqlInternalConnectionTds.cs
- CharUnicodeInfo.cs
- SpotLight.cs
- ExtensionSimplifierMarkupObject.cs
- EventToken.cs
- LocationInfo.cs
- CodeIterationStatement.cs
- PersistChildrenAttribute.cs
- SqlDataSourceCache.cs
- BindingValueChangedEventArgs.cs
- VarInfo.cs
- SystemIcmpV6Statistics.cs
- RuntimeConfigurationRecord.cs
- DataService.cs
- clipboard.cs
- ByteRangeDownloader.cs
- XmlSchemaSimpleTypeRestriction.cs
- securitycriticaldataClass.cs
- ArrayListCollectionBase.cs
- CustomTypeDescriptor.cs
- Validator.cs
- HashAlgorithm.cs
- CaseInsensitiveHashCodeProvider.cs
- AssertUtility.cs
- xmlsaver.cs
- XmlReaderSettings.cs
- TypeReference.cs
- TemplateNodeContextMenu.cs
- StylusTip.cs
- TextBoxAutomationPeer.cs
- OleDbConnectionInternal.cs
- Tracer.cs
- Assert.cs
- RtfToXamlReader.cs
- PtsHost.cs
- ToolConsole.cs
- PropertyGridEditorPart.cs
- PropertyMapper.cs
- CroppedBitmap.cs
- PageRanges.cs
- EntityWrapperFactory.cs
- DetailsViewInsertEventArgs.cs
- SelectionListDesigner.cs
- COM2ExtendedUITypeEditor.cs
- ExceptionUtil.cs
- XmlConvert.cs
- SyndicationSerializer.cs
- DoubleCollection.cs
- SoapDocumentMethodAttribute.cs
- TextDecoration.cs
- WebControl.cs
- JsonDataContract.cs
- MessageQueueKey.cs
- TableAdapterManagerGenerator.cs
- InkCanvasFeedbackAdorner.cs
- DefaultBindingPropertyAttribute.cs
- DataStreams.cs
- XmlSchemaAttribute.cs
- DesignerTextViewAdapter.cs
- NullableIntMinMaxAggregationOperator.cs
- MobileComponentEditorPage.cs
- AutomationPatternInfo.cs
- SessionEndingCancelEventArgs.cs
- ReadContentAsBinaryHelper.cs
- CompositeFontFamily.cs
- ExpressionNode.cs
- TextLineBreak.cs
- SingleAnimationUsingKeyFrames.cs
- HttpHandlerAction.cs
- ComponentManagerBroker.cs
- WindowsButton.cs
- ServiceMetadataContractBehavior.cs
- IsolatedStorage.cs
- SqlProfileProvider.cs