Re: XHTML Media Types

Thomas,

Sorry for not replying to this earlier.  We are making updates to this 
document, and have taken your comments into account.  We basically agree 
with most of them.  Some comments below:

Thomas 'PointedEars' Lahn wrote:
> Hello all,
>
> while reviewing the updated <http://www.w3.org/TR/xhtml-media-types/>,
> I noticed the following errors and omissions:
>
> | A.2. Elements that can never have content
> | [...]
> | Rationale: HTML user agents ignore the  /> at the end of a tag, [...]
>
> I am afraid that statement, in its absoluteness, is plain wrong.  (It was
> also in XHTML 1.0, Appendix C, and is addressed in my criticism of that
> section to define a variant of XHTML 1.0 that would be "HTML-compatible".
> Because, strictly speaking, HTML and XHTML are *incompatible*.  But I digress.)
>
> It is merely correct to say that some HTML UAs, maybe many of them, ignore
> the `/'.  It is incorrect to say that "HTML UAs" (implies in that context:
> all) do, because there are standard-conforming HTML UAs that treat `/>' like
> `>&gt;'; most notably, the current version of the W3C Markup Validator, but
> there are also practical examples:
>
> <http://dodabo.de/html+css/tests/shorttag.html>
>
> You will notice that these include Links and lynx, which are known to
> provide input for screen readers and Braille lines (for people with impaired
> vision, and blind people), and thus cannot be reasonably discounted.  So it
> seems only fair to mention in the guideline, at least, that serving XHTML as
> text/html as suggested can, at least, create accessibility issues.
>   

Fixed.  We added a qualifier to make it clear it is not all user agents.

> | A.4. Embedded Style Sheets and Scripts
> |
> |   DO use external style sheets if your style sheet uses < or & or ]]> or
> |   --. DO NOT use an internal stylesheet if the style rules contain any of
> |   the above characters.
> |
> |   DO use external scripts if your script uses < or & or ]]> or --. DO NOT
> |   embed a script in a document if it contains any of these characters
>
> In my opinion, mentioning `--' like this is misleading.  AFAICS, it will do
> no harm to a stylesheet or a script unless it is preceded by `<!', and the
> corresponding section has not been marked up as CDATA.  This should be
> clarified.
>
> In addition, it should be pointed out that
>
>   <script ...><!--
>     ...
>   --></script>
>
> (including cases with white-space before `<!..', or after `-->', or `//'
> before `<!--') is considered harmful as it will comment out the `script'
> element's content in XHTML parsed by an XML UA (content model: PCDATA), and
> at least the last line will lead to script syntax errors (invalid operand
> for pre-decrement) in XHTML parsed by an HTML UA (content model: CDATA).
>
> HTML 2.0 (RFC 1866), which did not yet have the SCRIPT element, is OBSOLETE
> since about 9 years (RFC 2854, 2000-06 CE) now, so UAs still requiring this
> should be considered borken.  Pre-HTML-3.2/4.01 (Browser War I era) UAs are
> pretty much obsolete by now, too.  (That said, there was never a real need
> to hide script code in the HEAD element, which is where most people appear
> to use it.)
>
> So developers should be advised that the pseudo-CDO and -CDC should simply
> be omitted from scripts.  (HTML 4.01 [1999-12-24] did not make that clear,
> nor did XHTML 1.0, Second Edition [2002-08-01], Appendix C.  It is [thus?] a
> frequent issue in [de.]comp.lang.javascript where I am a regular contributor.)
>   

We agree that the -- admonition is no longer relevant.  We will remove it.

> | A.6. Deleted
> |
> | This guideline was deleted because it is no longer relevant.
>
> I suggest deleting this subsection as it is more confusing than helpful.
> If it was relevant before, one should find a note of its deletion in the
> document history.  One would have to look up a previous version of the WG
> Note in any case.
>   

It is important that we keep this around so that the number of the other 
items remains consistent with the previous versions.  Sorry.

> | A.11. Document Object Model and XHTML
> | [...]
> | For example, in JavaScript you might do something like:
> |
> |    ...
> |    var name=node.name().toLowerCase;
> |    if ( name == 'table' ) {
> |       ...
> |    }
>
> MUST be (to work, and make sense):
>
>   var name=node.nodeName.toLowerCase();
>   // ...
>
> SHOULD be at least:
>
>   var elName = node.nodeName.toLowerCase();
>   if (elName === "table") {
>     ...
>   }
>
> (`name' is an identifier unwise to choose.  For example, Window objects
> already have a `name' property that might be shadowed with this, and `name'
> could as well indicate the name of HTML DOM object representing a form control.
>
> Changes in quotes only because I think double-quotes are better legible, and
> apostrophes, aka single-quotes, should only be used when necessary.)
>
> However, since HTML user agents are supposedly still in the majority, and
> that I know of yield an uppercase node name, the following would be more
> efficient overall:
>
>   var elName = node.nodeName.toUpperCase();
>   if (elName === "TABLE") {
>     ...
>   }
>
> or
>
>   if (/^TABLE$/i.test(node.nodeName) {
>     ...
>   }
>
> as Regular Expressions and RegExp initializers are specified since
> ECMAScript Edition 3, and supported since JavaScript 1.2, JScript
> 3.1.3510 (supposedly 3.0), whereas both predate it, and at least
> Opera 5.02.  (See also: <http://PointedEars.de/es-matrix>)
>   

We added the toLowerCase() version.  We are trying to encourage people 
to use the XHTML mode of thinking in their documents and scripting. 

> | A.21. document.write
> | [...]
> | Rationale: Native XML user agents may not support this technique for
> | modifying the content of the document.
>
> You are correct, for example Netscape/Mozilla Gecko does not support
> document.write() in XML mode.  I cannot remember of any user agent that
> does.  However, it would appear that this is either a bug in those user
> agents, or W3C DOM Level 2 HTML is incorrect/imprecise.  For the latter
> says that
>
> | 1.1. Introduction
> |
> | This section extends the DOM Level 2 Core API [DOM Level 2 Core] to
> | describe objects and methods specific to HTML documents [HTML 4.01],
> | and XHTML documents [XHTML 1.0].
>
> but it defines HTMLDocument::write(), which is implemented as document.write().
>
> <http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html#ID-75233634>
>
> Maybe you could clarify this (in cooperation with the DOM Working Group)?
>   

Unfortunately, this is not really in scope for us.  Also, the working 
group believes that document.write cannot be used when a user agent is 
operating on an XML document because, in general, XML parsing is 
completed before the document is handed off to the implementation.  So 
there is no real way to change the document via document.write in a 
portable way.
> As for the rest, thank you very much for the update; you have pointed out
> some important issues regarding compatibility that were not in the first
> edition, and that will help us in the future.
>
> I would suggest you consider removing Appendix C from XHTML 1.0 in the next
> revision, and to refer to the WG Note instead.
>   

We would love to.  Unfortunately, we may not be allowed to update that 
document before we wind up our work as a W3C Working Group.

> I am looking forward to your reply.  Thank you in advance.
>
>
> Kind regards,
>
> PointedEars
>   

-- 
Shane P. McCarron                          Phone: +1 763 786-8160 x120
Managing Director                            Fax: +1 763 786-8180
ApTest Minnesota                            Inet: shane@aptest.com

Received on Wednesday, 10 March 2010 16:44:23 UTC