Execute the function. The function must return
a valid object.
String prefix;
String namespace;
String methName;
String fullName = m_arg0.execute(xctxt).str();
int indexOfNSSep = fullName.indexOf(':");
if (indexOfNSSep < 0)
{
prefix = "";
namespace = Constants.S_XSLNAMESPACEURL;
methName = fullName;
}
else
{
prefix = fullName.substring(0, indexOfNSSep);
namespace = xctxt.getNamespaceContext().getNamespaceForPrefix(prefix);
if (null == namespace)
return XBoolean.S_FALSE;
methName= fullName.substring(indexOfNSSep + 1);
}
if (namespace.equals(Constants.S_XSLNAMESPACEURL)
|| namespace.equals(Constants.S_BUILTIN_EXTENSIONS_URL)) {
// J2SE does not support Xalan interpretive
/*
try {
TransformerImpl transformer = (TransformerImpl) xctxt.getOwnerObject();
return transformer.getStylesheet().getAvailableElements().containsKey(
new QName(namespace, methName))
? XBoolean.S_TRUE : XBoolean.S_FALSE;
} catch (Exception e) {
return XBoolean.S_FALSE;
}
*/
return XBoolean.S_FALSE;
} else {
//dml
ExtensionsProvider extProvider = (ExtensionsProvider)xctxt.getOwnerObject();
return extProvider.elementAvailable(namespace, methName)
? XBoolean.S_TRUE : XBoolean.S_FALSE;
}