Hillo,

Au moment de concevoir un modèle de document (encore appelé modèle de contenu), vient souvent la question de savoir à quel moment mettre une « donnée » dans un attribut ou dans un noeud texte.

L'attribut a comme particularité d'être unique, et il est souvent tentant de placer dans des attributs les données uniques simples (qui ne contiennent que du texte et pas d'éléments).

Pourtant, ce qui se place dans un attribut, pourrait le plus souvent tout aussi bien être placé dans un noeud texte d'un élément enfant adéquat.

Bref, aucune contrainte particulière n'impose le choix, soit du noeud texte dans un élément enfant, soit de l'attribut, car ce qui est faisable d'une manière, est faisable de l'autre, en dehors du cas particulier des xml:id et xml:lang, qui sont standardisés sous cette forme, et pas sous une autre. Remarque : je ne parle pas des modèles de contenu pré-existants, mais de ceux en conception.

L'un ou l'autre sont possible de la même manière, pourtant, choisir un style et s'y tenir, et toujours une bonne chose.

En me posant cette question (ce qui ne m'est pas arrivé qu'aujourd'hui), je me suis fait une petite idée toute simple : dans les attributs, les données qui ne sont pas toujours directement humainement interprétables ou alors qui dictent l'interprétation. Ce qui inclut naturellement les attributs qui servent d'identifiant (ce qui colle bien à ce qui se fait le plus souvent), ce qui exclus d'avoir par exemple des attributs du genre « titre » ou « title » (erreur que j'ai faite avec certains modèles de contenu et que je suis occupé à corriger). C'est également conforme à l'usage en vigeur de mettre les indications de langue en attributs (dirige l'interprétation), et ça donnerait la préférence au noeud texte plutôt qu'à des attributs, pour les dates, par exemple, dates de mise à jour, dates de relecture, etc.

En guise d'autres exemples encore, des mots clés seraient de préférence stockés dans des noeuds texte, et des URLs, dans des attributs (pour les URLs par contre, les usages existants balancent entre les deux).

L'idée est difficile à formaliser, mais se ressent intuitivement.

Des commentaires ?
Modifié par hibou57 (18 Apr 2009 - 00:08)
Bonjour,

C'est une question que je me suis posé aussi ; je me suis fixé une règle : les attributs qualifie la donnée. Les valeurs d'attribut peuvent être décrits dans un référentiel. Ce référentiel est géré (responsable), stable dans le temps et partageable :

<longueur unite="metre"/>
<abstract langue="fr"/>
<departement code="67">Bas-Rhin</departement>
<motclef thesaurus="pactols" code="665">céramique</motclef>


et non pas :

<nom age="42">Durand</nom>
<produit prix="45.10 euros">Reblochon</produit>
<book abstract="le résumé de mon livre"/>


deca
Je me suis aussi souvent posé la question.

Je recours aux attributs quand il s'agit de qualifier l'élément (par exemple, une unité à appliquer à une grandeur comme cela a déjà été évoqué, ou bien la langue de rédaction, un identifiant, voire une marque de produit dans certains cas simples), ou bien ce qui amène à modifier son traitement par défaut (la couleur d'un texte ou d'un élément graphique, la chiralité d'une molécule chimique, la base d'une fonction logarithme...), c'est-à-dire ce qui est inséparable du contenu.