<svg xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xht="http://www.w3.org/1999/xhtml">
    <html xmlns="http://www.w3.org/1999/xhtml">
        <body>
            <script type="text/javascript">
                if (window.testRunner)
                {
                    testRunner.dumpAsText();
                    testRunner.waitUntilDone();
                }

                function runTest()
                {
                    document.getElementsByTagNameNS('http://www.w3.org/1999/xhtml', 'style')[0];
                    if (document.body) {
                        document.body.innerHTML = "TEXT";
                        setTimeout(() => {
                            document.body.innerHTML = "PASS";
                            if (window.testRunner)
                                testRunner.notifyDone();
                        });
                    }
                }
            </script>
            <svg:style>
                <xht:caption>
                    <xht:iframe onload="runTest();"></xht:iframe>
                    <style></style>
                </xht:caption>
            </svg:style>
        </body>
    </html>
    <!----->
</svg>
