<?xml version="1.0"?>
<!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">
<head>
  <title>createContextualFragment from XHTML Document range.</title>
</head>
<body>
<p>Test of createContextualFragment from a Range whose context is an &lt;html&gt; element in an XHTML document. If the test succeeds you will see the word "PASS" below.</p>
<p id="result"></p>
<script>
if (window.testRunner)
    testRunner.dumpAsText();

var range = document.createRange();
var html = document.getElementsByTagName('html')[0];
range.setStart(html, 0);
var fragment = range.createContextualFragment('&lt;p id="frag">Inserted fragment&lt;/p>');
document.body.appendChild(fragment);
var p = document.getElementById('frag');

var result = document.getElementById('result');
result.textContent = (p &amp;&amp; p.parentElement === document.body &amp;&amp; p.namespaceURI === 'http://www.w3.org/1999/xhtml') ? 'PASS' : 'FAIL';
</script>
</body>
</html>
