- From: Leif Halvard Silli <xn--mlform-iua@xn--mlform-iua.no>
- Date: Thu, 18 Feb 2010 16:04:37 +0100
- To: Krzysztof Maczyński <1981km@gmail.com>
- Cc: www-archive <www-archive@w3.org>, Philip Taylor <pjt47@cam.ac.uk>
(Moving to www-archive.)
In reply to: 
http://www.w3.org/mid/20100218010121863991.5635f637@xn--mlform-iua.no
Leif Halvard Silli, Thu, 18 Feb 2010 01:01:21 +0100:
> Krzysztof Maczyński, Wed, 17 Feb 2010 21:41:03 +0100:
>> Thanks, Leif, for your clever solution at 
>> http://www.målform.no/html4-or-html5/take2_workaround which looks 
>> both cleaner and more universal. Have you got an explanation handy? 
>> As SGML I understand it but not how mainstream browsers parse it.
Trying to explain more simply + add new info. Some repetition, to be 
complete.
First: The "<!>" on line 3,
  [<!ATTLIST P myattr   CDATA #implied --><!><!-- >]>
is just a placeholder for "<!DOCTYPE HTML>"
  [<!ATTLIST P myattr   CDATA #implied --><!DOCUMENT HTML><!-- >]>
(which makes Safari trigger standards mode). User agents don't display 
'<!>' anyway. Second: Like I said, the last line is just something I 
did to un-confuse the syntax coloring of VIM. Thus the shortest variant 
of my workaround is the following (where I replaced the system 
identifier with simply "" - which is enough according to the current 
edition of HTML5 - thanks to Philip for that info.):
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "" 
    [<!ATTLIST P myattr   CDATA #implied --><!-- >]>
  <!--><!!-->
Annotation of components of the 2 last lines of the workaround:
[<!ATTLIST P myattr   CDATA #implied --> = The '-->' makes the 
                                           preceding somehow end
                                           here as a "comment".
<!-- >]> = "comment start". *Must* be a space before ">]>". 
           Probably because "<!-->" is interpreted as a full
           comment (e.g. in Safari and also in HTML5.)
           ( "--><!--" is together a SGML comment inside the
           DOCTYPE - I know you know this, Krzysztof.) ;-)
<!--><!!--> = 1) If the line only contained '<!-->', then ']>' 
              would have been hidden in Safari and Firefox.
              But: Not valid mark-up syntax, of course.
              2) If the line only contained '<!!-->', then ']>'
              would have been hidden in all GUI browsers I've
              tested. But: Not valid mark-up syntax, of course.
              3) If the line only contained '<!---->', then ']>' 
              would have been hidden in Firefox 3.6 with 
              HTML5.enable turned on - and in Safari, Opera 
              and IE. BUT: Firefox without HTML5.eable would hide
              the entire page content.
              4) So why "<!--><!!-->"? When it starts with a 
              '<!-->', then it is interpreted as a comment
              in itself, by many of the UAs. And thus '<!!--->'
              retains the benefit described in 2), while the
              entire line may still be interpreted as a valid
              HTML4 comment.  (It is not a valid HTML5 
              comment ...)
I hope this is not far from the truth ...
-- 
Leif Halvard Silli
Received on Thursday, 18 February 2010 15:05:12 UTC