| java.lang.Object net.sf.saxon.query.UnboundFunctionLibrary
UnboundFunctionLibrary | public class UnboundFunctionLibrary implements FunctionLibrary(Code) | | An UnboundFunctionLibrary is not a real function library; rather, it is used to keep track of function calls
that cannot yet be bound to a known declared function, but will have to be bound when all user-declared functions
are available.
|
Method Summary | |
public Expression | bind(int nameCode, String uri, String local, Expression[] arguments) Identify a (namespace-prefixed) function appearing in the expression. | public void | bindUnboundFunctionCalls(XQueryFunctionBinder lib, Configuration config) Bind function calls that could not be bound when first encountered. | public FunctionLibrary | copy() This method creates a copy of a FunctionLibrary: if the original FunctionLibrary allows
new functions to be added, then additions to this copy will not affect the original, or
vice versa.
a copy of this function library. | public boolean | isAvailable(int fingerprint, String uri, String local, int arity) Test whether a function with a given name and arity is available. |
UnboundFunctionLibrary | public UnboundFunctionLibrary()(Code) | | Create an XQueryFunctionLibrary
|
bind | public Expression bind(int nameCode, String uri, String local, Expression[] arguments) throws XPathException(Code) | | Identify a (namespace-prefixed) function appearing in the expression. This
method is called by the XQuery parser to resolve function calls found within
the query.
Note that a function call may appear earlier in the query than the definition
of the function to which it is bound. Unlike XSLT, we cannot search forwards to
find the function definition. Binding of function calls is therefore a two-stage
process; at the time the function call is parsed, we simply register it as
pending; subsequently at the end of query parsing all the pending function
calls are resolved. Another consequence of this is that we cannot tell at the time
a function call is parsed whether it is a call to an internal (XSLT or XQuery)
function or to an extension function written in Java.
an Expression representing the function call. This will normally bea FunctionCall, but it may be rewritten as some other expression. throws: net.sf.saxon.trans.XPathException - if the function call is invalid, either because it isan unprefixed call to a non-system function, or because it is calling a systemfunction that is available in XSLT only. A prefixed function call that cannotbe recognized at this stage is assumed to be a forwards reference, and is boundlater when bindUnboundFunctionCalls() is called. |
bindUnboundFunctionCalls | public void bindUnboundFunctionCalls(XQueryFunctionBinder lib, Configuration config) throws XPathException(Code) | | Bind function calls that could not be bound when first encountered. These
will either be forwards references to functions declared later in the query,
or errors. This method is for internal use.
throws: net.sf.saxon.trans.StaticError - if a function call refers to a function that hasnot been declared |
copy | public FunctionLibrary copy()(Code) | | This method creates a copy of a FunctionLibrary: if the original FunctionLibrary allows
new functions to be added, then additions to this copy will not affect the original, or
vice versa.
a copy of this function library. This must be an instance of the original class. |
isAvailable | public boolean isAvailable(int fingerprint, String uri, String local, int arity)(Code) | | Test whether a function with a given name and arity is available. This supports
the function-available() function in XSLT. Since this library is used only in XQuery,
and contains no real functions, we always return false
Parameters: uri - The URI of the function name Parameters: local - The local part of the function name Parameters: arity - The number of arguments. This is set to -1 in the case of the single-argumentfunction-available() function; in this case the method should return true if there is somematching extension function, regardless of its arity. |
|
|