Class Procedure

java.lang.Object
net.sf.saxon.expr.instruct.Procedure
All Implemented Interfaces:
Serializable, SourceLocator, LocationProvider, SaxonLocator, Container, InstructionInfo, Locator
Direct Known Subclasses:
AttributeSet, KeyDefinition, Template, UserFunction

public abstract class Procedure extends Object implements Serializable, Container, InstructionInfo, LocationProvider
This object represents the compiled form of a user-written function, template, attribute-set, etc (the source can be either an XSLT stylesheet function or an XQuery function).

It is assumed that type-checking, of both the arguments and the results, has been handled at compile time. That is, the expression supplied as the body of the function must be wrapped in code to check or convert the result to the required type, and calls on the function must be wrapped at compile time to check or convert the supplied arguments.

See Also:
  • Field Details

  • Constructor Details

    • Procedure

      public Procedure()
  • Method Details

    • getContainerGranularity

      public int getContainerGranularity()
      Get the granularity of the container.
      Specified by:
      getContainerGranularity in interface Container
      Returns:
      0 for a temporary container created during parsing; 1 for a container that operates at the level of an XPath expression; 2 for a container at the level of a global function or template
    • setBody

      public void setBody(Expression body)
    • setHostLanguage

      public void setHostLanguage(int language)
    • getHostLanguage

      public int getHostLanguage()
      Description copied from interface: Container
      Get the host language (XSLT, XQuery, XPath) used to implement the code in this container
      Specified by:
      getHostLanguage in interface Container
      Returns:
      typically Configuration.XSLT or Configuration.XQUERY
    • getBody

      public final Expression getBody()
    • setStackFrameMap

      public void setStackFrameMap(SlotManager map)
    • getStackFrameMap

      public SlotManager getStackFrameMap()
    • getExecutable

      public final Executable getExecutable()
      Description copied from interface: Container
      Get the Executable (representing a complete stylesheet or query) of which this Container forms part
      Specified by:
      getExecutable in interface Container
      Returns:
      the executable
    • setExecutable

      public void setExecutable(Executable executable)
    • getLocationProvider

      public LocationProvider getLocationProvider()
      Get the LocationProvider allowing location identifiers to be resolved.
      Specified by:
      getLocationProvider in interface Container
      Returns:
      the location provider
    • setLineNumber

      public void setLineNumber(int lineNumber)
    • setSystemId

      public void setSystemId(String systemId)
    • getLineNumber

      public int getLineNumber()
      Description copied from interface: InstructionInfo
      Get the line number of the instruction in the source stylesheet module. If this is not known, or if the instruction is an artificial one that does not relate to anything in the source code, the value returned may be -1.
      Specified by:
      getLineNumber in interface InstructionInfo
      Specified by:
      getLineNumber in interface Locator
      Specified by:
      getLineNumber in interface SourceLocator
      Returns:
      the line number of the expression within the containing module
    • getSystemId

      public String getSystemId()
      Description copied from interface: InstructionInfo
      Get the system identifier (URI) of the source stylesheet or query module containing the instruction. This will generally be an absolute URI. If the system identifier is not known, the method may return null. In some cases, for example where XML external entities are used, the correct system identifier is not always retained.
      Specified by:
      getSystemId in interface InstructionInfo
      Specified by:
      getSystemId in interface Locator
      Specified by:
      getSystemId in interface SourceLocator
      Returns:
      the URI of the containing module
    • getColumnNumber

      public int getColumnNumber()
      Specified by:
      getColumnNumber in interface Locator
      Specified by:
      getColumnNumber in interface SourceLocator
    • getPublicId

      public String getPublicId()
      Specified by:
      getPublicId in interface Locator
      Specified by:
      getPublicId in interface SourceLocator
    • getSystemId

      public String getSystemId(long locationId)
      Description copied from interface: LocationProvider
      Get the URI of the document, entity, or module containing a particular location
      Specified by:
      getSystemId in interface LocationProvider
      Parameters:
      locationId - identifier of the location in question (as passed down the Receiver pipeline)
      Returns:
      the URI of the document, XML entity or module. For a SourceLocationProvider this will be the URI of the document or entity (the URI that would be the base URI if there were no xml:base attributes). In other cases it may identify the query or stylesheet module currently being executed.
    • getLineNumber

      public int getLineNumber(long locationId)
      Description copied from interface: LocationProvider
      Get the line number within the document, entity or module containing a particular location
      Specified by:
      getLineNumber in interface LocationProvider
      Parameters:
      locationId - identifier of the location in question (as passed down the Receiver pipeline)
      Returns:
      the line number within the document, entity or module, or -1 if no information is available.
    • getColumnNumber

      public int getColumnNumber(long locationId)
      Description copied from interface: LocationProvider
      Get the column number within the document, entity, or module containing a particular location
      Specified by:
      getColumnNumber in interface LocationProvider
      Parameters:
      locationId - identifier of the location in question (as passed down the Receiver pipeline)
      Returns:
      the column number within the document, entity, or module, or -1 if this is not available
    • getProperty

      public Object getProperty(String name)
      Description copied from interface: InstructionInfo
      Get the value of a particular property of the instruction. Properties of XSLT instructions are generally known by the name of the stylesheet attribute that defines them.
      Specified by:
      getProperty in interface InstructionInfo
      Parameters:
      name - The name of the required property
      Returns:
      The value of the requested property, or null if the property is not available
    • getProperties

      public Iterator<String> getProperties()
      Get an iterator over all the properties available. The values returned by the iterator will be of type String, and each string can be supplied as input to the getProperty() method to retrieve the value of the property. The iterator may return properties whose value is null.
      Specified by:
      getProperties in interface InstructionInfo
      Returns:
      an iterator over the properties.