## net.sf.saxon.expr.instruct
Class LocalParam

    java.lang.Object
      net.sf.saxon.expr.Expression
          net.sf.saxon.expr.instruct.Instruction
              net.sf.saxon.expr.instruct.GeneralVariable
                  net.sf.saxon.expr.instruct.LocalParam

All Implemented Interfaces:
  Serializable, SourceLocator, LocationProvider, SaxonLocator, Binding, EvaluableItem, TailCallReturner, SequenceIterable, 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.expr.instruct.GeneralVariable
`evaluationMode, referenceCount, slotNumber, variableQName`

Fields inherited from class net.sf.saxon.expr.Expression
`EVALUATE_METHOD, EVENT_FEED_METHOD, ITEM_FEED_METHOD, ITERATE_METHOD, locationId, PROCESS_METHOD, PUSH_SELECTION, staticProperties, WATCH_METHOD`

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.expr.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.expr.instruct.Instruction
`assembleParams, assembleTunnelParams, computeCardinality, computeSpecialProperties, createsNewNodes, dynamicError, evaluateAsString, getConstructType, getExpressionName, getImplementationMethod, getInstructionName, getIteratorFromProcessMethod, 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, getEvaluationMethod, 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, setEvaluationMethod, 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) 2004-2010 Saxonica Limited. All rights reserved.