<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<body xmlns:â="urn:x-test:U+00E2" onload="onPageLoad()">
<p>This tests parsing XHTML that uses Unicode namespace prefixes. If the test succeeds you will see the word "PASS" below.</p>
<ê:test id="test" xmlns:ê="urn:x-test:U+00EA" â:âAttr="âValue"/>
<p id="result"></p>
<script type="text/javascript">//<![CDATA[
function onPageLoad() {
    var result = document.getElementById("result");
    result.textContent = "FAIL";

    var test = document.getElementById("test");
    if (test.namespaceURI != "urn:x-test:U+00EA") {
        result.textContent += " - #test has the wrong namespaceURI";
        return;
    }
    if (test.lookupNamespaceURI("\u00E2") != "urn:x-test:U+00E2") {
        result.textContent += " - lookupNamespaceURI('\u00E2') did not return the expected namespace URI";
        return;
    }
    if (test.lookupNamespaceURI("\u00EA") != "urn:x-test:U+00EA") {
        result.textContent += " - lookupNamespaceURI('\u00EA') did not return the expected namespace URI";
        return;
    }

    var âAttr = test.getAttributeNS("urn:x-test:U+00E2", "\u00E2Attr");
    if (âAttr != "\u00E2Value") {
        result.textContent += " - `test.getAttributeNS('urn:x-test:U+00E2', '\u00E2Attr')' did not return the expected attribute value.";
        return;
    }

    if (result.textContent == "FAIL") result.textContent = "PASS";

    if (window.testRunner)
        testRunner.dumpAsText();
}
//]]>
</script>
</body>
</html>
