Class XSLFunction

All Implemented Interfaces:
Source, SourceLocator, ActiveSource, GroundedValue, Item, MutableNodeInfo, NamespaceResolver, NodeInfo, Sequence, Location, StylesheetComponent, SteppingNode, SiblingCountingNode, Locator

public class XSLFunction extends StyleElement implements StylesheetComponent
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.
  • Constructor Details

    • XSLFunction

      public XSLFunction()
  • Method Details

    • getActor

      public UserFunction getActor()
      Get the corresponding Procedure object that results from the compilation of this StylesheetProcedure
      Specified by:
      getActor in interface StylesheetComponent
      Returns:
      the compiled ComponentCode
    • 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

      protected void prepareAttributes()
      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
    • 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.
      Overrides:
      getObjectName in class StyleElement
      Returns:
      the name of the object declared in this element, if any
    • mayContainSequenceConstructor

      protected 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()
      Description copied from class: StyleElement
      Determine whether this type of element is allowed to contain an xsl:param element
      Overrides:
      mayContainParam in class StyleElement
      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.
    • getVisibility

      public Visibility getVisibility()
      Description copied from class: StyleElement
      Get the visibility of the component. Returns the actual value of the visibility attribute, after validation, unless this is absent, in which case it returns the default value of PRIVATE. Invokes StyleElement.invalidAttribute(String, String) if the value is invalid.
      Overrides:
      getVisibility in class StyleElement
      Returns:
      the declared visibility of the component, or Visibility.PRIVATE if the visibility attribute is absent.
    • getSymbolicName

      public SymbolicName.F getSymbolicName()
      Description copied from interface: StylesheetComponent
      Get the symbolic name of the component, that is, the combination of the component kind and the qualified name
      Specified by:
      getSymbolicName in interface StylesheetComponent
      Returns:
      the component's symbolic name
    • checkCompatibility

      public void checkCompatibility(Component component)
      Description copied from interface: StylesheetComponent
      Check the compatibility of this component with another component that it is overriding
      Specified by:
      checkCompatibility in interface StylesheetComponent
      Parameters:
      component - the overridden component
    • isOverrideExtensionFunction

      public boolean isOverrideExtensionFunction()
      Is override-extension-function="yes"?.
      Returns:
      true if override-extension-function="yes" was specified, otherwise false
    • isUpdating

      public boolean isUpdating()
    • index

      public void index(ComponentDeclaration decl, PrincipalStylesheetModule top)
      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 - represents the outermost XSLStylesheet or XSLPackage element
    • validate

      public void validate(ComponentDeclaration 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(Compilation compilation, ComponentDeclaration 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:
      compilation - the compilation episode
      decl - the containing top-level declaration, for example xsl:function or xsl:template
      Throws:
      XPathException - if compilation fails
    • optimize

      public void optimize(ComponentDeclaration declaration) throws XPathException
      Description copied from interface: StylesheetComponent
      Optimize the stylesheet construct
      Specified by:
      optimize in interface StylesheetComponent
      Parameters:
      declaration - the combination of the source XSLT element defining the component, and the module in which it appears
      Throws:
      XPathException - if an error is found at this stage (which shouldn't really happen)
    • getSlotManager

      public SlotManager getSlotManager()
      Get associated stack frame details.
      Specified by:
      getSlotManager in interface StylesheetComponent
      Returns:
      the associated SlotManager 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
    • getNumberOfParameters

      public int getNumberOfParameters()
      Get the number of parameters declared by this function (that is, its arity).
      Returns:
      the arity of the function
    • getNumberOfOptionalParameters

      public int getNumberOfOptionalParameters()
      Get the number of optional parameters declared by this function
      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
    • getArgumentTypes

      public SequenceType[] getArgumentTypes()
      Get the argument types
      Returns:
      the declared types of the arguments
    • getCompiledFunction

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