- From: Philip Taylor <pjt47@cam.ac.uk>
- Date: Fri, 21 Dec 2007 22:09:56 +0000
- To: HTML WG <public-html@w3.org>
http://quickstarts.asp.net/Futures/ajax/doc/components.aspx uses <script type="text/xml-script"> for embedding XML which gets interpreted by some other JavaScript code. No UA could ever process that XML natively like a proper script, since it would conflict with the JS's handling of the XML. http://people.mozilla.com/~vladimir/canvas3d/examples/simple/simple20.html uses <script ... type="x-shader/x-fragment"> for embedding OpenGL shader programs. It would never make sense for a browser to execute the code directly, since it only works in the context of a complete OpenGL environment. http://lists.w3.org/Archives/Public/public-html/2007Dec/0238.html says "we use the <script> tag with a Backbase MIME type" as a container for XML. But http://www.w3.org/html/wg/html5/#script just says "The script element allows authors to include dynamic script in their documents", and does not acknowledge the use of <script> as a non-executable container for text which has an associated MIME type and can be read by other scripts. Since this is something that people want to do, we should suggest a proper way to do it. XHTML makes it fairly easy, but it's harder for the HTML serialisation. I think the main requirements are: (1) Works in current / recent web browsers. (2) Does not require escaping of the content (else it's ugly and hard to edit when writing HTML by hand). (3) Does not impose any restrictions on the content. (4) Does not get rendered by web browsers. (5) Does not require complex scripting magic to extract the content as a string. <xmp> is not perfect for (1), since Opera 9.2 has parser bugs that make it not work. It is not perfect for (4), since you need to say "xmp { display: none }" instead of it working by default. <xmp> and <script> are not perfect for (3), since they don't allow the content to contain the strings '</xmp' or '</script'. Any new element is useless for (1) or for (2) or for (5), since it won't work sensibly in all significant current browsers. I don't know of any other sensible solutions for this problem. <script> fulfils most of the requirements, and the one it fails is not a critical issue since most content will not try containing '</script>' and almost all embedded content types will have some kind of equivalent (e.g. programming languages with '"<\/script>"' or XML with '<foo:script xmlns:foo="">...</foo:script>'). In the absence of a better solution, and in the interest of paving the cowpath (i.e. adopting people's current solution to the problem), <script> should be accepted for this use, and defined like: "The script element allows authors to include dynamic script in their documents. It may also be used to embed arbitrary textual data in the document when user agents are not expected to execute that data, for example to be processed by another script. In this case, the type attribute must be present and set to a MIME type for which user agents probably won't ever implement support. [That last sentence is rubbish, but something similar should be said.] XHTML documents should not use the script element in this way, as techniques such as namespaces and CDATA sections allow better solutions." -- Philip Taylor pjt47@cam.ac.uk
Received on Friday, 21 December 2007 22:10:07 UTC