Archive pour le 7 février 2008

Billets HTML 5 dans le train

Jeudi 7 février 2008

J’ai écrit une couple de billets au lieu de dormir dans le train de banlieue sur HTML 5, je vais les mettres (en fait je viens de les mettres) en ordre inversé de leur écriture juste pour que ce soit plus facile à lire, mais vous pouvez les lire dans n’importe quel ordre si cela vous chante.

Quand devrait-on utiliser HTML 5 ?

Jeudi 7 février 2008

Faut comprendre que pour que HTML 5 deviennent un standard ouvert, il n’est pas nécessaire d’attendre que HTML 5 devienne une recommandation du W3C, ou même une candidate recommandation.

Et je crois même que de l’utiliser sera la meilleure pratique bien avant. Je n’attendrai certainement pas 2012 avant de l’utiliser. Sinon, c’est aussi bien de lâcher la patate et de considérer que Adobe Air ou que Silverlight ont gagné. Vous ne voulez pas un Web fermé ? Moi non plus. Fatigué de la soupe de balise ? Et moi donc!

Surtout que les standards actuels, XHTML1 et HTML 4 ont assez de problèmes et d’incohérences, que je ne vais pas attendre 2012, ni même 2009.

Je vais essayer de pondre quelques billets pour démistifier HTML 5 et comment nous pouvons en utiliser une partie tout de suite, quite à se tromper un peu et de rester à la fine pointe de ce qui est possible.

Le tout est nouveau, si vous voyiez des erreurs, n’hésitez pas à me le faire savoir

Alors sans plus tarder voici une série de billets sur HTML 5

HTML 5 ou HTML5 ou XHTML5 ou DOM5 HTML

Jeudi 7 février 2008

HTML 5 est le standard qui défini des API (interfaces de programmation), des éléments de structures, des sérialisations de documents et du comportement des analyseurs syntaxiques

HTML5 (sans espace) c’est la sérialisation, donc ce qu’on code, pour les analyseurs syntaxique HTML (les navigateurs Web en possèdent un)

Par opposition, dans HTML 4, on parle d’analyseurs syntaxiques basés sur le SGML. HTML au départ, était basé sur SGML, mais les analyseurs syntaxiques HTML doivent prendre en comptes plein de choses reliés à la manière dont le Web a évolué qui n’on pas vraiment rapport avec SGML (par exemple javascript, le Document Object Model, etc).

XHTML5 c’est une sérialisation XML, un peu comme XHTML 1, avec la différence qu’il doit être analysé par un analyseur syntaxique XML, pas tous les navigateurs Web en possède, mais aussi tout autre analyseur syntaxique XML (écrit en java, C#, C, Perl, etc)

DOM5 HTML c’est la représentation mémoire de notre document HTML, c’est la suite des DOM level 1, 2 et ainsi de suite.

HTML 4 et XHTML 1 ne parlent pas des API, de la gestion des erreurs non conformantes, mais HTML 5 le fait. Le tout pour une meilleure intéropérabilité entre les implémentations du standard.

Est-ce que nous pouvons utiliser HTML 5 aujourd’hui et que ça marche sur tous les navigateurs modernes ?

Jeudi 7 février 2008

Pas tout-à-fait, mais c’est possible en partie, en théorie. Commençons par les nouveaux élément de structure (section, aside, article)

Opera et Safari n’ont pas de problèmes à styler les nouveaux éléments HTML 5. Donc on peut utiliser les section, aside et ainsi de suite avec ces navigateurs.

Internet Explorer, évidemment, ne peux pas. Même pas IE7. Mais il y a un hack, qui nécessite malheureusement javascript. Il suffit de créer un élément DOM avec le nom de la balise utilisé pour que notre style fonctionne. Ex: document.createElement(« aside »);

Le plus gros problème cette fois vient de Firefox. Pour Firefox, tous les éléments non reconnus sont considérés comme inline (comme span). L’analyseur syntaxique ne permet pas de mettre un élément block (comme p ou div) à l’intérieur d’un élément inline, il pense que c’est une erreur alors il va fermer la balise.

Quelque chose comme section, p, texte, /p, /section, va devenir de façon interne à Firefox section, /section, p, texte, /p, section, /section, pas vraiment ce que l’on veut.

Tant que l’analyseur syntaxique de Firefox ne sera pas corrigé, impossible d’utiliser HTML5 de façon intéressante sur le Web. J’espère que ce sera réglé d’ici Firefox 3, mais c’est loin d’être certain. C’est sûr que je vais être très déçu de Mozilla (genre assez pour changer de navigateur) s’ils ne règlent pas ce bogue d’ici Firefox 3.

Qu’en est-il de XHTML5 ? Lui n’aura pas le problème d’analyseur syntaxique, la balise ne sera pas fermée, mais elle sera toujours inline. Il faudra donc spécifier que section est block dans le CSS. Pas trop difficile.

Donc, en théorie (parce que je vous averti que je ne l’ai pas testé) pour faire du HTML 5 maintenant il faut :

  1. Coder comme si c’était du XHTML5 (donc, sans noscript, sans entités autres que celles de XML, mais avec UTF8 pour les accents), mais sans autre namespace que HTML
  2. Lors de l’envoi du HTML par le serveur, quand c’est Internet Explorer, enlever la déclaration XML, ajouter le DOCTYPE et les namespace du HTML et envoyer le tout en text/html. IE va l’analyser comme de la soupe de balise (mais entre vous et moi, qui analyse autre chose que de la soupe de balise).
  3. Pour les autres, envoyer la version XML telle qu’elle. On peut aussi opter d’envoyer la version XML seulement à Firefox puisqu’il est généralement conseillé d’utiliser la sérialisation HTML5 (ça va faire plaisir à ceux qui pensent que XHTML ça ne sert pas à grand chose, faut bien leur donner leur nanane ;-) )

Voilà, je vous tiens au courant quand je l’aurai testé. Cherchez un peu sur le Web, je suis sûr que d’autres vont essayer cela bientôt.

Je vous ai tu dis que <br/> avec le trailing slash est correct en HTML5 ? Ça nous sauve pas mal dans notre cas. Voilà un bon coup pour le HTML5, ce sera facile de migrer notre XHTML 1 sans perdre de lisibilité.