Up Next

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ù,
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.


Up Next