blob: c26795a3115f8bb16174163a58b3a5a9dcc25183 [file] [log] [blame]
James Graham3243c6b2012-10-15 08:34:081<!doctype html>
2<meta charset="utf8">
3<title>XPath in text/html: elements</title>
Philippe Le Hegaret0c37e5f2012-10-23 03:55:114<link rel="help" href="http://www.w3.org/TR/DOM-Level-3-XPath/xpath.html#Interfaces">
James Graham3243c6b2012-10-15 08:34:085<script src="/resources/testharness.js"></script>
6<script src="/resources/testharnessreport.js"></script>
7<body>
8<div id="log"><span></span></div>
9<div><span></span></div>
10<dØdd></dØdd>
11<svg>
12<path />
13<path />
14</svg>
15
16<script>
17function test_xpath_succeeds(path, expected, resolver) {
18 resolver = resolver ? resolver : null;
19 var res = document.evaluate(path, document, resolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
20 actual = [];
21 for (var i=0;;i++) {
22 var node = res.snapshotItem(i);
23 if (node === null) {
24 break;
25 }
26 actual.push(node);
27 }
28 assert_array_equals(actual, expected);
29}
30
31function test_xpath_throws(path, error_code, resolver) {
32 resolver = resolver ? resolver : null;
33 assert_throws(error_code, function() {document.evaluate(path, document, resolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null)})
34}
35
36function ns_resolver(x) {
37 map = {"html":"http://www.w3.org/1999/xhtml",
38 "svg":"http://www.w3.org/2000/svg",
39 "math":"http://www.w3.org/1998/Math/MathML"};
40 var rv = map.hasOwnProperty(x) ? map[x] : null;
41 return rv;
42}
43
44generate_tests(test_xpath_succeeds,[
45 ["HTML elements no namespace prefix", "//div", document.getElementsByTagName("div")],
46 ["HTML elements namespace prefix", "//html:div", document.getElementsByTagName("div"), ns_resolver],
47 ["HTML elements mixed use of prefix", "//html:div/span", document.getElementsByTagName("span"), ns_resolver],
48 ["SVG elements no namespace prefix", "//path", []],
49 ["SVG elements namespace prefix", "//svg:path", document.getElementsByTagName("path"), ns_resolver],
50 ["HTML elements mixed case", "//DiV", document.getElementsByTagName("div")],
51 ["SVG elements mixed case selector", "//svg:PatH", [], ns_resolver],
52 ["Non-ascii HTML element", "//dØdd", document.getElementsByTagName("dØdd"), ns_resolver],
53 ["Non-ascii HTML element2", "//dødd", [], ns_resolver],
James Grahamb509ca52014-08-18 14:33:0654 ["Non-ascii HTML element3", "//DØDD", document.getElementsByTagName("dØdd"), ns_resolver]
James Graham3243c6b2012-10-15 08:34:0855])
56
57generate_tests(test_xpath_throws, [
58 ["Throw with invalid prefix", "//invalid:path", "NAMESPACE_ERR"],
59])
60</script>