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