L'API XPath dispose de plusieurs interfaces destinées à résoudre des fonctions et des variables utilisateurs contenues dans une expression XPath.

L'interface XPathVariableResolver contient une seule méthode, en l'occurrence, resolveVariable(). Cette dernière pren un argument QName qui identifie la variable et retourne un objet correspondant au modèle d'objet sous-jacent.

XPathVariableResolver resolveurVariable = 
                              xpath.getXPathVariableResolver();
QName uneVariable = new QName("uneVariable");
Object resultat = 
               resolveurVariable.resolveVariable(uneVariable);

L'interface XPathFunctionResolver contient une méthode resolveFunction(), laquelle compte deux arguments. Le premier est le nom de la fonction et le second le nombre de paramètres que cette fonction attend.

XPathFunctionResolver resolveurFonction = 
                              xpath.getXPathFunctionResolver();
QName uneFonction = new QName("uneFonction");
XPathFunction fonctionXPath = 
             resolveurFonction.resolveFunction(uneFonction, 3);

La méthode resolveFunction() retourne un objet XPathFunction. Ce dernier possède également une méthode, evaluate(). Une liste d'arguments, contenant un nombre d'éléments correspondant au nombre de paramètres indiqué das la fonction resolveFuntion(), doit être passée à la méthode evaluate(), laquelle retourne un résultat sous la forme d'un objet.

ArrayList liste = new ArrayList();
liste.add("argument 1");
liste.add("argument 2");
liste.add("argument 3");
Object resultat = fonctionXPath.evaluate(liste);

La méthode reset() réinitialise l'objet XPath à sa configuration initiale, soit celle au moment de sa création. Toutefois, bien que les objets affectés (XPathFunctionResolver, XPathVariableResolver et NamespaceContext) risquent de na pas être les mêmes, leur fonctionnement sera équivalent.

Les objets XPath possèdent des méthodes renvoyant ou assignant des objets XPathFunctionResolver et XPathVariableResolver. Les fabriques XPathFactory disposent également des mêmes méthodes d'affectation. Les objets affectés seront, lors de la création d'un objet XPath, inclus dans ce dernier.

public class ResolutionFonction 
                     implements XPathFunctionResolver {
  public void resolveFunction(QName functionName, int arity){
    //Implémentation...
  }
}
public class ResolutionVariable 
                     implements XPathVariableResolver {
  public Object resolveVariable(QName variableName){
    //Implémentation...
  }
}
XPathFactory fabrique = XPathFactory.newInstance();
XPathFunctionResolver unResolveurFonction = 
                              new ResolutionFonction()
fabrique.setXPathFunctionResolver(unResolveurFonction);
fabrique.setXPathVariableResolver(unResolveurVariable);

XPath xpath = fabrique.newXPath();
xpath.setXPathFunctionResolver(unResolveurFonction);
XPathVariableResolver unResolveurVariable = 
                              new ResolutionVariable()
xpath.setXPathVariableResolver(unResolveurVariable);
XPathFunctionResolver resolveurFonction = 
                              xpath.getXPathFunctionResolver();
XPathVariableResolver resolveurVariable = 
                              xpath.getXPathVariableResolver();

Les interfaces XPathFunctionResolver, XPathFunction et XPathVariableResolver sont destinées à être implémentées par l'application et ensuite doivent être assignés à l'objet XPathFactory ou XPath.