Class Assignation

    • Field Detail

      • slotNumber

        protected int slotNumber
      • variableName

        protected java.lang.String variableName
      • nameCode

        protected int nameCode
    • Constructor Detail

      • Assignation

        public Assignation()
    • Method Detail

      • setVariableDeclaration

        public void setVariableDeclaration​(RangeVariableDeclaration decl)
        Set the reference to the variable declaration
      • setAction

        public void setAction​(Expression action)
        Add the "return" or "satisfies" expression, and fix up all references to the range variable that occur within that expression
        Parameters:
        action - the expression that occurs after the "return" keyword of a "for" expression, the "satisfies" keyword of "some/every", or the ":=" operator of a "let" expression.

        This method must be called after calling setVariableDeclaration()

      • isGlobal

        public final boolean isGlobal()
        Indicate whether the binding is local or global. A global binding is one that has a fixed value for the life of a query or transformation; any other binding is local.
        Specified by:
        isGlobal in interface Binding
      • isAssignable

        public final boolean isAssignable()
        Test whether it is permitted to assign to the variable using the saxon:assign extension element. This will only be for an XSLT global variable where the extra attribute saxon:assignable="yes" is present.
        Specified by:
        isAssignable in interface Binding
      • getLocalSlotNumber

        public int getLocalSlotNumber()
        If this is a local variable held on the local stack frame, return the corresponding slot number. In other cases, return -1.
        Specified by:
        getLocalSlotNumber in interface Binding
      • getAction

        public Expression getAction()
        Get the action expression
      • setSequence

        public void setSequence​(Expression sequence)
        Set the "sequence" expression - the one to which the variable is bound
      • getSequence

        public Expression getSequence()
        Get the "sequence" expression - the one to which the variable is bound
      • setSlotNumber

        public void setSlotNumber​(int nr)
        Set the slot number for the range variable
      • getRequiredSlots

        public int getRequiredSlots()
        Get the number of slots required. Normally 1, except for a FOR expression with an AT clause, where it is 2.
      • promote

        public Expression promote​(PromotionOffer offer)
                           throws XPathException
        Promote this expression if possible
        Specified by:
        promote in interface Expression
        Overrides:
        promote in class ComputedExpression
        Parameters:
        offer - details of the offer, for example the offer to move expressions that don't depend on the context to an outer level in the containing expression
        Returns:
        if the offer is not accepted, return this expression unchanged. Otherwise return the result of rewriting the expression to promote this subexpression
        Throws:
        XPathException - if any error is detected
      • suppressValidation

        public void suppressValidation​(int validationMode)
        Suppress validation on contained element constructors, on the grounds that the parent element is already performing validation. The default implementation does nothing.
        Overrides:
        suppressValidation in class ComputedExpression
      • extendBindingList

        protected Binding[] extendBindingList​(Binding[] in)
        Extend an array of variable bindings to include the binding(s) defined in this expression
      • promoteWhereClause

        protected Expression promoteWhereClause​(Binding positionBinding)
        Promote a WHERE clause whose condition doesn't depend on the variable being bound. This rewrites an expression of the form

        let $i := SEQ return if (C) then R else ()

        to the form:

        if (C) then (let $i := SEQ return R) else ()

      • replaceSubExpression

        public boolean replaceSubExpression​(Expression original,
                                            Expression replacement)
        Replace one subexpression by a replacement subexpression
        Specified by:
        replaceSubExpression in interface Container
        Overrides:
        replaceSubExpression in class ComputedExpression
        Parameters:
        original - the original subexpression
        replacement - the replacement subexpression
        Returns:
        true if the original subexpression is found
      • getVariableNameCode

        public int getVariableNameCode()
      • getVariableFingerprint

        public int getVariableFingerprint()
      • getVariableName

        public java.lang.String getVariableName​(NamePool pool)
        Get the display name of the range variable, for diagnostics only