Class XSLFunction

All Implemented Interfaces:
Serializable, Source, SourceLocator, LocationProvider, SaxonLocator, PullEvent, Container, FingerprintedNode, Item<NodeInfo>, MutableNodeInfo, NamespaceResolver, NodeInfo, ValueRepresentation<NodeInfo>, StylesheetProcedure, InstructionInfo, SiblingCountingNode, Locator

public class XSLFunction extends StyleElement implements StylesheetProcedure
Handler for xsl:function elements in stylesheet (XSLT 2.0).
Attributes:
name gives the name of the function saxon:memo-function=yes|no indicates whether it acts as a memo function.
See Also:
  • Field Details

  • Constructor Details

    • XSLFunction

      public XSLFunction()
  • Method Details

    • registerReference

      public void registerReference(UserFunctionCall ref)
      Method called by UserFunctionCall to register the function call for subsequent fixup.
      Parameters:
      ref - the UserFunctionCall to be registered
    • isDeclaration

      public boolean isDeclaration()
      Ask whether this node is a declaration, that is, a permitted child of xsl:stylesheet (including xsl:include and xsl:import).
      Overrides:
      isDeclaration in class StyleElement
      Returns:
      true for this element
    • prepareAttributes

      public void prepareAttributes() throws XPathException
      Description copied from class: StyleElement
      Set the attribute list for the element. This is called to process the attributes (note the distinction from processAttributes in the superclass). Must be supplied in a subclass
      Specified by:
      prepareAttributes in class StyleElement
      Throws:
      XPathException - if a static error is detected
    • getObjectName

      public StructuredQName getObjectName()
      Get a name identifying the object of the expression, for example a function name, template name, variable name, key name, element name, etc. This is used only where the name is known statically. If there is no name, the value will be -1.
      Specified by:
      getObjectName in interface InstructionInfo
      Overrides:
      getObjectName in class StyleElement
      Returns:
      the name of the object declared in this element, if any
    • mayContainSequenceConstructor

      public boolean mayContainSequenceConstructor()
      Determine whether this type of element is allowed to contain a template-body.
      Overrides:
      mayContainSequenceConstructor in class StyleElement
      Returns:
      true: yes, it may contain a general template-body
    • mayContainParam

      protected boolean mayContainParam(String attName)
      Description copied from class: StyleElement
      Determine whether this type of element is allowed to contain an xsl:param element
      Overrides:
      mayContainParam in class StyleElement
      Parameters:
      attName - if null, the method tests whether an xsl:param child is allowed. If non-null, it tests whether an xsl:param child with the given attribute name is allowed
      Returns:
      true if this element is allowed to contain an xsl:param
    • isPermittedChild

      protected boolean isPermittedChild(StyleElement child)
      Specify that xsl:param is a permitted child
      Overrides:
      isPermittedChild in class StyleElement
      Parameters:
      child - the child that may or may not be permitted
      Returns:
      true if the child is permitted.
    • isOverriding

      public boolean isOverriding()
      Is override="yes"?.
      Returns:
      true if override="yes" was specified, otherwise false
    • index

      protected void index(Declaration decl, PrincipalStylesheetModule top) throws XPathException
      Description copied from class: StyleElement
      Method supplied by declaration elements to add themselves to a stylesheet-level index
      Overrides:
      index in class StyleElement
      Parameters:
      decl - the Declaration being indexed. (This corresponds to the StyleElement object except in cases where one module is imported several times with different precedence.)
      top - the outermost XSLStylesheet element
      Throws:
      XPathException - if any error is encountered
    • fixupReferences

      public void fixupReferences() throws XPathException
      Notify all references to this function of the data type.
      Overrides:
      fixupReferences in class StyleElement
      Throws:
      XPathException
    • validate

      public void validate(Declaration decl) throws XPathException
      Description copied from class: StyleElement
      Check that the stylesheet element is valid. This is called once for each element, after the entire tree has been built. As well as validation, it can perform first-time initialisation. The default implementation does nothing; it is normally overriden in subclasses.
      Overrides:
      validate in class StyleElement
      Parameters:
      decl - the declaration to be validated
      Throws:
      XPathException - if any error is found during validation
    • compileDeclaration

      public void compileDeclaration(Executable exec, Declaration decl) throws XPathException
      Compile the function definition to create an executable representation The compileDeclaration() method has the side-effect of binding all references to the function to the executable representation (a UserFunction object)
      Overrides:
      compileDeclaration in class StyleElement
      Parameters:
      exec - the Executable
      decl - the containing top-level declaration, for example xsl:function or xsl:template
      Throws:
      XPathException
    • typeCheckBody

      public void typeCheckBody() throws XPathException
      Throws:
      XPathException
    • optimize

      public void optimize(Declaration declaration) throws XPathException
      Description copied from interface: StylesheetProcedure
      Optimize the stylesheet construct
      Specified by:
      optimize in interface StylesheetProcedure
      Throws:
      XPathException
    • getSlotManager

      public SlotManager getSlotManager()
      Get associated Procedure (for details of stack frame).
      Specified by:
      getSlotManager in interface StylesheetProcedure
      Returns:
      the associated Procedure object
    • getResultType

      public SequenceType getResultType()
      Get the type of value returned by this function
      Returns:
      the declared result type, or the inferred result type if this is more precise
    • getNumberOfArguments

      public int getNumberOfArguments()
      Get the number of arguments declared by this function (that is, its arity).
      Returns:
      the arity of the function
    • setParameterDefinitions

      public void setParameterDefinitions(UserFunction fn)
      Set the definitions of the parameters in the compiled function, as an array.
      Parameters:
      fn - the compiled object representing the user-written function
    • getCompiledFunction

      public UserFunction getCompiledFunction()
      Get the compiled function
      Returns:
      the object representing the compiled user-written function
    • getConstructType

      public int getConstructType()
      Get the type of construct. This will be a constant in class Location. This method is part of the InstructionInfo interface
      Specified by:
      getConstructType in interface InstructionInfo
      Overrides:
      getConstructType in class StyleElement
      Returns:
      an integer identifying the kind of construct