Home | History | Annotate | Download | only in xpath
      1 <body>
      2 <script>
      3     if (window.layoutTestController)
      4         layoutTestController.dumpAsText();
      5 
      6     src = '<doc><elem>a<![CDATA[b]]>c</elem></doc>';
      7     doc = (new DOMParser).parseFromString(src, "application/xml");
      8 
      9     elem = doc.documentElement.firstChild;
     10     aText = elem.firstChild;
     11     bText = elem.firstChild.nextSibling;
     12     cText = elem.lastChild;
     13 
     14     function test(expr, context) {
     15         nodeset = doc.evaluate(expr, context, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
     16         str = "";
     17         while (currNode = nodeset.iterateNext()) {
     18             if (str)
     19                 str += " ";
     20             str += currNode.nodeValue;
     21         }
     22         
     23         document.write(expr + ", " + (context.nodeValue ? context.nodeValue : context) + ": \"" + str + "\"<br>");
     24     }
     25 
     26     document.write("<xmp>" + src + "</xmp>");
     27 
     28     test("child::*", elem);
     29     test("child::node()", elem);
     30     test("descendant::*", elem);
     31     test("descendant::node()", elem);
     32     test("descendant::node()[2]", elem);
     33     test("ancestor-or-self::node()", bText);
     34     test("ancestor-or-self::*", bText);
     35     test("ancestor-or-self::node()", aText);
     36     test("ancestor-or-self::*", aText);
     37     test("following::node()", elem);
     38     test("following::node()", aText);
     39     test("following::text()", aText);
     40     test("following::node()", bText);
     41     test("following-sibling::node()", elem);
     42     test("following-sibling::node()", aText);
     43     test("following-sibling::text()", aText);
     44     test("following-sibling::node()", bText);
     45     test("preceding::node()", bText);
     46     test("preceding-sibling::node()", bText);
     47     test("preceding::node()", cText);
     48     test("preceding::text()", cText);
     49     test("preceding-sibling::node()", cText);
     50     test("preceding-sibling::text()", cText);
     51     test("self::node()", bText);
     52 
     53     var successfullyParsed = true;
     54 
     55 </script>
     56 </body>
     57