<html> 
<head>
<title>Traversal Test</title> 
</head> 
<body>

  <h2>XML doc elements:</h2>
  <div style="font-family: Courier; font-size: 14;">
    <script type="text/javascript" charset="utf-8">

    if (window.layoutTestController)
        layoutTestController.dumpAsText();

      var dataURL = 'resources/node-iterator-009-data.xml';
      function fetchXML()
      {
        var request = new XMLHttpRequest();
        request.open("GET", dataURL, false /* sync */);
        request.overrideMimeType("application/xml");
        request.send();

        if (request.readyState == 4) {
          // only if "OK"
          if (request.status == 200 || (request.status == 0 && request.responseText.length > 0))
              walkXML(request.responseXML);
        }
      }

      function testNodeFiter(n)
      {
          if (n.tagName == 'studio') return NodeFilter.FILTER_SKIP;
          return NodeFilter.FILTER_ACCEPT;
      }

      function walkXML(xmlDoc)
      {
        var iter = document.createTreeWalker(xmlDoc, NodeFilter.SHOW_ELEMENT, testNodeFiter, false);
        var curNode;
        while (curNode = iter.nextNode()) {
          document.write('<h3>' + curNode.tagName + '</h3><p>' + curNode.textContent + '</p>');
        }
      }
      fetchXML();

    </script>
  </div>
</body>
</html>
