public String findString(String expr)
            throws XPathExpressionException
    {
        // First assume that the expression returns a Node or NodeList
        try
        {
            List<String> list = findStrings(expr);
            return list.isEmpty() ? null : list.get(0);
        }
        catch(XPathExpressionException xpee) { /* ignore */ }
        
        // If that fails, try again assuming the expression returns a String
        return (String) evaluateXPath(expr, STRING);
    }