Package net.sf.saxon.query
Class XQueryFunction
- java.lang.Object
-
- net.sf.saxon.query.XQueryFunction
-
- All Implemented Interfaces:
javax.xml.transform.SourceLocator
,LocationProvider
,SaxonLocator
,Container
,Declaration
,InstructionInfo
,org.xml.sax.Locator
public class XQueryFunction extends java.lang.Object implements InstructionInfo, Container, Declaration
-
-
Field Summary
Fields Modifier and Type Field Description (package private) java.util.List
arguments
(package private) Expression
body
(package private) int
columnNumber
(package private) int
lineNumber
(package private) boolean
memoFunction
(package private) NamespaceResolver
namespaceResolver
(package private) java.util.List
references
(package private) SequenceType
resultType
(package private) StaticContext
staticContext
(package private) java.lang.String
systemId
-
Constructor Summary
Constructors Constructor Description XQueryFunction()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
checkReferences(StaticContext env)
Type-check references to this functionUserFunction
compile(StaticQueryContext env)
void
explain(Configuration config)
Produce diagnostic output showing the compiled and optimized expression tree for a functionvoid
fixupReferences(StaticContext env)
Fix up references to this functionSequenceType[]
getArgumentTypes()
int
getColumnNumber()
Return the column numberint
getConstructType()
Get the type of construct.Executable
getExecutable()
Get the Executable (representing a complete stylesheet or query) of which this Container forms partjava.lang.String
getFunctionDisplayName(NamePool pool)
int
getFunctionFingerprint()
int
getHostLanguage()
Get the host language (XSLT, XQuery, XPath) used to implement the code in this containerint
getLineNumber()
Get the line number of the instruction in the source stylesheet module.int
getLineNumber(int locationId)
Get the line number within the document or module containing a particular locationLocationProvider
getLocationProvider()
Get the LocationProvider allowing location identifiers to be resolved.int
getNameCode()
NamespaceResolver
getNamespaceResolver()
Get the namespace context of the instruction.int
getNumberOfArguments()
int
getObjectNameCode()
Get a name identifying the object of the expression, for example a function name, template name, variable name, key name, element name, etc.UserFunctionParameter[]
getParameterDefinitions()
java.util.Iterator
getProperties()
Get an iterator over all the properties available.java.lang.Object
getProperty(java.lang.String name)
Get the value of a particular property of the instruction.java.lang.String
getPublicId()
Return the public identifier for the current document event.SequenceType
getResultType()
StaticContext
getStaticContext()
java.lang.String
getSystemId()
Get the system identifier (URI) of the source module containing the instruction.java.lang.String
getSystemId(int locationId)
Get the URI of the document or module containing a particular locationUserFunction
getUserFunction()
Get the callable compiled function contained within this XQueryFunction definition.boolean
isMemoFunction()
void
registerReference(UserFunctionCall ufc)
boolean
replaceSubExpression(Expression original, Expression replacement)
Replace one subexpression by a replacement subexpressionvoid
setExecutable(Executable exec)
void
setMemoFunction(boolean isMemoFunction)
void
setNameCode(int nameCode)
-
-
-
Field Detail
-
arguments
java.util.List arguments
-
resultType
SequenceType resultType
-
body
Expression body
-
references
java.util.List references
-
lineNumber
int lineNumber
-
columnNumber
int columnNumber
-
systemId
java.lang.String systemId
-
memoFunction
boolean memoFunction
-
namespaceResolver
NamespaceResolver namespaceResolver
-
staticContext
StaticContext staticContext
-
-
Method Detail
-
setNameCode
public void setNameCode(int nameCode)
-
getNameCode
public int getNameCode()
-
getFunctionDisplayName
public java.lang.String getFunctionDisplayName(NamePool pool)
-
getFunctionFingerprint
public int getFunctionFingerprint()
-
getResultType
public SequenceType getResultType()
-
setExecutable
public void setExecutable(Executable exec)
-
getExecutable
public 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 interfaceContainer
-
getLocationProvider
public LocationProvider getLocationProvider()
Get the LocationProvider allowing location identifiers to be resolved.- Specified by:
getLocationProvider
in interfaceContainer
-
getStaticContext
public StaticContext getStaticContext()
-
getArgumentTypes
public SequenceType[] getArgumentTypes()
-
getParameterDefinitions
public UserFunctionParameter[] getParameterDefinitions()
-
getNumberOfArguments
public int getNumberOfArguments()
-
registerReference
public void registerReference(UserFunctionCall ufc)
-
setMemoFunction
public void setMemoFunction(boolean isMemoFunction)
-
isMemoFunction
public boolean isMemoFunction()
-
compile
public UserFunction compile(StaticQueryContext env) throws StaticError
- Throws:
StaticError
-
fixupReferences
public void fixupReferences(StaticContext env) throws XPathException
Fix up references to this function- Throws:
XPathException
-
checkReferences
public void checkReferences(StaticContext env) throws XPathException
Type-check references to this function- Throws:
XPathException
-
explain
public void explain(Configuration config)
Produce diagnostic output showing the compiled and optimized expression tree for a function- Parameters:
config
- the configuration to be used
-
getUserFunction
public UserFunction getUserFunction()
Get the callable compiled function contained within this XQueryFunction definition.
-
getConstructType
public int getConstructType()
Get the type of construct. This will be a constant in classLocation
.- Specified by:
getConstructType
in interfaceInstructionInfo
-
getObjectNameCode
public int getObjectNameCode()
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.- Specified by:
getObjectNameCode
in interfaceInstructionInfo
-
getSystemId
public java.lang.String getSystemId()
Get the system identifier (URI) of the source 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 interfaceInstructionInfo
- Specified by:
getSystemId
in interfaceorg.xml.sax.Locator
- Specified by:
getSystemId
in interfacejavax.xml.transform.SourceLocator
-
getLineNumber
public int getLineNumber()
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 interfaceInstructionInfo
- Specified by:
getLineNumber
in interfaceorg.xml.sax.Locator
- Specified by:
getLineNumber
in interfacejavax.xml.transform.SourceLocator
-
getPublicId
public java.lang.String getPublicId()
Return the public identifier for the current document event.- Specified by:
getPublicId
in interfaceorg.xml.sax.Locator
- Specified by:
getPublicId
in interfacejavax.xml.transform.SourceLocator
- Returns:
- A string containing the public identifier, or null if none is available.
- See Also:
getSystemId()
-
getColumnNumber
public int getColumnNumber()
Return the column number- Specified by:
getColumnNumber
in interfaceorg.xml.sax.Locator
- Specified by:
getColumnNumber
in interfacejavax.xml.transform.SourceLocator
- Returns:
- The column number, or -1 if none is available.
- See Also:
getLineNumber()
-
getSystemId
public java.lang.String getSystemId(int locationId)
Description copied from interface:LocationProvider
Get the URI of the document or module containing a particular location- Specified by:
getSystemId
in interfaceLocationProvider
- Parameters:
locationId
- identifier of the location in question (as passed down the Receiver pipeline)- Returns:
- the URI of the document or module.
-
getLineNumber
public int getLineNumber(int locationId)
Description copied from interface:LocationProvider
Get the line number within the document or module containing a particular location- Specified by:
getLineNumber
in interfaceLocationProvider
- Parameters:
locationId
- identifier of the location in question (as passed down the Receiver pipeline)- Returns:
- the line number within the document or module.
-
getNamespaceResolver
public NamespaceResolver getNamespaceResolver()
Get the namespace context of the instruction. This will not always be available, in which case the method returns null.- Specified by:
getNamespaceResolver
in interfaceInstructionInfo
-
getProperty
public java.lang.Object getProperty(java.lang.String name)
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 interfaceInstructionInfo
- 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 java.util.Iterator 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.- Specified by:
getProperties
in interfaceInstructionInfo
-
getHostLanguage
public int getHostLanguage()
Get the host language (XSLT, XQuery, XPath) used to implement the code in this container- Specified by:
getHostLanguage
in interfaceContainer
- Returns:
- typically
Configuration.XSLT
orConfiguration.XQUERY
-
replaceSubExpression
public boolean replaceSubExpression(Expression original, Expression replacement)
Replace one subexpression by a replacement subexpression- Specified by:
replaceSubExpression
in interfaceContainer
- Parameters:
original
- the original subexpressionreplacement
- the replacement subexpression- Returns:
- true if the original subexpression is found
-
-