Accueil > weblog
- Lire le billet précédent - Lire le billet suivant -
Par Laurent Denis, le 26 décembre 2004.
Le propre du HTML est d'autoriser le navigateur à exercer son droit de jugement sur les erreurs rencontrées. Plus exactement, si vous développez un navigateur Web, vous êtes libres de prévoir le comportement de votre choix quand il s'agit de traiter un balisage erroné (Votre contrainte majeure est en général de donner accès au plus grand nombre de documents possible).
Selon toutes les spécifications (X)HTML, on ne peut doter une page (X)HTML de styles alternatifs à l'aide de l'élément style : ceux-ci passent obligatoirement par link en HTML, ou xml-stylesheet en XHTML (Pour mémoire, l'en-tête HTTP link proposait une 3e voie du temps d'HTTP1.0).
Donc, <style type="text/css" title="blabla" rel="alternate stylesheet"> est impossible... Ah... Chiche ?
Ecrivons froidement dans un document HTML :
<style type="text/css" title="vert">
<!--
body {
background-color: green;
}
p:before {
content: "(Style préféré) ";
}
-->
</style>
<style type="text/css" title="rouge" rel="alternate stylesheet">
<!--
body {
background-color: red;
}
p:after {
content: " (style alternatif)";
}
-->
</style>
</head>
<body>
<p>test</p>
Bilan ? Firefox et Mozilla s'exécutent sans broncher : ils appliquent le style préféré rouge lorsque la page est appelée, et le remplacent par le style alternatif vert lorsque qu'on active celui-ci via le menu idoine. Opera fait de même, mais en considérant le style préféré rouge comme un style permanent.
Bien qu'aucun navigateur ne devrait "logiquement" prendre en compte rel="alternate stylesheet"> dans ce cadre, rien ne les en empêche en HTML, et rien ne les oblige à s'y prendre d'une manière ou d'une autre. Soit. Rangeons cela au rang des bizarreries, et passons.
Mais cependant, une dernière question : quelqu'un peut-il m'expliquer pourquoi le même code, transcrit en XHTML dans une page servie en tant que tel (application/xhtml+xml), donne-t-il un résultat comparable au précédent, sans provoquer de message d'erreur dans que cet attribut délictueux soit ignoré par ces deux navigateurs ?
Les trackbacks pour ce billet sont temporairement fermés en raison d'une série d'attaques de spam.
Commentaires
gizmo, le 26 décembre 2004
Parce qu'ils sont buggés? Parce que personne n'a l'esprit aussi tordu que toi?
Au fait, qu'en pense IE et Safari? (oui je suis fénéant et je pourrais faire le test moi-même)
Laurent Denis, le 26 décembre 2004
"Esprit tordu" ? "Esprit tordu" ? Est-ce que j'ai une gu... d'esprit tordu, moi ?
lol... A force de lire qu'on ne doit pas faire quelque-chose, moi, je finis forcément par le faire, juste pour voir. Pas vous ?
Ce qui est gênant dans ce comportement, c'est que rien n'indiquera à celui qui le ferait de bonne foi qu'il commet une erreur.
- Ce n'est pas nouveau en HTML, où c'est l'éternel problème de la tolérance qui encourage les codages hors-normes.
- Mais c'est plus ennuyeux en XHTML...
Sinon, IE n'implémente pas les styles alternatifs. Pour Safari... y a-t-il un mehari dans la salle pour faire le test ?
Philippe, le 26 décembre 2004
IE Mac utilise le style rouge [et ignore donc le rel="alternate stylesheet" dans ce cas çi (?)]. Ce serait un demi bon point...
Safari utilise le style vert, mais n'a pas de mechanisme de styles alternatifs. Faudrait du js, je n'ai pas le code sous la de main.
Philippe, le 26 décembre 2004
Note que une petite visite du côté de W3C Validator répondra:
"This page is not Valid XHTML 1.1!"
Laurent Denis, le 26 décembre 2004
C'est invalide quelque-soit le doctype HTML ou XHTML.

Merci pour les navigateurs mac
vchahun, le 26 décembre 2004
De toute façon Mozilla interprète le code XHTML comme du HTML erroné ! Ca se remarque particulièrement quand on veut accéder à des contenus en javascript: on retrouve des <br> alors qu'on avait bien pris le soin de fermer toutes ses balises ...
Je sais pas si tous les navigateurs appliquent ce principe, mais je suis a peu près sur pour Firefox !
Laurent Denis, le 27 décembre 2004
Vchahun : es-tu sûr qu'avoir testé avec une page servie en tant que XML, avec le type mime application/xhtml+xml ?
Pour une page de test, voir:
test.blog-and-blues.org/s...
glandium, le 28 décembre 2004
Hum hum, enlève le rel="alternate stylesheet", ça marche pareil...
Ensuite, quand on regarde la spec, on voit que rien n'est spécifié pour le cas où on a plusieurs <style/> avec des @title différents, par contre, il y a pour @media. Par extrapolation, on pourrait se dire que le comportement actuel est correct.
glandium, le 28 décembre 2004
Autre précision, les navigateurs (ou autres) n'ont pas obligation de faire de la validation selon un schéma avant affichage. Ils ont cependant obligation, dans le cas où le mime-type dit clairement que c'est du XML, d'être en erreur sur du XML malformé, c'est dans la spec XML.
Laurent Denis, le 28 décembre 2004
@Glandium > "enlève le rel="alternate stylesheet", ça marche pareil..."
Pas exactement :
- Opera ignore l'attribut title et cumule les styles (comportement normal en XHTML, voir ci-dessous)
- Firefox tient toujours compte des deux styles comme s'il s'agissait de styles alternatifs.
> "Ils ont cependant obligation, dans le cas où le mime-type dit clairement que c'est du XML, d'être en erreur sur du XML malformé,"
Plus précisément dans ce cas, ils ont obligation d'ignorer l'attribut improprement utilisé.
Les commentaires pour ce billet sont temporairement fermés en raison d'une série d'attaques de spam.