<html>
<head>
<script src="../../../resources/js-test.js"></script>
<script src="../xpath-test-pre.js"></script>
</head>
<body>
<div id="console"></div>
<script>
var doc = (new DOMParser).parseFromString(
'<doc id="0">' +
'<item id="1" />' +
'<group id="g1">' +
'<item id="2" />' +
'<group id="g2">' +
'<item id="3" />' +
'</group>' +
'<item id="4" />' +
'<item id="5" />' +
'</group>' +
'<item id="6" />' +
'<choice index="2" />' +
'</doc>',
'application/xml');
var ROOT = doc.documentElement;
var I1 = ROOT.firstChild;
var G1 = I1.nextSibling;
var I2 = G1.firstChild;
var G2 = I2.nextSibling;
var I3 = G2.firstChild;
var I4 = G2.nextSibling;
var I5 = I4.nextSibling;
var I6 = G1.nextSibling;
test(doc, doc.documentElement, '//item[@id >= 2 and @id <= 4]', [I2, I3, I4]);
test(doc, doc.documentElement, '/doc/child::item[1]', [I1]);
test(doc, doc.documentElement, '//group[@id="g2"]/ancestor::*[1]', [G1]);
test(doc, doc.documentElement, '//item[@id="2"]/following-sibling::item[1]', [I4]);
test(doc, doc.documentElement, '//item[@id="5"]/preceding-sibling::item[1]', [I4]);
test(doc, doc.documentElement, '//group[@id="g2"]/following::item[1]', [I4]);
test(doc, doc.documentElement, '//group[@id="g2"]/preceding::item[1]', [I2]);
test(doc, doc.documentElement, '//group[@id="g1"]/descendant-or-self::item[1]', [I2]);
test(doc, doc.documentElement, '//group[@id="g2"]/ancestor-or-self::*[1]', [G2]);
test(doc, doc.documentElement, '//group/descendant::item[number(//choice/@index)*2]', [I5]);
test(doc, doc.documentElement, '(//item[@id="5"]/preceding-sibling::item)[1]', [I2]);
</script>
</body>
</html>