(reprise du message précédent)
Il ne te reste plus, comme dit ci-dessus, qu'à lâcher XHTML1.1, ou à l'utiliser correctement. En l'état, en effet:
- ton document a beau porter une étiquette XHTML1.1 (la DTD), ce n'est pas du XHTML1.1 pour les navigateurs. Ce n'est pas du XHTML, en fait : le type de contenu text/html en fait du HTML, ou plutôt de la soupe HTML: XHTML1.1 n'est pas prévu pour être interprété en tant que HTML. (En revanche, XHTML1.0 est justement prévu pour cela).
- ton document n'a pas d'indication d'espace de nom (attribut xmlns de l'élément html) ni d'indication de langue de traitement. Cette dernière donne un bon exemple de la "soupe" ci-dessus:
* si tu ajoute xml:lang="fr" à l'élément html, ton document étant traité comme du HTML et n'étant pas du XHTML1.0, cet attribut est invalide du point de vue HTML.
* si tu ajoute lang="fr", cet attribut est invalide en XHTML1.1...
- ton document n'a pas de charset, malgré la <meta http-equiv...> : en effet, celle-ci sera certes reconnue lorsque le document est traité comme du HTML, mais elle sera ignorée si on force le navigateur à le traiter selon la norme XHTML1.1, c'est à dire en tant qu'application/xhtml+xml. Dans ce cas, comme l'encodage n'est pas spécifié ni au niveau serveur (entête HTTP) ni par un prologue XML, Opera et Firefox tombent immédiatement d'accord: "Encoding from serveur: unknown".
- En l'absence de prologue XML et d'encodage indiqué au niveau serveur, un document XHTML1.1 en iso-8859-1 est invalide (iso-8859-1 ne fait pas partie des encodages par défaut admis dans ce cas).
Donc, un choix à faire:
- revenir à XHTML1.0, qui peut, lui, être traité en tant que text/html
- corriger les différentes erreurs ci-dessus (encodage, prologue, langue, espace de nom...) et délivrer le document en tant que XHTML1.1 correct, c'est à dire avec le type de contenu application/xhtml+xml. Comme très peu d'agents utilisateurs reconnaissent actuellement ce type de contenu, et notamment pas IE, il te faudra faire de la négociation de contenu pour délivrer une version modifiée de ton document aux navigateurs qui n'acceptent que du text/html. Cette version peut être en XHTML1.0, en HTML4.01...
Donc, faire une seule version XHTML1.0 propre, ou gérer deux versions du document dont une en XHTML1.0 ? En sachant qu'XHTML1.1 t'est inutile, puisque tu n'exploite aucune des gains de celui-ci par rapport à XHTML1.0...
Sinon, il faut rappeler qu'un div scrollable CSS pose un problème d'accessibilité, car les utilisateurs n'ayant pas accès à un dispositif de pointage (souris...) ne peuvent pas faire défiler le contenu. Ils doivent désactiver la feuille de style pour rendre le document accessible. Il est dommage que les feuilles de style, dont un des rôles est d'améliorer l'accessibilité, joue ici le rôle inverse...
Modifié par Laurent Denis (25 Feb 2005 - 08:05)
spidermanu a écrit :
ps : version modifié de mon kit (xhtml1.1 plus de javascript plus de iframe)
hein hein voyez que je pouvais lacher les frames.
Il ne te reste plus, comme dit ci-dessus, qu'à lâcher XHTML1.1, ou à l'utiliser correctement. En l'état, en effet:
- ton document a beau porter une étiquette XHTML1.1 (la DTD), ce n'est pas du XHTML1.1 pour les navigateurs. Ce n'est pas du XHTML, en fait : le type de contenu text/html en fait du HTML, ou plutôt de la soupe HTML: XHTML1.1 n'est pas prévu pour être interprété en tant que HTML. (En revanche, XHTML1.0 est justement prévu pour cela).
- ton document n'a pas d'indication d'espace de nom (attribut xmlns de l'élément html) ni d'indication de langue de traitement. Cette dernière donne un bon exemple de la "soupe" ci-dessus:
* si tu ajoute xml:lang="fr" à l'élément html, ton document étant traité comme du HTML et n'étant pas du XHTML1.0, cet attribut est invalide du point de vue HTML.
* si tu ajoute lang="fr", cet attribut est invalide en XHTML1.1...
- ton document n'a pas de charset, malgré la <meta http-equiv...> : en effet, celle-ci sera certes reconnue lorsque le document est traité comme du HTML, mais elle sera ignorée si on force le navigateur à le traiter selon la norme XHTML1.1, c'est à dire en tant qu'application/xhtml+xml. Dans ce cas, comme l'encodage n'est pas spécifié ni au niveau serveur (entête HTTP) ni par un prologue XML, Opera et Firefox tombent immédiatement d'accord: "Encoding from serveur: unknown".
- En l'absence de prologue XML et d'encodage indiqué au niveau serveur, un document XHTML1.1 en iso-8859-1 est invalide (iso-8859-1 ne fait pas partie des encodages par défaut admis dans ce cas).
Donc, un choix à faire:
- revenir à XHTML1.0, qui peut, lui, être traité en tant que text/html
- corriger les différentes erreurs ci-dessus (encodage, prologue, langue, espace de nom...) et délivrer le document en tant que XHTML1.1 correct, c'est à dire avec le type de contenu application/xhtml+xml. Comme très peu d'agents utilisateurs reconnaissent actuellement ce type de contenu, et notamment pas IE, il te faudra faire de la négociation de contenu pour délivrer une version modifiée de ton document aux navigateurs qui n'acceptent que du text/html. Cette version peut être en XHTML1.0, en HTML4.01...
Donc, faire une seule version XHTML1.0 propre, ou gérer deux versions du document dont une en XHTML1.0 ? En sachant qu'XHTML1.1 t'est inutile, puisque tu n'exploite aucune des gains de celui-ci par rapport à XHTML1.0...
Sinon, il faut rappeler qu'un div scrollable CSS pose un problème d'accessibilité, car les utilisateurs n'ayant pas accès à un dispositif de pointage (souris...) ne peuvent pas faire défiler le contenu. Ils doivent désactiver la feuille de style pour rendre le document accessible. Il est dommage que les feuilles de style, dont un des rôles est d'améliorer l'accessibilité, joue ici le rôle inverse...
Modifié par Laurent Denis (25 Feb 2005 - 08:05)