Aller au contenu

Pas d'élément a au tout début de l'élément html ?


pierredureau

Sujets conseillés

Comme je suis un gentil garçon accessible, j'ai fait un lien pour sauter le menu.

<body id="lebund">
<a href="#contenu" id="acces">Accéder directement au contenu</a>
<ul id="menu">
   <li><a href="#menu1">Intro</a>
....etc...

Mais le validateur me dit :

Line 16, column 29: document type does not allow element "a" here; missing one of "p", "h1", "h2", "h3", "h4", "h5", "h6", "div", "pre", "address", "fieldset", "ins", "del" start-tag

<a href="#contenu" id="acces">Accéder directement au contenu</a>

The mentioned element is not allowed to appear in the context in which you've placed it; the other mentioned elements are the only ones that are both allowed there and can contain the element mentioned. This might mean that you need a containing element, or possibly that you've forgotten to close a previous element.

Ben alors ! Je comprend pas.

Dois-je me résoudre à encadrer mon lien d'un div (ça marche ainsi...)?

Lien vers le commentaire
Partager sur d’autres sites

Comme je suis un gentil garçon accessible, j'ai fait un lien pour sauter le menu.

<{POST_SNAPBACK}>

:wub:

L'élément a est un élément en ligne.

Avec un doctype XHTML, il doit être contenu dans un élément de type bloc p, ul, hn...

Mais je ne parviens pas à trouver où cela est spécifié :huh:

Dans ton cas, un paragraphe conviendrait bien en n'oubliant pas (si tu as plusieurs liens de les séparer par un caractère imprimable tel que | )

Lien vers le commentaire
Partager sur d’autres sites

Pas seulement en XHTML, Monique :

<!ENTITY % block

  "P | %heading; | %list; | %preformatted; | DL | DIV | NOSCRIPT |

      BLOCKQUOTE | FORM | HR | TABLE | FIELDSET | ADDRESS">

<!ENTITY % flow "%block; | %inline;">

<!--==== Document Body ========-->

<!ELEMENT BODY O O (%block;|SCRIPT)+ +(INS|DEL) -- document body -->

(DTD HTML4.01 http://www.w3.org/TR/html401/sgml/dtd.html#block )

La ligne <!ELEMENT BODY... nous indique quel peut être le contenu de l'élément body... et l'élément A ne figure pas dans la liste (voir la ligne <!ENTITY % block...)

Lien vers le commentaire
Partager sur d’autres sites

Pas seulement en XHTML, Monique :

<{POST_SNAPBACK}>

Juste... en fait le validateur (du W3C ;) ) l'accepte en HTML 4.01 Transitional mais pas en strict.

Lien vers le commentaire
Partager sur d’autres sites

Une remarque sur le choix du balisage pour contenir ce lien : un paragraphe s'il n'y a qu'un seul lien ? J'avoue que je ne vois pas bien en quoi "Accéder directement au contenu" aurait la nature sémantique d'un paragraphe de texte...

Vous allez me dire que je coupe les cheveux en 4 pour le plaisir de parler de sémantique et de vous trouver une balise originale ?

En fait, non, c'est beaucoup plus prosaïque que ça : comme il n'y a aucune information spécifique à ajouter à ce lien, l'élément "neutre" <div> me semble tout indiqué. A force de dire qu'il ne faut pas mettre trop de <div> pour avoir un balisage signifiant, on finit par ne plus l'employer là où il le faudrait ;)

Lien vers le commentaire
Partager sur d’autres sites

à Laurent

Dans un cas classique de lien d'échappement, souvent celui-ci est accompagné d'un autre lien comme allez à la recherche ou autre du meme genre et dans ce cas une liste est utilisée.

Ma question est de savoir si une liste à item unique à t-elle un sens ?

Ce qui me paraît de prime abord un non sens puisqu'une liste est une énumération.

Lien vers le commentaire
Partager sur d’autres sites

Dans un cas classique de lien d'échappement, souvent celui-ci est accompagné d'un autre lien comme allez à la recherche ou autre du meme genre et dans ce cas une liste est utilisée.

Tout à fait. Ma remarque ne concernait que le cas d'un lien unique.

Ma question est de savoir si une liste à item unique à t-elle un sens ?

Ce qui me paraît de prime abord un non sens puisqu'une liste est une énumération.

La vieille question philosophique de savoir à partir de combien d'item commence une liste, à partir de combien de grains de blé a-t-on un "tas" de grains de blé... est certes passionnante, mais n'a guère de rapport avec la structuration HTML.

Il s'agit plutôt de se demander, AMHA:

- Quel bénéfice actuel et/ou futur puis-je tirer de mon choix de balisage ?

- Quel bénéfice actuel et/ou futur pour les utilisateurs ?

Concrètement, si je n'ai qu'un seul lien aujourd'hui, mais que je suis susceptible d'en ajouter par la suite, une liste d'un élément unique est un choix tout à logique, puisque je réduirai ainsi les manipulations à effectuer lors de la mise à jour de mon code.

De même, dans un contexte de listes successives (une page référençant une série de liens classés thématiquement), une de ces listes peut très bien n'avoir qu'un seul item... parce que son contenu se réduit à cela. Le bénéfice pour l'auteur est de ne pas avoir à gérer par exemple une double présentation de <ul> et de <p> (ou de <div). Et le bénéfice pour l'utilisation est une présentation uniforme du contenu, ainsi qu'une restitution plus compréhensible dans un lecteur d'écran. Le traitement par une "machine" en sera également facilité...

Les choix sémantiques sont en fait des choix utilitaristes et pragmatiques ;)

Lien vers le commentaire
Partager sur d’autres sites

Comme Laurent Denis, j'aurai tendance à mettre div dans ce cas.

Par contre, je suis très étonné qu'on ne puisse pas mettre d'éléments inline directement enfants de body. Sans m'être renseigné, je croyais que body était de type block (donc pouvant contenir à la fois des blocks et des inlines) mais en fait il est hors type. Et beh !

A quand un cours pour apprendre à lire une DTD ?

Lien vers le commentaire
Partager sur d’autres sites

Par contre, je suis très étonné qu'on ne puisse pas mettre d'éléments inline directement enfants de body. Sans m'être renseigné, je croyais que body était de type block (donc pouvant contenir à la fois des blocks et des inlines)  mais en fait il est hors type. Et beh !

La distinction est un peu plus complexe : il y a trois types de contenus "génériques" dans les DTD HTML:

- %block

- %inline

- %flow qui mêle les deux précédents.

Plus les exceptions définies élément par élément sur ce qu'ils peuvent contenir.

Modifié par LaurentDenis
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...