<!DOCTYPE html>
<html lang="en" foo='bar'>
  <head foo='bar'>
    <meta charset="utf-8" foo='bar'>
    <title id='title' foo='bar'>Foreign content</title>
    <link rel="author" title="Philippe Le Hegaret" href="mailto:plh@w3.org"  foo='bar'>
    <link rel="help" href="https://html.spec.whatwg.org/multipage/#extensibility"  foo='bar'>
    <script src="/resources/testharness.js"  foo='bar'></script>
    <script src="/resources/testharnessreport.js" foo='bar'></script>
  </head>

  <body foo='bar'>

    <p class='assert' foo='bar'>User agents must treat elements and attributes that they do not understand as semantically neutral; leaving them in the DOM (for DOM processors), and styling them according to CSS (for CSS processors), but not inferring any meaning from them.</p>

    <foo foo='bar' echo>Foobar</foo>

    <div id="log">Running test...</div>

    <script>
      var t = async_test("foreign content");

      on_event(window, "load",
               t.step_func(function() {
                 var nodes = document.getElementsByTagName("*");
                 var cont = true;
                 var last = null;
                 for(var i=0;i<nodes.length && cont; i++) {
                   var as = nodes.item(i).getAttribute("foo");
                   if (!(as === "bar") && (nodes.item(i).getAttribute("id") === "log")) {
                     cont = false;
                   } else {
                     last = nodes.item(i);
                     assert_equals(as, "bar");
                   }
                 }

                 assert_equals(last.nodeName, "FOO");
                 assert_equals(last.getAttribute("echo"), "");
                 assert_equals(last.getAttribute("charly"), null);
                 t.done();
               }));
    </script>
  </body>
</html>
