- From: Richard A. O'Keefe <ok@atlas.otago.ac.nz>
- Date: Mon, 18 Dec 2000 12:01:14 +1300 (NZDT)
- To: derhoermi@gmx.net, html-tidy@w3.org, philippe.barthelemy@bdesign.fr
Examples of corections: enclosed script content in CDATA, adding a white
space in empty comments
( ie : from <----> to <-- --> ) .
Presumably from <!----> to <!-- -->
That most certainly should not be necessary.
The definition of a comment in SGML is basically
/<!(--([^-]|-[^-])*--\s*)*>/
In particular, <!> is a comment, <!--foo-- --bar--> is a comment,
and <!----> is a comment. XML is supposed to make precisely two
changes to this:
(a) there must be exactly one chunk
(b) trailing space is not allowed after that chunk,
So the definition of a comment in XML is
/<!--([^-]|-[^-])*-->/
I do understand that a lots a w3c specs implementations are
rather fuzzy. I do not want to argue about it. ( especially,
because I am likely to be wrong quite often...)
"Rather fuzzy" is an extremely generous way of describing quite a
few of them; the people who worked out how to formally specify software
appear to have lived in vain.
But in the case of XML comments, there is not the slightest fuzziness.
Here is the actual rule:
[15] Comment = '<!--' ((Char - '-') | ('-' (Char - '-')))* '-->'
There is admittedly a note:
[E27]Note that the grammar does not allow a comemnt ending in --->.
This is *not* an additional constraint; it is supposed to be explaining
what the *grammar* already forbids. As it stands, it is wrong, but the
associated example makes it clear that the author of the note did not
have <!----> in mind.
Nor, for that matter, is there anything in XHTML that requires a
script to have its content enclosed in CDATA.
There *is* advice, appendix C.4, that says
C.4 Embedded Style Sheets and Scripts.
Use external style sheets if your style sheet uses < or & or ]]>
or --. Use external scripts if your script uses < or & or ]]> or
--. Note that XML parsers are permitted to silently remove the
contents of comments. Therefore, the historical practice of
"hiding" scripts and style sheets within comments to make the
documents backward compatible is likely to not work as expected
in XML-based implementations.
Section 4.8 says that you *MAY* use CDATA, not that you *must*:
4.8 Script and Style elements
In XHTML, the script and style elements are declared as having
#PCDATA content. As a result, < and & will be treated as the
start of markup, and entities such as < and & will be
recognized as entity references by the XML processor to < and &
respectively. Wrapping the content of the script or style
element within a CDATA marked section avoids the expansion of
these entities.
<script> <![CDATA[ ... unescaped script content ... ]]>
</script>
CDATA sections are recognized by the XML processor and appear as
nodes in the Document Object Model, see Section 1.3 of the DOM
Level 1 Recommendation [DOM].
An alternative is to use external script and style documents.
Since most browsers out there do NOT support XHTML, I wonder whether
using external scripts would not be the simplest device?
There is a real incompatibility between HTML and XHTML here.
In HTML, we have
<!ENTITY % Script "CDATA">
<!ELEMENT SCRIPT - - %Script;>
which says that the *only* significant markup within a <SCRIPT>
is the </ that closes it. But in XHTML, since XML does not support
CDATA elements, we have
<!ELEMENT SCRIPT (#PCDATA)>
which says that markup *may* occur inside a <SCRIPT>.
External scripts have got to be *the* simplest way to work around this!
Received on Sunday, 17 December 2000 18:01:37 UTC