本文整理汇总了C#中System.Xml.Xsl.XsltOld.Processor.PushActionFrame方法的典型用法代码示例。如果您正苦于以下问题:C# Processor.PushActionFrame方法的具体用法?C# Processor.PushActionFrame怎么用?C# Processor.PushActionFrame使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Xml.Xsl.XsltOld.Processor
的用法示例。
在下文中一共展示了Processor.PushActionFrame方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Execute
internal override void Execute(Processor processor, ActionFrame frame)
{
Debug.Assert(processor != null && frame != null);
switch (frame.State)
{
case Initialized:
Debug.Assert(frame.NodeSet != null);
Query query = processor.GetValueQuery(_selectKey);
object result = query.Evaluate(frame.NodeSet);
if (result is XPathNodeIterator)
{
// we cash this query because otherwise current() works incorrectly. Bug#382166.
// To be perfect we should use frame.NewNodeSet here
processor.PushActionFrame(CopyNodeSetAction.GetAction(), new XPathArrayIterator(query));
frame.State = NodeSetCopied;
break;
}
XPathNavigator nav = result as XPathNavigator;
if (nav != null)
{
processor.PushActionFrame(CopyNodeSetAction.GetAction(), new XPathSingletonIterator(nav));
frame.State = NodeSetCopied;
break;
}
string value = XmlConvert.ToXPathString(result);
if (processor.TextEvent(value))
{
frame.Finished();
}
else
{
frame.StoredOutput = value;
frame.State = ResultStored;
}
break;
case ResultStored:
Debug.Assert(frame.StoredOutput != null);
processor.TextEvent(frame.StoredOutput);
frame.Finished();
break;
case NodeSetCopied:
Debug.Assert(frame.State == NodeSetCopied);
frame.Finished();
break;
}
}
示例2: Execute
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;
}
}
示例3: Execute
internal override void Execute(Processor processor, ActionFrame frame) {
Debug.Assert(processor != null && frame != null);
switch (frame.State) {
case Initialized:
TextOnlyOutput output = new TextOnlyOutput(processor, new StringWriter(CultureInfo.InvariantCulture));
processor.PushOutput(output);
processor.PushActionFrame(frame);
frame.State = ProcessingChildren;
break;
case ProcessingChildren:
TextOnlyOutput recOutput = processor.PopOutput() as TextOnlyOutput;
Debug.Assert(recOutput != null);
Console.WriteLine(recOutput.Writer.ToString());
if (_Terminate) {
throw XsltException.Create(Res.Xslt_Terminate, recOutput.Writer.ToString());
}
frame.Finished();
break;
default:
Debug.Fail("Invalid MessageAction execution state");
break;
}
}
示例4: Execute
internal override void Execute(Processor processor, ActionFrame frame) {
Debug.Assert(processor != null && frame != null);
object ParamValue;
switch(frame.State) {
case Initialized:
if (this.selectKey != Compiler.InvalidQueryKey) {
ParamValue = processor.RunQuery(frame, this.selectKey);
processor.SetParameter(this.name, ParamValue);
frame.Finished();
}
else {
if (this.containedActions == null) {
processor.SetParameter(this.name, string.Empty);
frame.Finished();
break;
}
NavigatorOutput output = new NavigatorOutput(baseUri);
processor.PushOutput(output);
processor.PushActionFrame(frame);
frame.State = ProcessingChildren;
}
break;
case ProcessingChildren:
RecordOutput recOutput = processor.PopOutput();
Debug.Assert(recOutput is NavigatorOutput);
processor.SetParameter(this.name,((NavigatorOutput)recOutput).Navigator);
frame.Finished();
break;
default:
Debug.Fail("Invalid execution state inside VariableAction.Execute");
break;
}
}
示例5: Execute
internal override void Execute(Processor processor, ActionFrame frame) {
Debug.Assert(processor != null && frame != null);
switch (frame.State) {
case Initialized:
if (processor.BeginEvent(XPathNodeType.Comment, string.Empty, string.Empty, string.Empty, false) == false) {
// Come back later
break;
}
processor.PushActionFrame(frame);
frame.State = ProcessingChildren;
break; // Allow children to run
case ProcessingChildren:
if (processor.EndEvent(XPathNodeType.Comment) == false) {
break;
}
frame.Finished();
break;
default:
Debug.Fail("Invalid IfAction execution state");
break;
}
}
示例6: Execute
internal override void Execute(Processor processor, ActionFrame frame)
{
Debug.Assert(processor != null && frame != null);
switch (frame.State)
{
case Initialized:
if (!_fallback)
{
throw XsltException.Create(SR.Xslt_UnknownExtensionElement, _name);
}
if (this.containedActions != null && this.containedActions.Count > 0)
{
processor.PushActionFrame(frame);
frame.State = ProcessingChildren;
break;
}
else goto case ProcessingChildren;
case ProcessingChildren:
frame.Finished();
break;
default:
Debug.Fail("Invalid Container action execution state");
break;
}
}
示例7: Execute
internal override void Execute(Processor processor, ActionFrame frame) {
Debug.Assert(processor != null && frame != null);
switch (frame.State) {
case Initialized:
if (this.type == ConditionType.ConditionIf || this.type == ConditionType.ConditionWhen) {
Debug.Assert(this.testKey != Compiler.InvalidQueryKey);
bool value = processor.EvaluateBoolean(frame, this.testKey);
if (value == false) {
frame.Finished();
break;
}
}
processor.PushActionFrame(frame);
frame.State = ProcessingChildren;
break; // Allow children to run
case ProcessingChildren:
if (this.type == ConditionType.ConditionWhen ||this.type == ConditionType.ConditionOtherwise) {
Debug.Assert(frame.Container != null);
frame.Exit();
}
frame.Finished();
break;
default:
Debug.Fail("Invalid IfAction execution state");
break;
}
}
示例8: Execute
internal override void Execute(Processor processor, ActionFrame frame)
{
switch (frame.State)
{
case Initialized:
frame.Counter = 0;
frame.State = ProcessingSets;
goto case ProcessingSets;
case ProcessingSets:
if (frame.Counter < _useAttributeSets.Length)
{
AttributeSetAction action = processor.RootAction.GetAttributeSet(_useAttributeSets[frame.Counter]);
frame.IncrementCounter();
processor.PushActionFrame(action, frame.NodeSet);
}
else
{
frame.Finished();
}
break;
default:
Debug.Fail("Invalid Container action execution state");
break;
}
}
示例9: Execute
internal override void Execute(Processor processor, ActionFrame frame) {
Debug.Assert(processor != null && frame != null);
switch (frame.State) {
case Initialized:
if (sortContainer != null) {
processor.InitSortArray();
processor.PushActionFrame(sortContainer, frame.NodeSet);
frame.State = ProcessedSort;
break;
}
goto case ProcessedSort;
case ProcessedSort:
frame.InitNewNodeSet(processor.StartQuery(frame.NodeSet, this.selectKey));
if (sortContainer != null) {
Debug.Assert(processor.SortArray.Count != 0);
frame.SortNewNodeSet(processor, processor.SortArray);
}
frame.State = ProcessNextNode;
goto case ProcessNextNode;
case ProcessNextNode:
Debug.Assert(frame.State == ProcessNextNode);
Debug.Assert(frame.NewNodeSet != null);
if (frame.NewNextNode(processor)) {
frame.State = PositionAdvanced;
goto case PositionAdvanced;
}
else {
frame.Finished();
break;
}
case PositionAdvanced:
processor.PushActionFrame(frame, frame.NewNodeSet);
frame.State = ContentsProcessed;
break;
case ContentsProcessed:
frame.State = ProcessNextNode;
goto case ProcessNextNode;
}
}
示例10: Execute
internal override void Execute(Processor processor, ActionFrame frame)
{
Debug.Assert(processor != null && frame != null && frame.State != ValueCalculated);
object value = null;
switch (frame.State)
{
case Initialized:
if (IsGlobal)
{
if (frame.GetVariable(_varKey) != null)
{ // This var was calculated already
frame.Finished();
break;
}
// Mark that the variable is being computed to check for circular references
frame.SetVariable(_varKey, BeingComputedMark);
}
// If this is a parameter, check whether the caller has passed the value
if (this.varType == VariableType.GlobalParameter)
{
value = processor.GetGlobalParameter(this.name);
}
else if (this.varType == VariableType.LocalParameter)
{
value = processor.GetParameter(this.name);
}
if (value != null)
{
goto case ValueCalculated;
}
// If value was not passed, check the 'select' attribute
if (this.selectKey != Compiler.InvalidQueryKey)
{
value = processor.RunQuery(frame, this.selectKey);
goto case ValueCalculated;
}
// If there is no 'select' attribute and the content is empty, use the empty string
if (this.containedActions == null)
{
value = string.Empty;
goto case ValueCalculated;
}
// RTF case
NavigatorOutput output = new NavigatorOutput(this.baseUri);
processor.PushOutput(output);
processor.PushActionFrame(frame);
frame.State = ProcessingChildren;
break;
case ProcessingChildren:
RecordOutput recOutput = processor.PopOutput();
Debug.Assert(recOutput is NavigatorOutput);
value = ((NavigatorOutput)recOutput).Navigator;
goto case ValueCalculated;
case ValueCalculated:
Debug.Assert(value != null);
frame.SetVariable(_varKey, value);
frame.Finished();
break;
default:
Debug.Fail("Invalid execution state inside VariableAction.Execute");
break;
}
}
示例11: Execute
internal override void Execute(Processor processor, ActionFrame frame)
{
Debug.Assert(processor != null && frame != null);
switch (frame.State)
{
case Initialized:
processor.ResetParams();
processor.InitSortArray();
if (this.containedActions != null && this.containedActions.Count > 0)
{
processor.PushActionFrame(frame);
frame.State = ProcessedChildren;
break;
}
goto case ProcessedChildren;
case ProcessedChildren:
if (_selectKey == Compiler.InvalidQueryKey)
{
if (!frame.Node.HasChildren)
{
frame.Finished();
break;
}
frame.InitNewNodeSet(frame.Node.SelectChildren(XPathNodeType.All));
}
else
{
frame.InitNewNodeSet(processor.StartQuery(frame.NodeSet, _selectKey));
}
if (processor.SortArray.Count != 0)
{
frame.SortNewNodeSet(processor, processor.SortArray);
}
frame.State = ProcessNextNode;
goto case ProcessNextNode;
case ProcessNextNode:
Debug.Assert(frame.State == ProcessNextNode);
Debug.Assert(frame.NewNodeSet != null);
if (frame.NewNextNode(processor))
{
frame.State = PositionAdvanced;
goto case PositionAdvanced;
}
else
{
frame.Finished();
break;
}
case PositionAdvanced:
Debug.Assert(frame.State == PositionAdvanced);
processor.PushTemplateLookup(frame.NewNodeSet, _mode, /*importsOf:*/null);
frame.State = TemplateProcessed;
break;
case TemplateProcessed:
frame.State = ProcessNextNode;
goto case ProcessNextNode;
default:
Debug.Fail("Invalid ApplyTemplatesAction execution state");
break;
}
}
示例12: Execute
internal override void Execute(Processor processor, ActionFrame frame)
{
Debug.Assert(processor != null && frame != null);
switch (frame.State)
{
case Initialized:
if (_qname != null)
{
frame.CalulatedName = _qname;
}
else
{
frame.CalulatedName = CreateElementQName(
_nameAvt == null ? _name : _nameAvt.Evaluate(processor, frame),
_nsAvt == null ? _nsUri : _nsAvt.Evaluate(processor, frame),
_manager
);
}
goto case NameDone;
case NameDone:
{
PrefixQName qname = frame.CalulatedName;
if (processor.BeginEvent(XPathNodeType.Element, qname.Prefix, qname.Name, qname.Namespace, _empty) == false)
{
// Come back later
frame.State = NameDone;
break;
}
if (!_empty)
{
processor.PushActionFrame(frame);
frame.State = ProcessingChildren;
break; // Allow children to run
}
else
{
goto case ProcessingChildren;
}
}
case ProcessingChildren:
if (processor.EndEvent(XPathNodeType.Element) == false)
{
frame.State = ProcessingChildren;
break;
}
frame.Finished();
break;
default:
Debug.Fail("Invalid ElementAction execution state");
break;
}
}
示例13: Execute
internal override void Execute(Processor processor, ActionFrame frame) {
Debug.Assert(processor != null && frame != null);
switch (frame.State) {
case Initialized:
if (this.containedActions != null && this.containedActions.Count > 0) {
processor.PushActionFrame(frame);
frame.State = ProcessingChildren;
}
else {
frame.Finished();
}
break; // Allow children to run
case ProcessingChildren:
frame.Finished();
break;
default:
Debug.Fail("Invalid Container action execution state");
break;
}
}
示例14: Execute
internal override void Execute(Processor processor, ActionFrame frame) {
Debug.Assert(processor != null && frame != null);
while (processor.CanContinue) {
switch (frame.State) {
case Initialized:
if (Processor.IsRoot(frame.Node)) {
processor.PushActionFrame(frame);
frame.State = ChildrenOnly;
break;
}
if (processor.CopyBeginEvent(frame.Node, this.empty) == false) {
// This event wasn't processed
break;
}
frame.State = NamespaceCopy;
continue;
case NamespaceCopy:
frame.State = ContentsCopy;
if ( frame.Node.NodeType == XPathNodeType.Element ) {
processor.PushActionFrame(CopyNamespacesAction.GetAction(), frame.NodeSet);
break;
}
continue;
case ContentsCopy:
if (frame.Node.NodeType == XPathNodeType.Element && !this.empty) {
//Debug.Assert(frame.Node.HasValue == false);
processor.PushActionFrame(frame);
frame.State = ProcessChildren;
break;
}
else {
if (processor.CopyTextEvent(frame.Node)) {
frame.State = ProcessChildren;
continue;
}
else {
// This event wasn't processed
break;
}
}
case ProcessChildren:
if (processor.CopyEndEvent(frame.Node)) {
frame.Finished();
}
break;
case ChildrenOnly:
frame.Finished();
break;
default:
Debug.Fail("Invalid CopyAction execution state");
break;
}
break;
}
}
示例15: Execute
internal override void Execute(Processor processor, ActionFrame frame) {
Debug.Assert(processor != null && frame != null);
switch (frame.State) {
case Initialized:
frame.AllocateVariables(variableCount);
XPathNavigator root = processor.Document.Clone();
root.MoveToRoot();
frame.InitNodeSet(new XPathSingletonIterator(root));
if (this.containedActions != null && this.containedActions.Count > 0) {
processor.PushActionFrame(frame);
}
frame.State = QueryInitialized;
break;
case QueryInitialized:
Debug.Assert(frame.State == QueryInitialized);
frame.NextNode(processor);
Debug.Assert(Processor.IsRoot(frame.Node));
if (processor.Debugger != null) {
// this is like apply-templates, but we don't have it on stack.
// Pop the stack, otherwise last instruction will be on it.
processor.PopDebuggerStack();
}
processor.PushTemplateLookup(frame.NodeSet, /*mode:*/null, /*importsOf:*/null);
frame.State = RootProcessed;
break;
case RootProcessed:
Debug.Assert(frame.State == RootProcessed);
frame.Finished();
break;
default:
Debug.Fail("Invalid RootAction execution state");
break;
}
}