<html>
<head>
<script src="../../resources/js-test.js"></script>
<script src="xpath-test-pre.js"></script>
</head>
<body>
<p>This tests that XPath expressions with prefixes work correctly.</p>
<div id="console"></div>
<script>
var xmlString = '<ns:foo xmlns:ns="http://www.example.org" xmlns:foo="urn:foobar"/>';
var doc = (new DOMParser()).parseFromString(xmlString, "text/xml");
var contextNode = doc.documentElement;
var nsResolver = document.createNSResolver(contextNode);
var expr = doc.createExpression("/ns:foo", nsResolver);
var result = expr.evaluate(contextNode, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
checkSnapshot("/ns:foo", result, [doc.documentElement]);
var expr = doc.createExpression("/ns:*", nsResolver);
var result = expr.evaluate(contextNode, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
checkSnapshot("/ns:*", result, [doc.documentElement]);
var expr = doc.createExpression("/foo:*", nsResolver);
var result = expr.evaluate(contextNode, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
checkSnapshot("/foo:*", result, []);
// Now try a resolver originating from the function
var namespaces = { xmpl: "http://www.example.org" };
var mapResolver = function(prefix) { return namespaces[prefix]; };
var expr = doc.createExpression("/xmpl:*", mapResolver);
var result = expr.evaluate(contextNode, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
checkSnapshot("/xmpl:*", result, [doc.documentElement]);
var evaluator = new XPathEvaluator();
var result = evaluator.evaluate("/xmpl:*", doc, mapResolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
checkSnapshot("/xmpl:*", result, [doc.documentElement]);
</script>
</body>
</html>