predicates.html (864B)
1 <!DOCTYPE html> 2 <link rel="help" href="https://www.w3.org/TR/1999/REC-xpath-19991116/#predicates"> 3 <body> 4 <script src="/resources/testharness.js"></script> 5 <script src="/resources/testharnessreport.js"></script> 6 <script> 7 function nodesetToSet(result) { 8 const set = new Set(); 9 for (let node = result.iterateNext(); node; node = result.iterateNext()) { 10 set.add(node); 11 } 12 return set; 13 } 14 15 test(() => { 16 const doc = document.implementation.createHTMLDocument(); 17 doc.body.innerHTML = '<table></table>' + 18 '<table><tr><th><th><th><th></table>' + 19 '<table></table>'; 20 const result = nodesetToSet(doc.evaluate('(//table)[count((//table)[2]/descendant::th)-1]', doc.documentElement)); 21 assert_equals(result.size, 1); 22 assert_true(result.has(doc.body.lastChild)); 23 }, 'An expression in a predicate should not change the context node'); 24 </script> 25 </body>