Page 1 sur 1

Ordre des balises

Publié : 24 mai 2004, 14:13
par DJiK
J'ai parfois cette erreur en validant mes pages: "document type does not allow element "xx" here".

Où est-ce qu'on peut trouver l'ordre autorisé des éléments un peu plus clairement que dans le DTD?



PS et HS: J'ai lu ici qu'il valait mieux faire du XHTML 1.0 que 1.1. Vous pouvez me rappelez pourquoi SVP? Compatibilité des navigateurs? :?:

Publié : 24 mai 2004, 16:12
par calimo
En gros il faut qu'il y ait un élément de bloc à la base : div, p, ul, ol, dl, adress, etc.
Cette erreur peut aussi provenir d'un tag mal fermé un kilomètre plus haut (je viens de passer un bon moment à en trouver un de ce genre :? )

Pour le XHTML 1.1, si je me souviens bien, tu dois l'envoyer au format application/xhtml+xml, et donc bien sur la majorité des internautes ne pourront pas le voir. Tant pis pour eux, me diras-tu, c'est à toi de voir :wink:

Publié : 24 mai 2004, 17:20
par DJiK
Je parlais pas en cas d'erreur. Mais par exemple:
<p><p> est interdit, alors que <div><div> est autorisé.
Comme il n'y a pas vraiment de logique, s'il y avait un aide mémoire... :wink:

calimo a écrit :Pour le XHTML 1.1, si je me souviens bien, tu dois l'envoyer au format application/xhtml+xml
Pas obligatoirement je pense. En tout cas, sans l'entête XML (ou m^ avec) ça marche tout aussi bien que le 1.0 avec les derniers IE et Opera.


L'embêtant avec FF et l'entête XML: s'il y a une erreur FF n'affiche pas la page, mais un gros msg d'erreur jaune. :?

Publié : 24 mai 2004, 17:28
par calimo
DJiK a écrit :Je parlais pas en cas d'erreur. Mais par exemple:
<p><p> est interdit, alors que <div><div> est autorisé.
Comme il n'y a pas vraiment de logique, s'il y avait un aide mémoire... :wink:
Ça doit exister mais je ne sais pas ou :oops:
DJiK a écrit :Pas obligatoirement je pense. En tout cas, sans l'entête XML (ou m^ avec) ça marche tout aussi bien que le 1.0 avec les derniers IE et Opera.
Ce n'est pas parce que ça marche que c'est fait correctement :wink:
Mais ça on l'a déjà dit ailleurs.
DJiK a écrit :L'embêtant avec FF et l'entête XML: s'il y a une erreur FF n'affiche pas la page, mais un gros msg d'erreur jaune. :?
Eh oui, une erreur de parsing ne passe pas la rampe en xml. Ça évite souvent de devoir passer par la validation.
C'est comme ça, on n'y peut rien.
Remarque que sous Opera c'est pareil (mais l'erreur est souvent mieux expliquée je trouve).

Publié : 24 mai 2004, 17:29
par AllanTK
L'embêtant avec FF et l'entête XML: s'il y a une erreur FF n'affiche pas la page, mais un gros msg d'erreur jaune.
C'est normal, car le tag xml (<? ?>) met la page XHTML en mode XML qui n'accepte aucune erreur de syntaxe, le HTML est plus laxiste.

Publié : 24 mai 2004, 17:37
par DJiK
Ouais, mais souvent l'erreur ne vient pas de moi dans ces cas là: erreur de PHP ou de base de données -> spouf, on peut m^ pas la lire! :twisted:

Re: Ordre des balises

Publié : 24 mai 2004, 18:40
par Bobe
DJiK a écrit :J'ai parfois cette erreur en validant mes pages: "document type does not allow element "xx" here".

Où est-ce qu'on peut trouver l'ordre autorisé des éléments un peu plus clairement que dans le DTD?
DJiK a écrit : Je parlais pas en cas d'erreur. Mais par exemple:
<p><p> est interdit, alors que <div><div> est autorisé.
Comme il n'y a pas vraiment de logique, s'il y avait un aide mémoire...
Tu trouveras ces informations dans les fragments de DTD.
Exemple pour l'élément <p>:

Code : Tout sélectionner

<!ELEMENT P - O (%inline;)*            -- paragraphe -->
<!ATTLIST P
  %attrs;                              -- %coreattrs, %i18n, %events --
  >
L'élément P dont la balise ouvrante est obligatoire et la balise fermante est optionnelle accepte zéro, un ou plusieurs éléments listés dans la parenthèse (là, il faut cliquer sur le lien %inline; pour aller à la partie de la DTD définissant la liste '%inline;').

Autant fermer quand même ses balises même si on travaille en html. En xhtml, les balises fermantes sont toujours obligatoires. (ou comme ça pour les balises vides: <balise />).

Bon, le gros problème avec les recommandations du W3C, c'est qu'elles s'adressent la plupart du temps à deux catégories de personnes:
  • Les personnes qui vont utiliser l'outil en tant que tel (faire des pages (x)html, écrire une feuille de style css, etc)
  • Et les personnes qui vont implémenter ces outils (les concepteurs de navigateurs, etc)
C'est pour cela que ces documents sont assez techniques et parfois abruptes dans leur approche. Mais lire une DTD n'est pas vraiment compliqué, c'est juste une question d'habitude.

Hop:
Lire une DTD ( Document Type Definition)
DJiK a écrit : PS et HS: J'ai lu ici qu'il valait mieux faire du XHTML 1.0 que 1.1. Vous pouvez me rappelez pourquoi SVP? Compatibilité des navigateurs? :?:
Un document interessant:
http://www.dionidium.com/2003/09/00112
Ouais, mais souvent l'erreur ne vient pas de moi dans ces cas là: erreur de PHP ou de base de données -> spouf, on peut m^ pas la lire!
Qui a écrit le code PHP ? C'est en tout cas la personne qui l'a écrit qui est à l'origine de l'erreur.
La base de données stocke ce qu'on lui demande de stocker.
php fait les traitements qu'on lui demande de faire.

Publié : 25 mai 2004, 00:10
par bobo
DJiK a écrit :Je parlais pas en cas d'erreur. Mais par exemple:
<p><p> est interdit, alors que <div><div> est autorisé.
Comme il n'y a pas vraiment de logique, s'il y avait un aide mémoire... :wink:
Bin si, il y a une logique. <div>, c'est un élément pauvre sémantiquement, il sert à regrouper des éléments comme on veut.
<p>, c'est un paragraphe. Dans un texte ordinaire, il est impossible d'imbriquer des paragraphes, ça n'a pas de sens ! Donc c'est interdit.

Publié : 25 mai 2004, 09:43
par DJiK
calimo a écrit :Ce n'est pas parce que ça marche que c'est fait correctement :wink:
En effet!

Bobe a écrit :Mais lire une DTD n'est pas vraiment compliqué
Heu... :oops:

Bobe a écrit :Qui a écrit le code PHP ?
Ben moi...
Bobe a écrit :C'est en tout cas la personne qui l'a écrit qui est à l'origine de l'erreur.
Personne n'est parfait! :P Disons qu'il faut désactiver le XML le temps de faire le PHP correct, puis le remettre après pour vérifier les balises.

Bobe a écrit :La base de données stocke ce qu'on lui demande de stocker.
C'est là le hic surtout. :roll: Je sais pas ce que les neuneus qui vont se servir du site après vont y mettre.
Donc je peut pas mettre en XML: s'ils font une erreur ça marchera plus, mais ils s'en rendront pas compte (sous IE je suppose). :(


Bref... je laisse XHTML 1.0. Merci pour vos réponses. :)

Publié : 25 mai 2004, 10:34
par olab
DJiK a écrit :C'est là le hic surtout. :roll: Je sais pas ce que les neuneus qui vont se servir du site après vont y mettre.
Donc je peut pas mettre en XML: s'ils font une erreur ça marchera plus, mais ils s'en rendront pas compte (sous IE je suppose). :(

Bref... je laisse XHTML 1.0. Merci pour vos réponses. :)
Pourquoi, ils vont y mettre des balises ? Je suis pas sûr que ça soit une bonne idée...

Publié : 25 mai 2004, 12:26
par DJiK
olab a écrit :Pourquoi, ils vont y mettre des balises ? Je suis pas sûr que ça soit une bonne idée...
Moi non plus, mais il doit y avoir un peu de présentation dans le texte.

Je pourrai faire comme dans les forums, dans mon panneau d'admin, avec des balises [comme ça] qui seront remplacées. :?

Publié : 25 mai 2004, 12:40
par olab
Bah, ça reviendrait au même