Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

<!DOCTYPE html>
<html>
<head>
<title>Tree order of node sets during evaluation</title>
<link rel="author" title="Simon Wülker" href="mailto:simon.wuelker@arcor.de">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<div id="container">
<span></span>
<p id="p"></p>
</div>
<script>
function toArray(result) {
var a = [];
while (true) {
var node = result.iterateNext();
if (node === null) break;
a.push(node);
}
return a;
}
let container = document.getElementById("container");
test(() => {
// If the result of "(./p | ./span)" is not in tree order then "last()" will filter the wrong element,
// causing the span to be returned.
let result = document.evaluate("(./p | ./span)[last()]", container, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
assert_array_equals(toArray(result), [document.getElementById("p")])
}, "Temporary node sets created during evaluation must be in tree order");
</script>
</body>
</html>