Première rédaction de cet article le 16 avril 2009
Dernière mise à jour le 17 avril 2009
Une question me titille : dans plusieurs (toutes ?) normes du
W3C, un attribut prend une valeur qui est le
nom de l'attribut, plutôt qu'un booléen. Deux
exemples : en CSS, l'attribut
border-collapse
(pour fusionner les bordures de
deux cellules contiguës d'un tableau) s'utilise :
border-collapse: collapse;
alors que :
border-collapse: true;
me semblerait plus logique. De même, en XHTML, on indique le bouton radio sélectionné avec :
<input checked="checked" type="radio" name="operator" value="OR" />
alors que j'aurai préféré :
<input checked="true" type="radio" name="operator" value="OR" />
Existe t-il une raison à cette absence de booléens ?
Daniel Dardailler me signale que les booléens ont un défaut : ils
ne sont pas extensibles. Si on a un type booléen, on ne pourra pas
rajouter de troisième valeur par exemple une apparence spéciale pour
dire que le bouton est délibérement désactivé. Donc, plutôt que
true
et false
, il vaudrait
peut-être mieux :
<input checked="on" type="radio" name="operator" value="OR" />
où on
et off
n'empêcheraient
pas d'ajouter disabled
par la suite.
Bert Bos ajoute que, si un jour on décide de combiner plusieurs
propriétés dans un super-propriété (ce qui est courant en CSS sous le
nom de shorthand, par exemple
background
intègre plusieurs propriétés comme
background-color
,
background-image
, etc), on risque moins
d'ambiguïté. Par exemple, si un jour on veut une propriété
table-handling
comme abréviation pour
table-layout
, empty-cells
et
border-collapse
, on peut sans problème écrire
table-handling: fixed collapse
(qui implique donc
aussi show
) mais pas table-handling:
true false
ce qui serait peu clair.
Sur le cas de XHTML (mais cela n'explique pas celui de CSS), Éric
van der Vlist note que la valeur checked
était
déjà là du temps de HTML / SGML. En effet,
avant XHTML, on aurait écrit :
<INPUT CHECKED TYPE=radio ...>
où CHECKED
n'est pas le nom de l'attribut mais sa
valeur (oui, c'est déroutant mais c'est vrai, cf. l'article
du W3C sur les liens entre HTML et SGML, le
livre de Martin Bryan qui explique SGML et HTML et
une
longue discussion sur ce problème des boutons radio).
Merci à Éric van der Vlist, Bert Bos et Daniel Dardailler pour leurs intéressantes informations.
Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)
Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)