<!DOCTYPE HtMl PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <title>DocType Case Insensitivity</title>
</head>
<body>
<script type="text/javascript" language="javascript">
<!--

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

if (document.doctype)
    {
    var output = document.doctype.name + ", " + document.doctype.publicId + ", " + document.doctype.systemId;
                
    var expected = "HtMl, -//W3C//DTD HTML 4.01 Transitional//EN, http://www.w3.org/TR/html4/loose.dtd";
    
    if (output == expected)
        {
        document.write("<span style='color:green'>");
        document.write("SUCCESS - This document has a doctype and each component has the correct case<br><br>");
        document.write("name = " + document.doctype.name + "<br>");
        document.write("publicId = " + document.doctype.publicId + "<br>");
        document.write("systemId = " + document.doctype.systemId);
        }
    else
        {
        document.write("<span style='color:red'>");
        document.write("FAILED - This document has a doctype, but one or more components has the wrong case<br><br>");
        document.write("name = " + document.doctype.name + " (should be HtMl)" + "<br>");
        document.write("publicId = " + document.doctype.publicId + " (should be -//W3C//DTD HTML 4.01 Transitional//EN)" + "<br>");
        document.write("systemId = " + document.doctype.systemId + " (should be http://www.w3.org/TR/html4/loose.dtd)");
        }
    }
else
    {
    document.write("FAILED - doctype is null even though there is a &lt;!DOCTYPE ...&gt; declaration");
    }
//-->
</script>

</body>
</html>
