preceding-axis.xhtml revision 5f90462bbf4efb0ac7bb65a852d5559d0ab30f0b
1<?xml version="1.0" encoding="utf-8"?>
2<!DOCTYPE html>
3<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
4<head>
5<title>XPath preceding axis misses nested elements</title>
6<style>div#msg { white-space: pre; }</style>
7<script>
8if (window.layoutTestController)
9    layoutTestController.dumpAsText();
10
11window.addEventListener("load", function() {
12    var msg = document.getElementById("msg");
13    function print(s) { msg.textContent += s; }
14    function id(el) { return el.tagName + (el.id ? "#" + el.id : ""); }
15    function query(el, xpath, expected) {
16        print("Query \"" + xpath + "\" from " + id(el) + "\n");
17        var res = document.evaluate(xpath,
18                                    el,
19                                    function() { return "http://www.w3.org/1999/xhtml"; },
20                                    XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
21                                    null);
22
23        var resstr = "";
24        for (var i = 0; i &lt; res.snapshotLength; i++) {
25            var el = res.snapshotItem(i);
26            resstr += " " + id(el);
27        }
28        print("Result:" + resstr + "\n");
29        print("Expected: " + expected + "\n");
30        if (resstr != (" " + expected)) {
31            print("***FAIL***\n");
32        } else {
33            print("***SUCCESS***\n");
34        }
35        print("\n");
36    }
37    
38    print("Querying in the following...\n\n");
39    print(document.getElementById("test").outerHTML + "\n\n");
40    
41    query(document.getElementById("D"), "preceding::xhtml:span", "span#A span#B span#C");
42}, false);
43</script>
44</head>
45<body>
46<div id="test">
47    <span id="A"/>
48    <div>
49      <span id="B">
50        <span id="C"/>
51      </span>
52    </div>
53    <span id="D"/>
54</div>
55<div id="msg"/>
56</body>
57</html>
58