Sur le respect de la norme
J'arrive a un certain stade de la programmation où je me demande
vraiment si je ne suis pas parti en hors sujet ou du moins ne réalise
pas exactement ce que vou s attentiez.
Pour l'instant, j'arrive à simplifier le html en effectuant des
simplifications en remontant les balises de texte au delà des balises
qui semblaient l'accepter; ce qui permet d'obtenir de bonnes
simplifications. Mais je crains que le Html produit ne suive pas
exactement les "règles de bonne formation du html". C'est pourquoi
j'ai besoin d'être reguidé et que je vous ai posé une série de
question à la fin de cet email.
Les règles en question sont défnies par une norme.
http://www.w3.org/TR/REC-html40/.
La norme peut paraître énorme mais les règles sont finalement simples
et leurs principes (bon parenthèsage, pas de niveau bloc dans le
niveau texte) sont dans l'énoncé.
Il est impératif de les respecter. Le meilleur moyen de savoir si un
bout de HTML est correct est de le valider par.
http://validator.w3.org/
C'est ce que je ferai au moment de la
correction. Produire du HTML correct est un point qui comptera
beaucoup dans la notation finale.
Le respect de la norme entraîne quelques conséquences sur les
optimisations possibles.
La simplification <ul><li><b>txt</b></li><li><b>txt</b></li></ul> en
<b><ul><li>txt</li><li>txt</li></ul></b> est-elle vraiment
proscrite ? (Car c'est ce que je fais avec la version actuelle, pour les
balises de blocs qui l'acceptent d'apres IE5) Le sujet se restreint
il vraiment aux simplifications possibles ne sortant pas des balises
de bloc?
Ce changement est incorrect car il produit du HTML non-conforme.
Voir la définition
exacte de ce que
l'on peut mettre dans un élément <B>... </B>
, ainsi que
quelques explications sur
comment lire une spécification SGML.
J'enfonce le clou : Il faut respecter la norme. qu'un brouteur accepte
du HTML incorrect ne prouve rien. En effet un trait non-conforme du
brouteur peut disparaître du jour au lendemain ou encore votre page
sera mal rendue par un autre brouteur.
(Évidemment il est normal qu'un brouteur s'efforce de rendre quand
même un document non-conforme, mais ce n'est pas votre problème à
vous.)
Or, la norme spécifie bien les éléments
qui peuvent apparaître dans les éléments de
niveau texte.
Dans le style cryptique de la norme ça donne :
15.2.1 Font style elements: the TT, I, B, BIG, SMALL, STRIKE, S, and U elements
<!ENTITY % fontstyle
"TT | I | B | BIG | SMALL">
<!ELEMENT (%fontstyle;|%phrase;) - - (%inline;)*>
<!ATTLIST (%fontstyle;|%phrase;)
%attrs; -- %coreattrs, %i18n, %events --
>
Le truc important c'est le contenu de l'élément donné comme
“%inline
” défini ailleurs
comme :
<!-- %inline; covers inline or "text-level" elements -->
<!ENTITY % inline "#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;">
Où,
-
#PCDATA
c'est le texte usuel.
%fontstyle
c'est les elts TT, I, B, etc.
%phrase
c'est les elts EM, STRONG, etc.
%special
c'est A, IMG, etc.
%formctrl
c'est les champs d'entrée genre INPUT, SELECT, etc.
Peut-on passer de <b>txt</b><img ....><b>txt</b> à
<b>txt<img....>txt</b> ? La simplification <font
size=1>txt</font><font size=2>txt</font><font size=1>txt </font> en
<font size=1>txt<font size=2>txt</font>txt</font> est-elle acceptée?
Les deux simplifications sont valides, la première parce que
les éléments « %special
» sont bien de niveau texte (contrairement à ce qui est dit dans l'énoncé),
la seconde par le sens évident du changement de taille.