5568 sujets

Sémantique web et HTML

Bonjour à tous,

Je sais que les <ul> sont des listes à puce, et les <dl> des listes de définitions. Cependant je m'interroge sur les bonnes balises à utiliser pour une présentation de ce genre :
- Nom : XXX
- Prénom : XXX
- Date de naissance : XXX

Vaut-il mieux utiliser les <dl><dt>Nom</dt><dd>XXX</dd></dl> ou utiliser les <ul> en séparation les titres des valeurs avec des <span> différents ?

Merci d'avance Smiley smile
Gaylord.P a écrit :
Bonjour à tous,

Je sais que les <ul>; sont des listes à puce, et les <dl> des listes de définitions. Cependant je m'interroge sur les bonnes balises à utiliser pour une présentation de ce genre :
- Nom : XXX
- Prénom : XXX
- Date de naissance : XXX

Vaut-il mieux utiliser les <dl><dt>Nom</dt><dd>XXX</dd></dl> ou utiliser les <ul> en séparation les titres des valeurs avec des <span> différents ?

Merci d'avance Smiley smile

Tout dépend du point de vue:
Les <ul> sont normalement des balises de présentation pour provoquer un décalage, à une époque où il n'y avait pas de CSS. Les <dl> sont des balises sémantiques, choses dont se préoccupait peu au début du Web.
La tendance étant à mettre de la sémantique dans les balises, ne serait-ce que pour faciliter le référencement, il me paraitrait judicieux de mettre des <dl> et de de les styler bien entendu.
Moyennant quoi en vieux briscard je continue à faire le contraire, mais je ne prétends pas avoir raison Smiley eek
C'est un peu comme de dire à un Américain d'utiliser le système métrique: ils sont d'accord que c'est mieux mais ils ne le font pas Smiley cligne
Bonjour,

La balise DL était une liste de définitions en HTML4, elle a été redéfini en HTML5 en liste de descriptions. DT étant le terme à décrire et DD la (ou les) valeurs de la description.

Sémantiquement on pourrait considérer que "Margarette Pingeot" n'est pas une description à proprement parler du terme "Nom". Cependant, ce balisage est considéré approprié pour renseigner des métadonnées.

Donc dans le cas ici, je pense que cet usage est recommandé. De plus, en cas de feuille de style désactivée, c'est quand même bien plus lisible.

Plus d'infos: HTML5 Doctor | The dl element
Modifié par Sugarskill (15 Feb 2015 - 02:48)
PapyJP a écrit :
Les <ul> sont normalement des balises de présentation pour provoquer un décalage, à une époque où il n'y avait pas de CSS.

Non, l'élément ul est un élément sémantique, dans la mesure où il permet de structurer des listes non ordonnées.
Victor BRITO a écrit :

Non, l'élément ul est un élément sémantique, dans la mesure où il permet de structurer des listes non ordonnées.

Oui, on peut voir cela comme ça.
En fait à l'origine on mélangeait allégrement la présentation et la sémantique, ne serait-ce que parce que la sémantique n'était traitée par aucun automate.
Avec la course au référencement, on en est maintenant à introduire des balises ou des attributs sémantiques un peu partout, ce qui n'est pas sans conséquence sur la façon de concevoir les pages. Pour complaire à Google, on risque fort d'avoir des sites de plus en plus ressemblants.
Je vous recommande de regarder http://schema.org/ qui essaie de mettre un peu d'ordre dans ce fouillis. Je l'utilise sur l'un de mes sites pour essayer d'améliorer le référencement, je ne suis pas certain que ce soit très convainquant. Comme je l'ai dit en blaguant dans un autre fil, l'amélioration du référencement passe par le portefeuille.
Hmmm il y a pas mal de contre ou demi vérités là-dedans… Smiley sweatdrop
PapyJP a écrit :
[à propos de l'élément ul] En fait à l'origine on mélangeait allégrement la présentation et la sémantique, ne serait-ce que parce que la sémantique n'était traitée par aucun automate.

Non, l'élément ul a toujours eu pour objectif de structurer des listes non-ordonnées (comme son nom l'indique) et le signifier aux agents utilisateurs, qui le traitent comme ils le souhaitent avec éventuellement une mise en forme au moyen de CSS, ce n'est pas une balise de présentation comme l'était center, par exemple.
PapyJP a écrit :
Avec la course au référencement, on en est maintenant à introduire des balises ou des attributs sémantiques un peu partout, ce qui n'est pas sans conséquence sur la façon de concevoir les pages. Pour complaire à Google, on risque fort d'avoir des sites de plus en plus ressemblants.

Ben ça n'a rien à voir, dans la mesure ou la structure de page est justement séparée de sa mise en forme. pour une même structure HTML, les possibilités de mise en forme sont justement infinies… donc je ne vois pas en quoi la structuration sémantique du contenu pourrait conduire à une uniformisation graphique des contenus disponibles sur internet. C'est même plutôt le contraire.
PapyJP a écrit :
Comme je l'ai dit en blaguant dans un autre fil, l'amélioration du référencement passe par le portefeuille.

Le passage par le portefeuille permet de gagner en visibilité via l'achat d'adwords, mais pas vraiment d'améliorer le référencement intrinsèque des contenus du site… je ne te suis pas là encore Smiley confus
Modifié par audrasjb (15 Feb 2015 - 18:10)
Modérateur
a écrit :
Ben ça n'a rien à voir, dans la mesure ou la structure de page est justement séparée de sa mise en forme. pour une même structure HTML, les possibilités de mise en forme sont justement infinies…

Malheureusement, dl souffre, à mon sens, d0un défaut de structure qui rend sa mise en forme complexe et nécessitant souvent moults bricolages, idéalement il devrait avoir une structure de la sorte:

<dl>
  <li>
    <dt>HTML</dt>
    <dd>Hyper Text Markup Language</dd>
  </li>
  <li>
    <dt>www</dt>
    <dt>web</dt>
    <dd>World wide web</dd>
  </li>
</dl>

Ce qui rendrait l'identification des éléments de liste par CSS ou JS bien plus aisé. Du coup pour réaliser une mise en page de la forme:

- Nom : XXX
- Prénom : XXX
- Date de naissance : XXX

ul est un choix pragmatique qui simplifie bien la vie…
Modifié par kustolovic (15 Feb 2015 - 18:50)
kustolovic a écrit :
ul est un choix pragmatique qui simplifie bien la vie…


Les tables aussi sont un choix pragmatique qui simplifient la vie et surtout le centrage vertical, mais heureusement que l'on ne s'est jamais allé à la facilité Smiley cligne

Je ne vois pas trop en quoi, une liste de description avec multiple termes pour une description serait vraiment casse-tête à styler. Il y a bien assez de sélectors et pseudo-sélectors en CSS pour cibler les élèments HTML.

Wrapper dt et dd dans un container (li ou di pour description-item?), j'ai l'impression que ça serait un symptome de divite.


PapyJP a écrit :
Avec la course au référencement, on en est maintenant à introduire des balises ou des attributs sémantiques un peu partout


Le seul rapport entre le référencement et la sémantique, c'est que le second améliore naturellement le premier. Mais le référencement n'est qu'une conséquence d'une bonne sémantique (comme l'accessibilité et la maintenabilité), pas la raison de son utilisation.
Un HTML sémantique est un HTML bien écrit selon les règles même du langage (un HTML non sémantique, c'est comme baraguiner en anglais, t'as de grandes chances de te faire comprendre d'une façon ou d'une autre, mais tu peux pas dire que tu parles la langue).

Pour le reste, tout d'accord avec la réponse d'audrasjb.
a écrit :

Malheureusement, dl souffre, à mon sens, d0un défaut de structure qui rend sa mise en forme complexe et nécessitant souvent moults bricolages, idéalement il devrait avoir une structure de la sorte:
...

a écrit :

Wrapper dt et dd dans un container (li ou di pour description-item?), j'ai l'impression que ça serait un symptome de divite.


C'est un choix qui se défend. Adobe a justement choisi cette construction-là pour les PDF balisés (avec d'autres noms à la place de dl/di/dt/dd évidemment). Adobe n'est pas un modèle à suivre en terme de sémantique, mais pour celui-là, je pense qu'il y a quand même des arguments.

Moi ce que je n'ai pas encore compris avec dl/dt/dd en HTML, c'est pourquoi on autorise plusieurs dt ou dd d'affilée et qu'on ne se restreint pas à une stricte alternance dt/dd/dt/dd. Je ne vois pas à quoi ça sert, concrètement.
Si la description dans un dd est vraiment longue, on peut mettre des <p> dedans, donc enchaîner plusieurs <dd> ne sert à rien; et plusieurs mots qui auraient la même description, ça me paraît tout aussi bizarre.

a écrit :

Les tables aussi sont un choix pragmatique qui simplifient la vie et surtout le centrage vertical, mais heureusement que l'on ne s'est jamais allé à la facilité


Sauf que, dans une perspective métadonnées / base de données, on pourrait éventuellement aussi bien accepter un tableau ici.

En fait d'après moi, ce qui pourrait être déterminant pour le choix au final, ce serait la longueur du contenu des dd ou td. Si on prévoit d'avoir quelque chose de court (quelques mots ou quelques chiffres), ul et table ça irait assez bien; sinon, dl.

Par contre j'ai l'impression qu'il y a beaucoup de sites qui font ça maintenant :

<div>
<dl>
<dt></dt>
<dd></dd>
</dl>
</div>
<div>
<dl>
<dt></dt>
<dd></dd>
</dl>
</div>


Et ça c'est archi-faux: ce n'est plus une liste qu'on construit, mais un ensemble de listes à un seul item, ce qui est bien sûr totalement absurde.
Modérateur
Sugarskill a écrit :

Les tables aussi sont un choix pragmatique qui simplifient la vie et surtout le centrage vertical, mais heureusement que l'on ne s'est jamais allé à la facilité Smiley cligne

Oh et pourtant, il y a une différence entre chasser la construction de page par table dans des tables dans des tables dans des tables, et utiliser de temps en temps une table de présentation (ce qui m'arrive toujours en 2015 dans de rares cas particuliers)

Sugarskill a écrit :
Je ne vois pas trop en quoi, une liste de description avec multiple termes pour une description serait vraiment casse-tête à styler. Il y a bien assez de sélectors et pseudo-sélectors en CSS pour cibler les élèments HTML.

Des choses simples comme encadrer les groupes de termes/description ou même aligner des couples termes/descriptions, ou encore compter et identifier les groupes en JS) deviennent vite complexes et peu souple, à moins de se forcer à respecter une utilisation HTML stricte (empêcher les multiples termes ou multiples descriptions)

Sugarskill a écrit :
Wrapper dt et dd dans un container (li ou di pour description-item?), j'ai l'impression que ça serait un symptome de divite.

Pourtant la spec parle bien de groupes de termes/définitions. Des groupes non groupés. Donc un élément qui aurait parfaitement du sens. Rien à voir avec de la divite.

Sugarskill a écrit :
Un HTML sémantique est un HTML bien écrit selon les règles même du langage (un HTML non sémantique, c'est comme baraguiner en anglais, t'as de grandes chances de te faire comprendre d'une façon ou d'une autre, mais tu peux pas dire que tu parles la langue).

Non absolument pas. Ce que tu décris c'est de la syntaxe. La sémantique est une question de signification de sens, et va donc au-delà de la syntaxe. C'est une question de choix des balises appropriées en fonction du contenu, mais aussi de noms de classes, id, etc.
C'est d'ailleurs ce qui rend la sémantique délicat et source de débat comme celui-ci. Les deux propositions sont parfaitement correctes au niveau de la syntaxe et des règles HTML.

QuentinC a écrit :
Moi ce que je n'ai pas encore compris avec dl/dt/dd en HTML, c'est pourquoi on autorise plusieurs dt ou dd d'affilée et qu'on ne se restreint pas à une stricte alternance dt/dd/dt/dd. Je ne vois pas à quoi ça sert, concrètement.

Pour les multiples descriptions, le cas d'école est un dictionnaire. Il y a toujours plusieurs description pour un terme. Pour des listes de métadonnées, elles peuvent avoir plusieurs entrées (auteur(s), spécialité(s), etc.)
Pour les multiples termes, il peut s'agir de synonymes, d’acronymes, traductions, pseudonymes, diminutifs, etc., par exemple:
- www / world wide web / web / toile
- Blaise Cendrars / Frédéric-Louis Sauser
Bonjour Smiley smile

Fraichement levée, voici mes réponses / réflexions :

kustolovic a écrit :
Oh et pourtant, il y a une différence entre chasser la construction de page par table dans des tables dans des tables dans des tables, et utiliser de temps en temps une table de présentation


Oui et non, ça dépend ce qu'on décide de regarder.
Si on se focalise sur une propreté de code global, effectivement ce n'est pas la même chose d'utiliser un tableau de présentation de façon isolée que de baser toute sa mise en page dessus.
Si on se focalise sur le principe de séparer strictement le contenu de la mise en page, un tableau de présentation ou 20, c'est la même.

QuentinC a écrit :
Sauf que, dans une perspective métadonnées / base de données, on pourrait éventuellement aussi bien accepter un tableau ici.


Comme le sujet était la mise en page des listes de définition, je faisais allusion à l'utilisation de tableaux de présentation.
Tableau de données pour métadonnées effectivement ça se réfléchit. Je pense que ça dépend du type de données.
Là malheureusement, je n'arrive pas à expliquer exactement comment et pourquoi, mais utiliser un tableau de données pour des données nom, prénom, adresse, d'une seule personne (métadonnées de contact), rien qu'à l'idée, ma logique me lance des warnings, ça me parait juste une très mauvaise pratique.


QuentinC a écrit :
C'est un choix qui se défend.

kustolovic a écrit :
Des choses simples comme encadrer les groupes de termes/description ou même aligner des couples termes/descriptions, ou encore compter et identifier les groupes en JS) deviennent vite complexes et peu souple, à moins de se forcer à respecter une utilisation HTML stricte (empêcher les multiples termes ou multiples descriptions)

kustolovic a écrit :
dl souffre, à mon sens, d0un défaut de structure qui rend sa mise en forme complexe et nécessitant souvent moults bricolages

kustolovic a écrit :
ul est un choix pragmatique qui simplifie bien la vie

kustolovic a écrit :
Pourtant la spec parle bien de groupes de termes/définitions. Des groupes non groupés. Donc un élément qui aurait parfaitement du sens. Rien à voir avec de la divite.


Je n'ai pas dit que ça ne se défendait pas en terme de logique, mais ici l'argumentation abordée était au niveau de styler l'élément. Rajouter des éléments HTML uniquement pour des questions de mise en page et/ou gagner 3 lignes de css.
Surtout avec l'exemple tout simple de nom, prénom, ddn. Utiliser ul seulement parce que c'est plus simple d'aligner le terme et la description sur la même ligne, bon bah autant arrêter CSS dessuite et changer de hobbie Smiley smile

Pour la plupart des cas ou DL est utilisé, je pense qu'on peut bien s'en sortir déjà en utilisant les siblings selectors trop souvent oubliés. Mais effectivement ça a ses limites.
Celle que j'ai rencontrées seraient surtout les limites des sélecteurs CSS et son incapacité à sélectionner le last-sibling.

Après en terme de design, on pourrait souhaiter avoir un élément supplémentaire contenant termes + descriptions (disons qu'on veuille en faire une espèce de carte avec un box-shadow)

<dl>
    <di>
      <dt lang='en-GB'><dfn>behaviour</dfn></dt>
      <dt lang='en-US'><dfn>behavior</dfn></dt>
      <dd>The way in which one acts or conducts oneself, especially towards others.</dd>
    </di>
</dl>


C'est vrai que ça serait bien, mais autre projet, autre créa. Là ce qu'on voudrait c'est ce sont uniquement les termes ou leurs descriptions qui soient en forme de carte avec ombres, on pourrait imaginer un groupage par termes / descriptions


<dl>
    <dt>
      <di lang='en-GB'><dfn>behaviour</dfn></di>
      <di lang='en-US'><dfn>behavior</dfn></di>
    </dt>
    <dd>The way in which one acts or conducts oneself, especially towards others.</dd>
</dl>

<dl>
  <dt>Authors:</dt>
  <dd>
    <di>Remy Sharp</di>
    <di>Rich Clark</di>
    <di>Bobby Jo</di>
  </dd>
</dl>


Bon alors idéalement, il faudrait grouper termes + descriptions ensemble, mais aussi multiples termes et multiples descriptions


<dl>
    <di>
        <dh>
            <dt lang='en-GB'><dfn>behaviour</dfn></dt>
            <dt lang='en-US'><dfn>behavior</dfn></dt>
        </dh><!-- / definition-header (optional) -->
        </dd>The way in which one acts or conducts oneself, especially towards others.</dd>
    </di><!-- / definition-item (mandatory) -->
</dl>

<dl>
    <di>
        <dt>Authors:</dt>
        <da>
            <dd>Remy Sharp</dd>
            <dd>Rich Clark</dd>
            <dd>Bobby Jo</dd>
        </da><!-- / definition-article (optional) -->
    </di><!-- / definition-item (mandatory) -->
<dl>


Tout se défend, mais mon avis personnel ici est que en l'absence d'apporter quoique ce soit de nouveau et de pertinent d'un point de vue sémantique, le seul rajout d'une balise à des fins de mise en page, ça me fait penser à une mauvaise pratique.

Après on peut se poser la question: est-ce à l'HTML de s'adapter pour offrir plus de possibilités de design ou est-ce au design de s'adapter aux limitations techniques? Qu'elle est la priorité des problématiques rencontrées? Est-ce que ça apporte vraiment quelque chose de pertinent, et dans la logique et dans la pratique ?
Sincèrement, je ne pense pas pouvoir me permettre de prendre des positions catégoriques à ce niveau, je m'abstiendrait donc de le faire Smiley smile

kustolovic a écrit :
Non absolument pas. Ce que tu décris c'est de la syntaxe.

Non ça c'est ce que tu comprends Smiley cligne Je parlais bien de sémantique.
Parler une langue ne se limite pas à comprendre la syntaxe, mais aussi connaitre le vocabulaire adapté selon le contexte.
L'exemple que j'avais en tête c'est l'ex-President Sarkozy qui avait sorti en anglais "It's a nice time".
La syntaxe est bonne. Mais dans le contexte, il s'est trompé de vocabulaire, c'était pas "time" mais "weather". Et même en allant plus loin, si l'on imaginait que l'on voudrait parler du moment, la syntaxe est toujours bonne mais on dit "good time". Par règles / conventions / usage, appelle ça comme tu veux.

C'était peut-être l'emploi du verbe "baragouiner" qui induit en erreur mon exemple. Dans tous les cas c'était juste une comparaison, qui reste dans les limites de ce qu'elle est, juste pour expliquer que l'HTML c'est comme une langue vivante, c'est soumis à règles / conventions / usages dont celles de la sémantique pour être proprement / correctement parlé Smiley cligne
Et bien ! Quelle histoire ! En ce qui me concerne je pense que Google se moque éperdument de la manière dont on utilise les balises. Je croirais à ce petit jeux quand je le verrais, par exemple, faire correspondre une balise <figcaption> (donc normée) à l'image qui s'y rapporte (le tout placé dans une balise <figure>, comme il se doit). Par contre il y a un truc dans lequel je crois (un peu) pour l'instant : ce sont les données structurées, même s'il s'agit plus d'un "ciblage" des données que d'une recherche d'amélioration du positionnement.

Ce qui donnerait quelque chose comme ceci :
<ul itemscope="" itemtype="https://schema.org/Organization">
	<li><strong itemprop="name">Radio Espérance</strong></li>
	<li itemprop="address" itemscope="" itemtype="https://schema.org/PostalAddress"><span itemprop="streetAddress">9 avenue Benoît-Charvet</span>,<br><span itemprop="postalCode">42000</span> <span itemprop="addressLocality">Saint-Etienne,<br>France</span></li>
	<li>Téléphone&nbsp;: <span itemprop="telephone">04 77 49 59 69</span></li>
</ul>

Les <li> sont là juste pour le fun, pas pour la sémantique en ce qui me concerne.
Modifié par Olivier C (17 Feb 2015 - 06:12)