net.sf.saxon.instruct
Class LocalParam

java.lang.Object
  extended by net.sf.saxon.expr.Expression
      extended by net.sf.saxon.instruct.Instruction
          extended by net.sf.saxon.instruct.GeneralVariable
              extended by net.sf.saxon.instruct.LocalParam
All Implemented Interfaces:
Serializable, SourceLocator, LocationProvider, SaxonLocator, Binding, EvaluableItem, SequenceIterable, TailCallReturner, InstructionInfo, Locator

public final class LocalParam
extends GeneralVariable

The compiled form of an xsl:param element within a template in an XSLT stylesheet.

The xsl:param element in XSLT has mandatory attribute name and optional attribute select. It can also be specified as required="yes" or required="no".

This is used only for parameters to XSLT templates. For function calls, the caller of the function places supplied arguments onto the callee's stackframe and the callee does not need to do anything. Global parameters (XQuery external variables) are handled using GlobalParam.

The LocalParam class is also used to represent parameters with the saxon:iterate instruction

See Also:
Serialized Form

Field Summary
 
Fields inherited from class net.sf.saxon.instruct.GeneralVariable
evaluationMode, referenceCount, slotNumber, variableQName
 
Fields inherited from class net.sf.saxon.expr.Expression
EVALUATE_METHOD, ITERATE_METHOD, locationId, PROCESS_METHOD, staticProperties
 
Constructor Summary
LocalParam()
           
 
Method Summary
 ValueRepresentation evaluateVariable(XPathContext c)
          Evaluate the variable
 void explain(ExpressionPresenter out)
          Diagnostic print of expression structure.
 int getInstructionNameCode()
          Get the name of this instruction for diagnostic and tracing purposes
 int getParameterId()
          Get the parameter id, which is essentially an alias for the parameter name, unique within a stylesheet
 Iterator<Expression> iterateSubExpressions()
          Get all the XPath expressions associated with this instruction (in XSLT terms, the expression present on attributes of the instruction, as distinct from the child instructions in a sequence construction)
 TailCall processLeavingTail(XPathContext context)
          Process the local parameter declaration
 boolean replaceSubExpression(Expression original, Expression replacement)
          Replace one subexpression by a replacement subexpression
 void setConversion(Expression convertor)
          Define a conversion that is to be applied to the supplied parameter value.
 void setParameterId(int id)
          Allocate a number which is essentially an alias for the parameter name, unique within a stylesheet
 
Methods inherited from class net.sf.saxon.instruct.GeneralVariable
copy, evaluateItem, getCardinality, getEvaluationMode, getItemType, getLocalSlotNumber, getRequiredType, getSelectExpression, getSelectValue, getSlotNumber, getVariableQName, init, isAssignable, isGlobal, isImplicitlyRequiredParam, isRequiredParam, isTunnelParam, iterate, optimize, promoteInst, setAssignable, setImplicitlyRequiredParam, setReferenceCount, setRequiredParam, setRequiredType, setSelectExpression, setSlotNumber, setTunnel, setVariableQName, simplify, typeCheck
 
Methods inherited from class net.sf.saxon.instruct.Instruction
assembleParams, assembleTunnelParams, computeCardinality, computeSpecialProperties, createsNewNodes, dynamicError, evaluateAsString, getConstructType, getImplementationMethod, getSourceLocator, isXSLT, process, promote
 
Methods inherited from class net.sf.saxon.expr.Expression
addToPathMap, adoptChildExpression, checkForUpdatingSubexpressions, checkPermittedContents, computeDependencies, computeStaticProperties, doPromotion, dynamicError, effectiveBooleanValue, evaluatePendingUpdates, explain, getColumnNumber, getColumnNumber, getContainer, getDependencies, getExecutable, getHostLanguage, getIntrinsicDependencies, getLineNumber, getLineNumber, getLocationId, getLocationProvider, getObjectName, getProperties, getProperty, getPublicId, getSlotsUsed, getSpecialProperties, getSystemId, getSystemId, hasLoopingSubexpression, implementsStaticTypeCheck, isSubtreeExpression, isUpdatingExpression, isVacuousExpression, iterateEvents, iterateSameFocusSubExpressions, markTailFunctionCalls, resetLocalStaticProperties, setContainer, setFiltered, setFlattened, setLocationId, staticTypeCheck, suppressValidation, toString, typeError
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface javax.xml.transform.SourceLocator
getColumnNumber, getLineNumber, getPublicId, getSystemId
 

Constructor Detail

LocalParam

public LocalParam()
Method Detail

setParameterId

public void setParameterId(int id)
Allocate a number which is essentially an alias for the parameter name, unique within a stylesheet

Parameters:
id - the parameter id

getParameterId

public int getParameterId()
Get the parameter id, which is essentially an alias for the parameter name, unique within a stylesheet

Returns:
the parameter id

setConversion

public void setConversion(Expression convertor)
Define a conversion that is to be applied to the supplied parameter value.

Parameters:
convertor - The expression to be applied. This performs type checking, and the basic conversions implied by function calling rules, for example numeric promotion, atomization, and conversion of untyped atomic values to a required type. The conversion uses the actual parameter value as input, referencing it using a VariableReference.

getInstructionNameCode

public int getInstructionNameCode()
Get the name of this instruction for diagnostic and tracing purposes

Overrides:
getInstructionNameCode in class GeneralVariable
Returns:
the name of this instruction, as a name pool name code

iterateSubExpressions

public Iterator<Expression> iterateSubExpressions()
Get all the XPath expressions associated with this instruction (in XSLT terms, the expression present on attributes of the instruction, as distinct from the child instructions in a sequence construction)

Overrides:
iterateSubExpressions in class GeneralVariable
Returns:
an iterator containing the sub-expressions of this expression

replaceSubExpression

public boolean replaceSubExpression(Expression original,
                                    Expression replacement)
Replace one subexpression by a replacement subexpression

Overrides:
replaceSubExpression in class GeneralVariable
Parameters:
original - the original subexpression
replacement - the replacement subexpression
Returns:
true if the original subexpression is found

processLeavingTail

public TailCall processLeavingTail(XPathContext context)
                            throws XPathException
Process the local parameter declaration

Specified by:
processLeavingTail in interface TailCallReturner
Specified by:
processLeavingTail in class Instruction
Parameters:
context - The dynamic context of the transformation, giving access to the current node, the current variables, etc.
Returns:
null if the instruction has completed execution; or a TailCall indicating a function call or template call that is delegated to the caller, to be made after the stack has been unwound so as to save stack space.
Throws:
XPathException

evaluateVariable

public ValueRepresentation evaluateVariable(XPathContext c)
Evaluate the variable

Parameters:
c - the XPath dynamic evaluation context
Returns:
the result of evaluating the variable

explain

public void explain(ExpressionPresenter out)
Diagnostic print of expression structure. The abstract expression tree is written to the supplied output destination.

Overrides:
explain in class GeneralVariable
Parameters:
out - the expression presenter used to display the structure


Copyright (c) Saxonica Limited. All rights reserved.