chromium/third_party/blink/web_tests/fast/xpath/py-dom-xpath/predicates.html

<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>