<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Namespace Resolver Test Case</title>
</head>
<body>
    <div id="result">FAILURE</div>
    <script type="text/javascript"><![CDATA[
    if (window.layoutTestController)
        layoutTestController.dumpAsText();

    function nsResolver(sPrefix) {
        switch (sPrefix) {
            case "foo":
                return "http://www.example.com";
                break;
            default:
                return null;
                break;
        }
    }

    var sXml = "<root xmlns='http://www.example.com'><child>SUCCESS</child></root>";
    var oXmlDom = (new DOMParser()).parseFromString(sXml, "text/xml");

    try {

        var oResult = oXmlDom.evaluate("foo:child/text()", oXmlDom.documentElement, nsResolver, 
            XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);

        document.getElementById("result").textContent = oResult.iterateNext().nodeValue;

    } catch (ex) {
        document.getElementById("result").textContent = ex;
    }
    ]]></script>

</body>
</html>
