- From: Jukka K. Korpela <jkorpela@cs.tut.fi>
- Date: Wed, 5 Dec 2007 10:14:08 +0200
- To: <www-validator@w3.org>
- Cc: "Christian Steinert" <christian_steinert@web.de>
olivier Thereaux wrote:
> On 8 nov. 07, at 00:02, Christian Steinert wrote:
>> - empty class="" attribute does not seem to be allowed, but is not
>> reported by the validator
>
> Empty class attribute wouldn't make sense, but I don't see any clear
> mention, either in the prose or in the machine-readable schemas that
> would make that forbidden.
The declared content for the class attribute is CDATA, so a validator
must accept class="" as valid. It is however meaningless, so a warning
could be issued, if the document is treated as some version of HTML. The
HTML 4.01 specification defines that the attribute "assigns a class name
or set of class names to an element", so class="" does not assign
anything or mean anything else either, and it cannot even be used to
override any other assignment.
On the other hand, should a markup validator consider such issues? This
is a general problem that needs a general solution, rather than the
addition of miscellaneous ad hoc checks. In fact, if a validator warns
about _some_ semantically questionable constructs, people will start to
wonder why it does not complain anything about quite comparable or more
serious problems. (This also applies to constructs that are valid but
violate syntactic requirements presented in prose, such as <td
width="foo bar"> or <form action="I ain't no URL, really">.)
I would also be odd that all those warnings would disappear if the
document type declaration is replaced by one that differs from the one
specified in HTML specifications but refers to a DTD that is identical
to (or very similar to) some HTML DTD.
>> - HTML-comments inside of CSS and script tags are legal XHTML, but
>> will cause content to be ignored by XHTML-conformant browsers
>
> I don't really see what's the problem with that. Could you give
> details or examples?
There is widespread superstition, supported by many HTML guides and
tutorials, saying that style sheets and scripts should be placed inside
<!-- ... --> to hide them from older browsers, e.g.
<style type="text/css"><!--
CSS rules go here
--></style>
and _many_ authors still routinely use this approach.
This had some meaning long ago but became nonsense in the late 1990s.
Note that in HTML 4.01, they are not comments. The content model is
CDATA, so no comment conventions apply. (The original idea was that user
agents that do not recognize script or style elements at all were
assumed to ignore the <script> and <style> tags and the corresponding
end tags and to process the content between them, so this would result
in turning it into visible document content, unless "protected" by
something that would be treated as comment delimiters by such a
browser.)
The problem with this is that in XHTML, the content model is #PCDATA,
and the <!--...--> construct _is_ a comment, and by XML rules, user
agents are _allowed_ to remove all comments before otherwise processing
the document. Thus, the entire style sheet or script code inside the
element _may_ be ignored.
So that's the problem. It's less obvious how to approach it. Should it
be handled by ad hoc processing of script and style elements? Just in
XHTML, where disaster may result, or also in HTML, where the
superstition is just pointless?
Perhaps the strategy could be: _if_ in XML parsing mode _and_ the
document has been recognized as an XHTML document, _then_ issue a
warning about any XML comment inside a script or style element. This
could be misleading if the author intentionally used a comment there,
_intending_ it as a mere comment and _expecting_ it to be ignored by the
software he uses, but this is unlikely, and it would probably be so
unwise to _rely_ on ignoring the comment that a warning is actually
useful here, too.
The warning could be something like
"An XML comment was detected inside a script or style element in a
document expected to be XHTML. Beware that such comments may be removed
by programs that process the document. Thus, the old habit of putting a
style sheet or script code inside a comment-looking construct, to deal
with old web browsers, has become very risky and should not be used in
XHTML."
(of course, divided into some short message and a longer explanation).
Jukka K. Korpela ("Yucca")
http://www.cs.tut.fi/~jkorpela/
Received on Wednesday, 5 December 2007 08:14:32 UTC