<!doctype html> <title>XPath tests</title> <script src='/resources/testharness.js'></script> <script src='/resources/testharnessreport.js'></script> <script> setup({ explicit_done: true }); function find_child_element(context, element) { for (var i = 0; i < context.childNodes.length; i++) { var child = context.childNodes[i]; if (child.nodeType === Node.ELEMENT_NODE && child.tagName === element) return child; } } function xpath_test(test_el) { /* note this func adopts the tree! */ var new_doc = document.implementation.createDocument("", ""); var xpath = find_child_element(test_el, "xpath"); var tree = find_child_element(test_el, "tree"); var actual_tree = new_doc.adoptNode(tree.firstElementChild); new_doc.appendChild(actual_tree); test(function() { var result = new_doc.evaluate(xpath.textContent, // expression actual_tree, // context node new_doc.createNSResolver(actual_tree), // resolver XPathResult.ANY_TYPE, // type null); // result var matched = []; var cur; while ((cur = result.iterateNext()) !== null) { matched.push(cur); } assert_equals(matched.length, 1, "Should match one node"); }); } var xhr = new XMLHttpRequest(); xhr.open("GET", "xml_xpath_tests.xml"); xhr.onload = function(e) { var tests = xhr.responseXML.documentElement; for (var i = 0; i < tests.childNodes.length; i++) { var child = tests.childNodes[i]; if (child.nodeType === Node.ELEMENT_NODE) { xpath_test(child); } } done(); }; xhr.send(); </script>