Oui, je connais.
"SPECIFIC PROBLEMS"
* <script> and <style> elements in XHTML sent as text/html have to be
escaped using ridiculously complicated strings.
ok, je suis d'accord, c'est pas très simple à gérer.
* A CSS stylesheet written for an HTML4 document is interpreted
slightly differently in an XHTML context
Non, ça c'est un problème de passage du HTML au XHTML (d'où éventuelle adaptation des feuilles de style liées). Écriture des noms de balise en minuscule dans le document et dans les sélecteurs CSS == pas de problème.
C'est un inconvénient ponctuel (adaptation).
* A DOM-based script written for an HTML4 document has subtly
different semantics in an XHTML context (e.g. element names are
case insensitive and returned in uppercase in HTML4, case sensitive
and always lowercase in XHTML;
Un peu plus génant en effet, mais un toLowerCase() sur les attributs nodeName qu'on manipule et c'est réglé.
you have to use the namespace-aware
methods in XHTML, but not in HTML4
Bah... De toute façon, puisqu'on envoit le doc en text/html, pas question d'y insérer des balises d'autres namespaces donc méthodes DOM *NS inutiles.
* Scripts that use document.write() will not work in XHTML contexts.
(You have to use DOM Core methods.)
Tant mieux
* Current UAs are, for text/html content, HTML4 user agents (at best)
and certainly not XHTML user agents. Therefore if you send them
XHTML you are sending them content in a language which is not
native to them, and instead relying on their error handling. Since
this is not defined in any specification, it may vary from one user
agent to the other.
Pas de réponse, je ne suis pas sùr de comprendre. Un agent utilisateur pourrait ne pas considérer le document comme du HTML (par exemple au vu du doctype) et le rejeter ?
Ça va quand même à l'encontre de la politique de tolérance de tous les navigateurs que je connais mais bon...
* XHTML documents that use the "/>" notation, as in "<link />" have
very different semantics when parsed as HTML4. So if there was to
be a fully compliant HTML4 UA, it would be quite correct to show
">"
ok, bien que je n'ai toujours pas rencontré de tels agents utilisateurs.
"COPY AND PASTE"
* Documents sent as text/html are handled as tag soup [1] by most UAs.
Pas de désavantage par rapport au HTML donc.
Les items suivants concernent des documents non-valides donc je passe.
* The "/>" empty tag syntax actually has totally different meaning in
HTML4. (It's the SHORTTAG minimisation feature known as NET, if I
recall the name correctly.)
Les navigateurs courants ont un comportement incorrect vis à vis de cette syntaxe mais ça ne la rend pas invalide pour autant donc c'est compatible HTML (ok, je pinaille). Ou alors j'ai mal compris et " />" est invalide en SGML.
* Script and style elements cannot have their contents hidden from
legacy UAs. The following XHTML:
Non recevable. Les vieux navigateurs ne gèrent pas même le XML donc à quel UA vondrait-on cacher le contenu d'un bloc <style> ou <script> ?
Voir aussi réponse plus haut.
* The "xmlns" attribute is invalid HTML4.
Les navigateurs n'utilisent pas de parseurs validant. Pour un parseur validant, je ne suis pas sùr qu'il s'interesse au type de média fourni par un quelconque moyen et récupèrera simplement la DTD (XHTML 1.0) liées au document (dans laquelle est bien déclaré l'attribut xmlns en question).
Why UAs can't handle XHTML sent as text/html as XML
Et heureusement! Puisqu'on leur dit que c'est un contenu de type text/html, ils n'ont (ou ne devraient avoir) aucune raison de le traiter comme du XML.
Pour résumer:
- Gestion des blocs de scripts (pour les blocs <style>, c'est pas indispensable) embarqués
- toLowerCase() si on manipule des attributs nodeName dans un script
- Un navigateur qui rejeterait un doc HTML sous prétexte qu'il arbore une DTD XHTML 1.0 ? J'y crois pas trop.
- Un vrai parseur SGML embété par cette même DTD ? Un vrai parseur SGML n'a pas vocation à parser des docs HTML publiés sur Internet vu qu'ils sont pour la plupart non-valides.
- Ce fameux problème de balise vide qui n'en est pas un car tous les navigateurs existants (à ma connaissance) s'en accomodent (c'est pas une raison mais c'est comme ça)