| <!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> |