55 lines
1.8 KiB
HTML
55 lines
1.8 KiB
HTML
<body>
|
|
<script>
|
|
if (window.testRunner)
|
|
testRunner.dumpAsText();
|
|
|
|
src = '<doc><elem>a<![CDATA[b]]>c</elem></doc>';
|
|
doc = (new DOMParser).parseFromString(src, "application/xml");
|
|
|
|
elem = doc.documentElement.firstChild;
|
|
aText = elem.firstChild;
|
|
bText = elem.firstChild.nextSibling;
|
|
cText = elem.lastChild;
|
|
|
|
function test(expr, context) {
|
|
nodeset = doc.evaluate(expr, context, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
|
|
str = "";
|
|
while (currNode = nodeset.iterateNext()) {
|
|
if (str)
|
|
str += " ";
|
|
str += currNode.nodeValue;
|
|
}
|
|
|
|
document.write(expr + ", " + (context.nodeValue ? context.nodeValue : context) + ": \"" + str + "\"<br>");
|
|
}
|
|
|
|
document.write("<xmp>" + src + "</xmp>");
|
|
|
|
test("child::*", elem);
|
|
test("child::node()", elem);
|
|
test("descendant::*", elem);
|
|
test("descendant::node()", elem);
|
|
test("descendant::node()[2]", elem);
|
|
test("ancestor-or-self::node()", bText);
|
|
test("ancestor-or-self::*", bText);
|
|
test("ancestor-or-self::node()", aText);
|
|
test("ancestor-or-self::*", aText);
|
|
test("following::node()", elem);
|
|
test("following::node()", aText);
|
|
test("following::text()", aText);
|
|
test("following::node()", bText);
|
|
test("following-sibling::node()", elem);
|
|
test("following-sibling::node()", aText);
|
|
test("following-sibling::text()", aText);
|
|
test("following-sibling::node()", bText);
|
|
test("preceding::node()", bText);
|
|
test("preceding-sibling::node()", bText);
|
|
test("preceding::node()", cText);
|
|
test("preceding::text()", cText);
|
|
test("preceding-sibling::node()", cText);
|
|
test("preceding-sibling::text()", cText);
|
|
test("self::node()", bText);
|
|
|
|
</script>
|
|
</body>
|