1<html> 2<head> 3<link rel="stylesheet" href="../../js/resources/js-test-style.css"> 4<script src="../../js/resources/js-test-pre.js"></script> 5<script src="../xpath-test-pre.js"></script> 6</head> 7<body> 8<div id="console"></div> 9 10<script> 11var doc = (new DOMParser).parseFromString( 12 '<doc id="0">' + 13 '<item id="1" />' + 14 '<group id="g1">' + 15 '<item id="2" />' + 16 '<group id="g2">' + 17 '<item id="3" />' + 18 '</group>' + 19 '<item id="4" />' + 20 '<item id="5" />' + 21 '</group>' + 22 '<item id="6" />' + 23 '<choice index="2" />' + 24 '</doc>', 25 'application/xml'); 26 27var ROOT = doc.documentElement; 28var I1 = ROOT.firstChild; 29var G1 = I1.nextSibling; 30var I2 = G1.firstChild; 31var G2 = I2.nextSibling; 32var I3 = G2.firstChild; 33var I4 = G2.nextSibling; 34var I5 = I4.nextSibling; 35var I6 = G1.nextSibling; 36 37test(doc, doc.documentElement, '//item[@id >= 2 and @id <= 4]', [I2, I3, I4]); 38test(doc, doc.documentElement, '/doc/child::item[1]', [I1]); 39test(doc, doc.documentElement, '//group[@id="g2"]/ancestor::*[1]', [G1]); 40test(doc, doc.documentElement, '//item[@id="2"]/following-sibling::item[1]', [I4]); 41test(doc, doc.documentElement, '//item[@id="5"]/preceding-sibling::item[1]', [I4]); 42test(doc, doc.documentElement, '//group[@id="g2"]/following::item[1]', [I4]); 43test(doc, doc.documentElement, '//group[@id="g2"]/preceding::item[1]', [I2]); 44test(doc, doc.documentElement, '//group[@id="g1"]/descendant-or-self::item[1]', [I2]); 45test(doc, doc.documentElement, '//group[@id="g2"]/ancestor-or-self::*[1]', [G2]); 46test(doc, doc.documentElement, '//group/descendant::item[number(//choice/@index)*2]', [I5]); 47test(doc, doc.documentElement, '(//item[@id="5"]/preceding-sibling::item)[1]', [I2]); 48 49 50var successfullyParsed = true; 51 52</script> 53<script src="../../js/resources/js-test-post.js"></script> 54</body> 55</html> 56