code: public XObject execute(
            XPathContext xctxt, int contextNode, PrefixResolver namespaceContext)
              throws javax.xml.transform.TransformerException
    {
  
      xctxt.pushNamespaceContext(namespaceContext);
  
      xctxt.pushCurrentNodeAndExpression(contextNode, contextNode);
  
      XObject xobj = null;
  
      try
      {
        xobj = m_mainExp.execute(xctxt);
      }
      catch (TransformerException te)
      {
        te.setLocator(this.getLocator());
        ErrorListener el = xctxt.getErrorListener();
        if(null != el) // defensive, should never happen.
        {
          el.error(te);
        }
        else
          throw te;
      }
      catch (Exception e)
      {
        while (e instanceof org.apache.xml.utils.WrappedRuntimeException)
        {
          e = ((org.apache.xml.utils.WrappedRuntimeException) e).getException();
        }
        // e.printStackTrace();
  
        String msg = e.getMessage();
        
        if (msg == null || msg.length() == 0) {
             msg = XSLMessages.createXPATHMessage(
                 XPATHErrorResources.ER_XPATH_ERROR, null);
       
        }  
        TransformerException te = new TransformerException(msg,
                getLocator(), e);
        ErrorListener el = xctxt.getErrorListener();
        // te.printStackTrace();
        if(null != el) // defensive, should never happen.
        {
          el.fatalError(te);
        }
        else
          throw te;
      }
      finally
      {
        xctxt.popNamespaceContext();
  
        xctxt.popCurrentNodeAndExpression();
      }
  
      return xobj;
    }
docs: Given an expression and a context, evaluate the XPath
  and return the result.
  
  @param xctxt The execution context.
  @param contextNode The node that "." expresses.
  @param namespaceContext The context in which namespaces in the
  XPath are supposed to be expanded.
  
  @throws TransformerException thrown if the active ProblemListener decides
  the error condition is severe enough to halt processing.
  
  @throws javax.xml.transform.TransformerException
  @xsl.usage experimental