/** Evaluate an XPath expression as a boolean value. */
 public static boolean evaluateAsBoolean(
     PropertyContext propertyContext,
     List<Item> contextItems,
     int contextPosition,
     String xpathString,
     Map<String, String> prefixToURIMap,
     Map<String, ValueRepresentation> variableToValueMap,
     FunctionLibrary functionLibrary,
     FunctionContext functionContext,
     String baseURI,
     LocationData locationData) {
   final PooledXPathExpression xpathExpression =
       XPathCache.getXPathExpression(
           propertyContext,
           contextItems,
           contextPosition,
           "string(subsequence(" + xpathString + ", 1, 1))",
           prefixToURIMap,
           variableToValueMap,
           functionLibrary,
           baseURI,
           false,
           false,
           locationData);
   try {
     return xpathExpression.evaluateAsBoolean(functionContext);
   } catch (XPathException e) {
     throw handleXPathException(e, xpathString, "evaluating XPath expression", locationData);
   } finally {
     if (xpathExpression != null) xpathExpression.returnToPool();
   }
 }
 /**
  * Evaluate an XPath expression on the document as an attribute value template, and return its
  * string value.
  */
 public static String evaluateAsAvt(
     PropertyContext propertyContext,
     List<Item> contextItems,
     int contextPosition,
     String xpathString,
     Map<String, String> prefixToURIMap,
     Map<String, ValueRepresentation> variableToValueMap,
     FunctionLibrary functionLibrary,
     FunctionContext functionContext,
     String baseURI,
     LocationData locationData) {
   final PooledXPathExpression xpathExpression =
       XPathCache.getXPathExpression(
           propertyContext,
           contextItems,
           contextPosition,
           xpathString,
           prefixToURIMap,
           variableToValueMap,
           functionLibrary,
           baseURI,
           true,
           false,
           locationData);
   try {
     final Object result = xpathExpression.evaluateSingleKeepNodeInfo(functionContext);
     return (result != null) ? result.toString() : null;
   } catch (XPathException e) {
     throw handleXPathException(e, xpathString, "evaluating XPath expression", locationData);
   } finally {
     if (xpathExpression != null) xpathExpression.returnToPool();
   }
 }