files/en-us/web/api/xpathevaluator/createexpression/index.md
{{APIRef("DOM")}}
This method compiles an {{domxref("XPathExpression")}} which can then be used for (repeated) evaluations of the {{Glossary("XPath")}} expression.
createExpression(expression)
createExpression(expression, resolver)
expression
resolver {{optional_inline}}
null, or any object implementing the {{domxref("Node/lookupNamespaceURI", "lookupNamespaceURI")}} method. Permits translation of all prefixes, including the xml namespace prefix, within the XPath expression into appropriate namespace URIs.A {{domxref("XPathExpression")}} representing the compiled form of the XPath expression.
If the expression is not legal according to the rules of the
XPathEvaluator, a {{domxref("DOMException")}} of type
INVALID_EXPRESSION_ERR is raised.
If the expression contains namespace prefixes which cannot be resolved by the specified
XPathNSResolver, a {{domxref("DOMException")}} of type
NAMESPACE_ERROR is raised.
The following example shows the use of the evaluate() method.
<div>XPath example</div>
<div>Number of <div>s: <output></output></div>
const xpath = "//div";
const evaluator = new XPathEvaluator();
const expression = evaluator.createExpression(xpath);
const result = expression.evaluate(
document,
XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
);
document.querySelector("output").textContent = result.snapshotLength;
{{EmbedLiveSample('Examples')}}
{{Specifications}}
{{Compat}}