| <!DOCTYPE html> |
| <link rel="help" href="https://www.w3.org/TR/1999/REC-xpath-19991116/#predicates"> |
| <body> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script> |
| function nodesetToSet(result) { |
| const set = new Set(); |
| for (let node = result.iterateNext(); node; node = result.iterateNext()) { |
| set.add(node); |
| } |
| return set; |
| } |
| |
| test(() => { |
| const doc = document.implementation.createHTMLDocument(); |
| doc.body.innerHTML = '<table></table>' + |
| '<table><tr><th><th><th><th></table>' + |
| '<table></table>'; |
| const result = nodesetToSet(doc.evaluate('(//table)[count((//table)[2]/descendant::th)-1]', doc.documentElement)); |
| assert_equals(result.size, 1); |
| assert_true(result.has(doc.body.lastChild)); |
| }, 'An expression in a predicate should not change the context node'); |
| </script> |
| </body> |