On lit (et écrit également, c'est fatal) beaucoup de choses sur HTML5 depuis quelques années. Au programme des réjouissances on trouve pêle-mêle le tag canvas pour faire du graphisme programmatique, le stockage local pour, par exemple pour le mode offline des applications web, les désormais célèbres tags audio et video déjà utilisés par dailymotion et youtube, le drag and drop... J'en passe et des meilleurs.

Par contre une nouveauté à propose de laquelle je n'avais jamais rien lu et que j'ai découvert hier ce sont les embedded custom non-visible data attributes, c'est là dire des méta informations sous forme d'attributs que l'on peut ajouter à loisir sur n'importe quel élément d'une page HTML et qui peuvent être lus et interprétés par un script dans la page. C'est un peu équivalent à ce qu'il est possible de faire avec XHTML en ajoutant des attributs définis par ses propres namespaces.

Un exemple :

<ul id="pointsOfInterest">
  <li data-latitute="48°51" data-longitude="2°17">La tour Eiffel</li>
  <li data-latitute="48°38" data-longitude="1°30">La mont Saint-Michel</li>
</ul>

Ensuite avec un script on peut utiliser ces coordonnées. Par exemple on peut monter où se trouve le lieu sur une carte.

/* par exemple avec jQuery */
$("#pointsOfInterest > li").click(function() {
    var lat = $(this).dataset("latitude");
    var long = $(this).dataset("logitude");
    showOnMap(lat, long);
}

Un autre exemple : utilisation d'un attribut data-at pour afficher des sous-titres en fonction d'un time-code dans une présentation audio (lue avec le tag audio il va sans dire) : http://www.toolness.com/wp/?p=772.

Je trouve cette nouvelle façon de passer des données supplémentaires très intéressante ; elle est surtout plus simple à mettre en œuvre que les namespaces en XHTML. Toutefois, et c'est sans doute la raison pour laquelle on en parle peu, les navigateur ne l'implémente pas encore. Pour ceux qui sont tout de même pressés de jouer avec, il existe un plugin jQuery qui permet de simuler l'objet dataset : HTML5 Dataset jQuery Plugin.