<html>
<head>
    <script>
        function runTest() {
            if (window.testRunner)
                testRunner.dumpAsText();
                
            var sourceDoc = (new DOMParser).parseFromString('<test/>', 'text/xml');
            var sheetDoc = (new DOMParser).parseFromString('<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">' +
                                                           '<xsl:output method="text"/><xsl:param name="testParam"/>' + 
                                                           '<xsl:template match="/test"><xsl:value-of select="$testParam"/></xsl:template></xsl:stylesheet>', 'text/xml');
                                                           
            var processor = new XSLTProcessor();
            processor.importStylesheet(sheetDoc);

            processor.setParameter(null, 'testParam', 'text')
            var result = processor.transformToFragment(sourceDoc, document);
            if (result.textContent != 'text')
                return;

            processor.setParameter(null, 'testParam', 'text with spaces')
            var result = processor.transformToFragment(sourceDoc, document);
            if (result.textContent != 'text with spaces')
                return;
 
            processor.setParameter(null, 'testParam', 'Shakespeare\'s "Twelfth Night"')
            var result = processor.transformToFragment(sourceDoc, document);
            if (result.textContent != 'Shakespeare\'s "Twelfth Night"')
                return;
            
            document.getElementById('result').innerHTML = 'SUCCESS';
        }
    </script>
</head>
<body onload="runTest()">
    <p>This tests that passing string parameters to the XSLTProcessor works as expected. If this test is successful, the text "SUCCESS" will be shown below.</p>
    <div id="result">FAILURE</div>
</body>
</html>
