<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <title>xsl import test</title>
    <script type="text/javascript">
        function load() {
            if (window.layoutTestController)
                layoutTestController.dumpAsText();
                
            var req = new XMLHttpRequest();
            var xslt = new XSLTProcessor();
            req.open('GET', 'resources/xhr-doc.xsl', false);
            req.send(null);
            xslt.importStylesheet(req.responseXML);
            
            req.open('GET', 'resources/xhr-doc.xml', false);
            req.send(null);
            var doc = xslt.transformToDocument(req.responseXML);
            var fragment = document.importNode(doc.documentElement, true);
            
            var div = document.getElementById('div');
            div.parentNode.replaceChild(fragment, div);
        }
    </script>
</head>
<body onload="load()">
<p>Test for <a href="http://bugs.webkit.org/show_bug.cgi?id=10313">bug 10313</a>:
xsl:import doesn't work in stylesheets loaded via XMLHttpRequest.</p>

<div id="div">It's nice that this hasn't crashed, but the XSL transformation has failed.</div>
</body>
</html>
