<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script>
function debug(str) {
    pre = document.getElementById('console');
    text = document.createTextNode(str + '\n');
    pre.appendChild(text);
}

function runTests() {
    if (window.layoutTestController)
        layoutTestController.dumpAsText();

    elem = document.createElementNS('http://www.example.org', 'test');
    attr = elem.setAttribute('bb:dddd', 'attr_value');
    attrNode = elem.attributes[0];
    debug("namespace is " + attrNode.namespaceURI);
    debug("prefix is " + attrNode.prefix);
    debug("localName is " + attrNode.localName);
    if (attrNode.namespaceURI == null && attrNode.prefix == null && attrNode.localName == 'bb:dddd')
        debug('SUCCESS')
    else
        debug('FAILURE')
}

</script>
</head>
<body onload="runTests();">
<p>This tests checks whether setAttribute allows name parameters with colons in them. If the test is successful, text below should say "SUCCESS".</p>
<pre id="console"></pre>
</body>
</html>
