public XObject execute(XPathContext xctxt) throws javax.xml.transform.TransformerException
  {

    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))
    {
      try
      {
        if (null == m_functionTable) m_functionTable = new FunctionTable();
        return m_functionTable.functionAvailable(methName) ? XBoolean.S_TRUE : XBoolean.S_FALSE;
      }
      catch (Exception e)
      {
        return XBoolean.S_FALSE;
      }
    }
    else
    {
      //dml
      ExtensionsProvider extProvider = (ExtensionsProvider)xctxt.getOwnerObject();
      return extProvider.functionAvailable(namespace, methName)
             ? XBoolean.S_TRUE : XBoolean.S_FALSE;
    }
  }
public XObject execute ( XPathContext xctxt ) throws javax . xml . transform . TransformerException { 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 ) ) { try { if ( null == m_functionTable ) m_functionTable = new FunctionTable ( ) ; return m_functionTable . functionAvailable ( methName ) ? XBoolean . S_TRUE : XBoolean . S_FALSE ; } catch ( Exception e ) { return XBoolean . S_FALSE ; } } else { ExtensionsProvider extProvider = ( ExtensionsProvider ) xctxt . getOwnerObject ( ) ; return extProvider . functionAvailable ( namespace , methName ) ? XBoolean . S_TRUE : XBoolean . S_FALSE ; } }
Execute the function.  The function must return
a valid object.
@param xctxt The current execution context.
@return A valid XObject.

@throws javax.xml.transform.TransformerException