155 lines
5.5 KiB
HTML
155 lines
5.5 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<style>
|
|
.fail {
|
|
color: red;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.pass {
|
|
color: green;
|
|
font-weight: bold;
|
|
}
|
|
</style>
|
|
<script>
|
|
var htmlContent =
|
|
"<html>" +
|
|
"<head>" +
|
|
"<noscript>" +
|
|
"Scripts must be disabled for the document created using DOMParser.parseFromString()" +
|
|
"</noscript>" +
|
|
"</head>" +
|
|
"<body>" +
|
|
"<div id='text'>Sample text content</div>" +
|
|
"<script>document.getElementById('text').textContent = 'Modified text content';<\/script>" +
|
|
"</body>" +
|
|
"</html>";
|
|
|
|
var xmlContent =
|
|
"<root>" +
|
|
"</root>";
|
|
|
|
|
|
var xhtmlContent =
|
|
"<!DOCTYPE html>" +
|
|
"<html xmlns=\"http://www.w3.org/1999/xhtml\">" +
|
|
"<head>" +
|
|
"<title>Title of document</title>" +
|
|
"<noscript>" +
|
|
"Scripts must be disabled for the document created using DOMParser.parseFromString()" +
|
|
"</noscript>" +
|
|
"</head>" +
|
|
"<body>" +
|
|
"<div id='text'></div>" +
|
|
"<script>document.getElementById('text').textContent = 'Newly added text';<\/script>" +
|
|
"</body>" +
|
|
"</html>";
|
|
|
|
var svgImageContent =
|
|
"<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">" +
|
|
"<circle cx=\"100\" cy=\"50\" r=\"40\" stroke=\"black\" stroke-width=\"2\" fill=\"red\"/>" +
|
|
"</svg>";
|
|
|
|
var xslContent =
|
|
"<?xml version=\"1.0\"?>" +
|
|
"<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">" +
|
|
"<xsl:template match=\"/\">" +
|
|
"<html>" +
|
|
"<head>" +
|
|
"<title>XML XSL Example</title>" +
|
|
"<style type=\"text/css\">" +
|
|
"body" +
|
|
"{" +
|
|
"background-color:red;" +
|
|
"}" +
|
|
"</style>" +
|
|
"</head>" +
|
|
"<body>" +
|
|
"<xsl:apply-templates/>" +
|
|
"</body>" +
|
|
"</html>" +
|
|
"</xsl:template>" +
|
|
"" +
|
|
"<xsl:template match=\"tutorial\">" +
|
|
"<span><xsl:value-of select=\"name\"/></span>" +
|
|
"<span><xsl:value-of select=\"url\"/></span>" +
|
|
"</xsl:template>" +
|
|
"</xsl:stylesheet>";
|
|
|
|
var count = 0;
|
|
|
|
function shouldSupport(content, mimeType)
|
|
{
|
|
var description = document.createElement("div");
|
|
description.innerHTML = (++count) + ". Should support mime-type = \"" + mimeType + "\"";
|
|
document.body.appendChild(description);
|
|
|
|
var parser = new DOMParser();
|
|
try {
|
|
var resultDocument = parser.parseFromString(content, mimeType);
|
|
var content = document.createElement("div");
|
|
var docElement = resultDocument.documentElement;
|
|
if (mimeType.lastIndexOf("xml") === mimeType.length - 3)
|
|
content.innerHTML = "Root element: " + docElement.tagName;
|
|
else
|
|
content.innerHTML = "HTML content:<br>" + docElement.innerHTML;
|
|
document.body.appendChild(content);
|
|
|
|
var result = document.createElement("div");
|
|
result.className = "pass";
|
|
result.textContent = "PASS";
|
|
document.body.appendChild(result);
|
|
} catch (exception) {
|
|
var result = document.createElement("div");
|
|
result.className = "fail";
|
|
result.textContent = "FAIL";
|
|
document.body.appendChild(result);
|
|
}
|
|
document.body.appendChild(document.createElement("br"));
|
|
}
|
|
|
|
function shouldNotSupport(content, mimeType)
|
|
{
|
|
var description = document.createElement("div");
|
|
description.innerHTML = (++count) + ". Should NOT support mime-type = \"" + mimeType + "\"";
|
|
document.body.appendChild(description);
|
|
|
|
var parser = new DOMParser();
|
|
try {
|
|
var resultDocument = parser.parseFromString(content, mimeType);
|
|
var result = document.createElement("div");
|
|
result.className = "fail";
|
|
result.textContent = "FAIL";
|
|
document.body.appendChild(result);
|
|
} catch (exception) {
|
|
var result = document.createElement("div");
|
|
result.className = "pass";
|
|
result.textContent = "PASS";
|
|
document.body.appendChild(result);
|
|
}
|
|
document.body.appendChild(document.createElement("br"));
|
|
}
|
|
|
|
function runTest()
|
|
{
|
|
if (window.testRunner)
|
|
testRunner.dumpAsText();
|
|
|
|
shouldSupport(htmlContent, "text/html");
|
|
shouldSupport(xmlContent, "text/xml");
|
|
shouldSupport(xmlContent, "application/xml");
|
|
shouldSupport(xhtmlContent, "application/xhtml+xml");
|
|
shouldSupport(svgImageContent, "image/svg+xml");
|
|
shouldNotSupport(xslContent, "text/xsl");
|
|
shouldNotSupport(xmlContent, "text/dummy+xml");
|
|
shouldNotSupport(xmlContent, "text/XML");
|
|
shouldNotSupport(htmlContent, "TEXT/html");
|
|
}
|
|
</script>
|
|
</head>
|
|
<body onload="runTest();">
|
|
<p>This tests DOMParser supports creating Document for HTML content with mime-type "text/html".</p>
|
|
</body>
|
|
</html>
|