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