We can now use XPaths like:new PackageFunctions("java.util.", "util")
"util:Date.new()"
new java.util.Date()
"util:Collections.singleton('foo')"
java.util.Collections.singleton("foo")
"util:substring('foo', 1, 2)"
"foo".substring(1, 2)
. Note that in this case, the class prefix is not used. JXPath does not check that the first parameter of the function (the method target) is in fact a member of the package described by this PackageFunctions object.If the first argument of a method or constructor is ExpressionContext, the expression context in which the function is evaluated is passed to the method.
There is one PackageFunctions object registered by default with each JXPathContext. It does not have a namespace and uses no class prefix. The existence of this object allows us to use XPaths like: "java.util.Date.new()"
and "length('foo')"
without the explicit registration of any extension functions.
|
|
|
|