les microformateurs

18 October 2008

Emily Lewis : “Parvenir à la Sémantique avec les Microformats, 4ème partie - hCalendar”

Filed under: hcalendar, ressources, traduction — Christophe Ducamp @ 17:53

Microformats

Nous voici de nouveau à plonger dans le monde excitant (au moins pour moi) des microformats. Basé sur ce que j’avais plannifié au début, cet article marque le mi-parcours de la série. A ce stade, j’ai discuté de trois implémentations des microformats sur A Blog Not Limited :

  • Spécifier les relations fondées sur les liens en utilisant l’attribut rel dans la 1ère Partie
  • Donner aux liens un “visage humain” en utilisant le microformat XFN dans la 2ème Partie
  • Décrire les personnes, les sociétés et lieux avec le microformat hCard dans la 3ème Partie

Pas mal. Mais cela ne fait que gratter la surface des microformats.

Aussi, allons droit vers le microformat hCalendar, que j’utilise pour ajouter de la sémantique et de la structure à mon contenu pour les événements et activités basés sur des dates et heures.

Origines : iCalendar

iCalendar (ou iCal) est un standard pour partager des données de calendrier. Plus fréquemment, il est utilisé dans les échanges d’email, bien qu’il ne soit pas seulement limité à ce médium.

Comme la hCard, hCalendar a été introduit de manière à ce que les auteurs web puissent inclure des données iCalendar dans leurs pages web.

hCalendar est une représentation 1:1 du iCalendar, qui permet aux parseurs d’extraire de l’information d’événement provenant d’une page web de manière à ce qu’elle puisse être utilisée dans les programmes de calendriers (parmi d’autres usages).

Note historique : iCalendar est basé sur vCalendar (Virtual Calendar), qui est une application de calendrier en open source pour publier et maintenir des événements et rendez-vous en ligne. vCalendar a été développé avec le format de carte de visite électronique vCard.

Activités Fondées sur Date/Heure

Le microformat hCalendar décrit le type d’information à propos d’évènements (ou tout ce qui est basé sur les date/heure) que vous auriez sur un calendrier, à savoir (mais non limité) :

  • Résumé
  • Date et heure
  • Lieu
  • Description détaillée
  • Récurrence

Les Bases

Tout comme hCard, hCalendar a quelques règles de base :

  • Les propriétés et sous-propriétés sont exprimées sous des valeurs class.
  • Du fait de la relation 1:1 avec iCalendar, les propriétés spécifiées hCalendar sont basées sur les noms de propriétés de iCalendar (à savoir, vevent).
  • Les propriétés et sous-propriétés sont sensibles à la casse.
  • La propriété “racine” ne peut pas être mélangée avec n’importe laquelle de ses propriétés. De ce fait, <p class="vevent summary"> est invalide.

Et même si ce n’est pas une règle, il est important de garder ça à l’esprit : le marquage utilisé importe peu.

Les valeurs de classe (propriétés/sous-propriétés) définissent le microformat hCalendar.

Ceci étant dit, j’encourage vraiment le marquage sémantique (et cela va sans dire valide).

Le Profil

Comme pour tous les microformats, il est recommandé de faire référence au profil hCalendar dans le <head> des pages web qui contiennent le microformat :

<head profile=”http://purl.org/uF/hCalendar/1.0/”>

Le W3C autorise plusieurs valeurs de profils, séparées par des espaces blancs, ainsi vous pouvez lister plusieurs profils si vous choisissez :

<head profile="http://gmpg.org/xfn/11 http://purl.org/uF/hCard/1.0/” http://purl.org/uF/hCalendar/1.0/“>

Cependant, si vous référencez des microformats-non-draft (et hCalendar est non-draft), vous pouvez utiliser à la place l’URL profil combinée, qui couvre tous les microformats non-draft :

<head profile="http://purl.org/uF/2008/03/“>

Si vous faites référence à la fois à des microformats non-draft et draft, vous pouvez utiliser ce profil combiné avec les profils pour les nouveaux/draft microformats.

L’exemple

Ce blog est encore relativement nouveau. Aussi, je n’ai pas eu beaucoup d’opportunités de lister de l’information d’évènement.

En fait, je n’ai qu’un exemple vivant, grâce à un article sur un BarCamp récent à Albuquerque où j’ai utilisé le microformat hCalendar :

  1. <div class=”vevent”>
  2. <p>
    Oui, c'est un billet court, mais marquez ça dans vos agendas :
    <a href="http://barcamp.org/BarCampAlbuquerque"
    class=”url summary”>
    <span class=”category”>BarCamp</span>
    Albuquerque 3</a>
    aura lieu ce week-end.
    </p>
  3. <dl>
  4. <dt>Quand :</dt>
  5. <dd><abbr class=”dtstart”
    title=”2008-09-13T09:00:00″>13</abbr>–
    <abbr class=”dtend” title=”2008-09-14T18:00:00″>14 septembre</abbr>,
    à partir de 9h00 jusqu’à 18h00 les deux jours.</dd>
  6. <dt>Où :</dt>
  7. <dd class=”location vcard”>
    <a class=”fn org url” href=”http://www.chefwhite.com/cjw_cafe.php”>CJW Cafe</a>
    à <a href=”http://maps.google.com/maps” class=”adr”>
    <span class=”street-address”>4801 Alameda
    <abbr title=”Boulevard”>Blvd</abbr>
    <abbr title=”Northeast”>NE</abbr>
    </span>,
    <span class=”locality”>Albuquerque</span>,
    <abbr class=”region” title=”New Mexico”>NM
    </abbr> <span class=”postal-code”>87113
    </span>
    </a>
    </dd>
  8. <dt>Quoi :</dt>
  9. <dd class=”description”>
    Un évènement de
    <abbr class=”duration” title=”P2D”>deux jours</abbr> pour tout ce qui concerne le web — design (visuel, expérience, architecture de l’information), technologie (infrastructure, programmation), social et nouveaux médias, et d’autres trucs simplement vraiment cools.</dd>
  10. </dl>
  11. </div>

Les Parties de la Somme

Décomposons cet exemple avec ses parties.

La Racine : vevent

Vous remarquerez que la propriété racine dans mon exemple est vevent, plutôt que vcalendar. Ceci parce hCalendar a un élément racine optionne du vcalendar, qui n’est obligatoire que si vous décrivez plus d’un calendrier d’événements sur une page donnée.

Pour une page avec un unique calendrier d’événements, la propriété vcalendar est présumée sur la page elle-même.

Le fait que mon exemple soit un événement unique dans un “calendrier,” unique, je place toute mon information d’événement dans <div class="vevent">. Ceci indique que tout le contenu embarqué à l’intérieur décrit un événement unique.

Une fois de plus, l’élément conteneur pourrait être n’importe quoi (<dl>, <ul>, <p>, <span>, etc.) la <div> est simplement appropriée pour mon exemple.

Propriétés Requises : summary & dtstart

Les seules propriétés requises pour hCalendar (autres que la racine vevent) sont summary et dtstart.

summary

La propriété summary décrit un synopsis bref de l’événement. Le contenu embarqué par cette propriété est typiquement ce qui s’affiche dans un programme de calendrier sous le nom ou titre de l’événement.

Ainsi dans mon exemple, “BarCamp Albuquerque 3″ est contenu par summary, aussi c’est l’information qui s’affiche comme le nom/titre dans mon calendrier personnel :

<p>Oui, c'est un billet rapide, mais à marquer dans vos agendas : <a href="http://barcamp.org/BarCampAlbuquerque" class="url summary“><span class=”category”>BarCamp</span> Albuquerque 3</a> c’est ce week-end.</p>

dtstart

La propriété dtstart décrit les date/horaire pour le démarrage de l’événement. Dans mon exemple, “13″:

<dd>
<abbr class=”dtstart”
title=”2008-09-13T09:00:00″>13
</abbr>–<abbr class=”dtend”
title=”2008-09-14T18:00:00″>14 septembre</abbr>,
de 9h00 à 18h00 les deux jours</dd>

Date/Time Design Pattern

Remarquez que l’élément contenant pour dtstart est un <abbr>, là où l’information contenue est est “13″ et la valeur d’attribut title est “2008-09-13T09:00:00″:

<dd><abbr class=”dtstart”
title=”2008-09-13T09:00:00“>13</abbr>
–<abbr class=”dtend” title=”2008-09-14T18:00:00″>14 septembre</abbr>,
de 9h00 à 18h00 les deux jours</dd>

C’est l’approche actuellement recommandée pour définir l’information date/horaire dans un microformat — connue sous le datetime design pattern (qui est une extension du abbr design pattern).

Ce pattern a été développé pour supporter l’un des principes fondamentaux des microformats : designer d’abord pour les humains, ensuite pour les machines. Visant pendant tout ce temps, à fournir une information qui soit à la fois lisible par les humains et par les machines.

La logique est que les machines — tout comme les applications web — utiliseront la valeur title, alors que les navigateurs afficheront pour les humains le contenu embarqué par <abbr>.

Aussi, en tant que partie de la spécification pour utiliser ce “datetime pattern”, l’information date/horaire devrait être spécifiée dans un ISO 8601 :

  • AAAA-MM-JJThh:mm:ss — “A” représente les nombres entiers de l’année, “M” représente les nombres entiers du mois, “J” représente les nombres entiers du jour, “h” représente les nombres entiers des heures, “m” représente les nombres entiers des minutes et “s” représente les nombres entiers des secondes.
  • AAAA-MM-JJThh:mm:ssZ — “Z” est utilisé pour indiquer le GMT.
  • AAAA-MM-JJThh:mm:ss+hh (ou -hh) — les “+hh” et “-hh” indiquent le décalage horaire en heure GMT.

Pour dire ça dans des termes un peu plus compréhensibles, 2008-09-30T13:00:00 = 30 septembre 2008, 13h00 (heure locale).

Le caractère “T” dans ces exemples sépare l’information de date de l’information d’horaire.

Si vous n’avez qu’une date, omettez simplement le “T” et l’information horaire le suivant. De même, si vous n’avez qu’un horaire, omettez le “T” et l’information de date le précédant.

Il existe néanmoins et hélas, quelques problèmes d’accessibilité avec ce pattern, problèmes que je décrirai plus tard dans cet article. A cette heure, continuons avec mon exemple.

Le Reste des Propriétés Date/Horaire

Il existe deux autres propriétés date/horaire (et optionnelles) que j’ai ajoutées : dtend et duration.

dtend

La propriété dtend décrit les date/horaire de la fin de l’événement. Dans mon exemple, “14 septembre”:

<dd>
<abbr class="dtstart" title="2008-09-13T09:00:00">13</abbr>
–<abbr class=”dtend”
title=”2008-09-14T18:00:00″>14 septembre</abbr>,
de 9h00 à 18h00 les deux jours</dd>

duration

La propriété duration décrit la durée (en temps) de l’événement.
Dans mon exemple, deux jours :

<dd class="description">Un évènement de <abbr class=”duration” title=”P2D”>deux jours</abbr> pour tout ce qui concerne
le web — design (visuel, expérience, architecture de l’information), technologie (infrastructure, programmation), social et nouveaux médias, et d’autres trucs simplement vraiment cools.</dd>

Tout comme pour l’information de date/horaire, l’information de durée est spécifiée en utilisant le “datetime design pattern”, où l’information “lisible-par-les-machines” est indiquée par la valeur title et l’”information-lisible-par les-humains” est contenue par le <abbr>.

Aussi, la valeur de “duration” title est spécifiée selon ISO 8601, qui indique que la valeur est précédée par un “P” pour indiquer une période de temps.

Cette période de temps peut être exprimée en années (Y), mois (M), semaines (W), jours (D), heures (H), minutes (M) et/ou secondss (S).

Voici quelques exemples pour clarifier cela :

  • P2Y = durée de 2 ans
  • P10D = durée de 10 jours
  • P3H = durée de 3 heures
  • P2W = durée de 2 semaines weeks
  • P12DT8H30M = durée de 12 jours, 8 heures et 30 minutes
Parlons Accessibilité

J’ai rapidement évoqué dans la 3ème Partie qu’il y avait eu récemment quelques discussions sur les problèmes d’accessibilité avec le datetime design pattern.

Le point crucial du problème d’accessibilité est la façon dont les lecteurs d’écran interprètent les valeurs d’attribut title : ils les lisent/parlent.

Aussi, là où le datetime design pattern indique de mettre l’information ISO 8601 de date/horaire lisible par les machines dans le title, un lecteur d’écran déclame littéralement la valeur.

Imaginez entrendre ça à chaque fois que votre lecteur d’écran rencontre <abbr title="2008-09-30"> : “Deux mille huit tiret zéro neuf tiret trente.” Et c’est même encore pire pour les valeurs plus longues avec l’information sur l’horaire.

On peut soutenir que ceci n’est pas “human-friendly” pour ces utilisateurs.

A cette heure, ces problèmes n’ont pas été résolus. Il y a eu queques alternatives proposées, mais la communauté des microformats continue à discuter de la meilleure approche pour avancer afin de résoudre ces problèmes d’accessibilité et de rester cohérente avec l’esprit des microformats.

Pour moi et mon blog personnel, mes référents indiquent que je n’ai pas de visiteurs avec des lecteurs d’écran. Aussi, je ne suis pas préoccupée par l’implémentation du “datetime design pattern” sur ce blog.

Néanmoins, travaillant pour une grande entreprise, le manque d’accessibilité n’est tout simplement pas acceptable (pour moi et mon superviseur direct, même si je suis certaine que les “gros bonnets” pourraient moins s’en soucier).

Je suis désireuse de voir comment vont ces problèmes vont être résolus, de manière à ce que je puisse implémenter correctement l’information date/horaire en microformats et que cela puisse être encore supporté par tous les utilisateurs de lecteurs d’écrans.

Désormais, il est temps de revenir à l’exemple et des propriétés restantes utilisées …

Le Reste du Reste

Mon exemple comprend quatre propriétés supplémentaires (aussi optionnelles) : url, category, location and description.

url

La propriété url décrit un lien (<a>) pour l’événement :

<p>Oui c'est un billet rapide, mais marquez vos agendas : <a href="http://barcamp.org/BarCampAlbuquerqueclass=”url summary”><span class=”category”>BarCamp</span> Albuquerque 3</a> c’est ce week-end.</p>

Vous remarquerez que j’ai ajouté la propriété url à la propriété summary. Ceci tout simplement parce que le contenu embarqué par le <a> était simplement la valeur pour mon summary. D’autres implémentations pourraient être différentes.

category

La propriété category décrit le type d’événement. Dans mon exemple, “BarCamp” :


<p>Oui c'est un billet rapide, mais marquez vos agendas :
<a href="http://barcamp.org/BarCampAlbuquerque" class="url summary">
<span class=”category”>BarCamp</span>
Albuquerque 3</a>
c’est ce week-end.</p>

A la différence des propriétés évoquées plus haut, category peut utiliser un nombre illimité de fois. Quelques exemples communs de valeurs de category sont :

  • Rencontre
  • Expo
  • Vacances
  • Anniversaire
  • Conférence

Dans un certain sens, category est un moyen de “taguer” l’événement. Aussi, si j’avais choisi de marquer mon exemple pour y inclure un lien vers le site principal du BarCamp, j’aurais aussi utilisé microformat rel-tag pour accompagner category :

<p>Vous pourriez vous demander ce qu'est un
<a href="http://barcamp.org/"
class=”category” rel=”tag”>BarCamp</a> ?
</p>

Souvenez-vous, rel-tag ne peut être uniquement utilisé que sur des liens (<a>).

location

La propriété location décrit où aura lieu l’événement.


<dd class=”location vcard”><a class=”fn org url”
href=”http://www.chefwhite.com/cjw_cafe.php”>CJW Cafe
</a> au <a href=”http://maps.google.com/maps” class=”adr”>
<span class=”street-address”>4801 Alameda
<abbr title=”Boulevard”>Bd</abbr>
<abbr title=”Northeast”>NE</abbr>
</span>,
<span class=”locality”>Albuquerque</span>,
<abbr class=”region” title=”New Mexico”>NM</abbr>
<span class=”postal-code”>87113</span></a>
</dd>

Dans mon exemple, je fournis le nom du lieu et son adressse. Néanmoins, ce peut être tout simplement le lieu, ou juste l’adresse ; les deux ne sont pas requis.

description

Pour finir, la propriété description décrit un synopsis plus détaillé de l’évènement que summary :


<dd class=”description”>Un évènement de
<abbr class=”duration” title=”P2D”>deux jours</abbr>
pour tout ce qui concerne le web — design (visuel, expérience, architecture de l’information), technologie (infrastructure, programmation), social et nouveaux médias, et d’autres trucs simplement vraiment cools.
</dd>

Ce Que Je N’ai Pas Ajouté

Il existe plusieurs autres propriétés souvent utilisées pour hCalendar que j’ai choisies simplement de ne pas ajouter à mon exemple :

  • dtstamp indique les date/horaire à laquelle l’information hCalendar a été créée.
  • last-modified indique les date/horaire à laquelle l’information hCalendar a été mise à jour.
  • status indique la confirmation d’événement. Les valeurs autorisées sont “cancelled,” “confirmed” et “tentative.”
  • class indique la classification d’événement. Les valeurs autorisées sont “private,” “public ” et “confidential.”
  • rrule indique la récurrence régulière d’un événement. Si cette propriété est utilisée, elle a une sous-propriété obligatoire de freq pour indiquer la fréquence de la récurrence, qui est spécifiée plus en profondeur par des qualifiants (à savoir, count, interval).
  • rdate indique des événements qui arrivent irrégulièrement. La valeur title renvoie les dates irrégulières (séparées par des virgules).

Et il en existe encore d’autres qui peuvent être utilisées. Regardez les exemples hCalendar sur le wiki pour plus de détails.

hCalendar + hCard

Peut-être que vous avez remarqué que mon marquage hCalendar comprenait des propriétés et sous-propriétés hCard :


<dd class="location vcard“>
<a class=”fn org url”
href=”http://www.chefwhite.com/cjw_cafe.php”>CJW Cafe</a> au
<a href=”http://maps.google.com/maps” class=”adr”>
<span class=”street-address”>4801 Alameda
<abbr title=”Boulevard”>Blvd</abbr>
<abbr title=”Northeast”>NE</abbr></span>,
<span class=”locality”>Albuquerque</span>,
<abbr class=”region” title=”New Mexico”>NM</abbr>
<span class=”postal-code”>87113</span></a>
</dd>

Comme je l’évoquais dans la 3ème Partie, combiner les microformats est facile, et là où cela produire du contenu contextuel, cela ajoute plus de valeur sémantique au contenu (et vous savez ce que j’en pense).

Pour aller plus loin, cela donne à l’utilisateur juste quelques autres types de données qui peuvent être extraites et utilisées, comme une vCard pour son carnet d’adresses.

Dans cet exemple, la propriété location du hCalendar fait sens pour être aussi marquée avec vcard. Même si je n’ai fait que rajouter la ville, j’aurais pu encore ajouter les propriétés/sous-propriétés de hCard.

Langage Naturel

J’ai parlé aussi d’utiliser les microformats en langage naturel (dans le flux de phrases normales) dans la 3ème Partie, et hCalendar ne fait pas exception à ce concept.

Vous remarquerez que dans cet exemple, quelques informations du hCalendar sont directement dans le flux de mon contenu.

J’aurais pu mettre toute l’information du hCalendar dans des phrases naturelles plutôt que de “découper” quelques-uns des détails dans des <dl> :

  1. <div class=”vevent”>

  2. <p>Oui, c'est un billet rapide, mais à marquer dans vos calendries :
    <a href="http://barcamp.org/BarCampAlbuquerque"
    class=”url summary”>
    <span class=”category”>BarCamp</span> Albuquerque 3</a> c’est ce week-end,
    <abbr class=”dtstart” title=”2008-09-13T09:00:00″>13
    </abbr>–
    <abbr class=”dtend”
    title=”2008-09-14T18:00:00″>14 septembre</abbr>, de 9h00 à 18h00
    <abbr class=”duration” title=”P2D”>les deux jours</abbr>.
    </p>
  3. <p class=”description”>Ce BarCamp de l’année traitera de tout ce qui concerne le web : design (visuel, expérience, architecture de l’information), technologies (infrastructure, programmation), social et nouveaux medias, et d’autres trucs qui sont tout simplement vraiment cools.</p>

  4. <p class=”location vcard”>
    <a class=”fn org url” href=”http://www.chefwhite.com/cjw_cafe.php”>CJW Cafe</a>
    (sur <a href=”http://maps.google.com/maps” class=”adr”>
    <span class=”street-address”>4801 Alameda
    <abbr title=”Boulevard”>Blvd</abbr>
    <abbr title=”Northeast”>NE</abbr>
    </span>, <span class=”locality”>Albuquerque</span>,
    <abbr class=”region” title=”New Mexico”>NM</abbr>
    <span class=”postal-code”>87113
    </span>
    </a>) sera notre hôte pour l’événement.
    </p>
  5. </div>

Ajouter à votre Calendrier

Aussi sur l’article BarCamp Albuquerque 3, je fournis un lien aux utilisateurs pour qu’ils puissent ajouter l’événement à leurs programmes de calendrier :

Télécharger le fichier événement .ics du BarCamp Albuquerque 3

Ce lien pourrait être une URL directe vers n’importe quel fichier iCalendar (à savoir, .ics, .ical, .ifb, .icalendar) avec votre information d’événement. En ce qui me concerne, j’ai utilisé le Service de Fils d’Evénements de Technorati.

En utilisant la technologie de Technorati, vous faites précéder simplement l’URL de la page où réside votre microformat avec http://feeds.technorati.com/events/, et puis utilisez l’URL résultante comme la valeur href de votre lien (<a>) :

<a href="http://feeds.technorati.com/events/http://www.ablognotlimited.com/articles/barcampalbuquerque-around-the-corner
title=”Télécharger le fichier .ics “>
Ajoutez à votre calendrier</a>

Quand un utilisateur sélectionne ce lien, le fichier .ics est créé dynamiquement et il peut le télécharger ::

Télécharger le fichier .ics

Les Apparences Comptent

Je l’ai répété plusieurs fois : le marquage importe peu (bien qu’il devrait idéalement être valide et sémantique).

Et même si les valeurs class (propriétés/sous-propriétés) sont essentielles pour le microformat, la CSS que vous utilisez pour styliser votre information hCalendar est uniquement dédiée à la présentation (pas pour dire que ce n’est pas important).

Je recommanderais néanmoins d’utiliser les valeurs class qui sont requises par hCalendar dans votre CSS, plutôt que d’ajouter de nouvelles classes pour le style. Ceci vous donne simplement une CSS plus maigre.

Pour un exemple sur la façon dont vous pouvez styliser un calendrier d’événements, jetez un oeil au superbe travail de Jeremy Keith qu’il a produit pour des calendriers en cascade.

Pour finir, vous pouvez produire tout ce que votre coeur désire. La présentation de votre hCalendar ne se limite qu’à vos talents en CSS.

Pourquoi s’en Soucier ? Les Avantages, Bien Sûr

Bien qu’ayant déjà traité des avantages dans cette série d’articles, ils valent toujours la peine d’être répétés, … essentiellement parce que les microformats sont si simples à mettre en oeuvre et qu’ils offrent tant de potentiels.

Je souhaiterais que plus de personnes les connaissent et les utilisent. Cela aiderait à accroître le nombre d’outils et d’applications qui les utilisent.

Une Fois de Plus : Sémantique

Oui, la sémantique. Vous devez croire que c’est mon concept favori. Oui, vous auriez raison.

Les microformats prennent les standards existants, comme les éléments XHTML, et ajoutent encore même plus de valeur sémantique au contenu qu’ils contiennent. Ceci aide de mon point de vue les auteurs web à créer de meilleurs sites qui deviennen t plus utilisables et accessibles tant pour les humains que pour les machines (comme les moteurs de recherche).

Pour aller plus loin, le fait d’adopter la sémantique (même sans microformats, mais dans le marquage en lui-même) fait partie du support des standards ; des moyens standardisés de développer des sites. Ceci profite non seulement aux utilisateurs (et ceci concerne aussi les machines), mais assi aux designers/développeurs et aux équipes. Cela profite à tous.

Et, une fois de plus, ces approches posent une fondation (sémantiquement riche) pour Le Web Sémantique, tout en nous permettant simultanément de tirer profit du web et des technologies d’aujourd’hui.

Cool Shit

Je comprends tout à fait que la sémantique et les standards relèvent pour certains de discussions philosophiques. En fin de compte, soit vous “captez” ou non.

Si vous êtes dans le dernier camp, considérez quelques-uns des outils plutôt cools et utiles disponibles aujourd’hui qui savent tirer profil du microformat hCalendar.

Extensions Navigateur

Il existe tout un paquet d’outils navigateurs qui extraient l’information hCalendar provenant d’une page web de façon à pouvoir l’exporter et l’utiliser dans des applications qui supportent iCalendar.

  • L’extension Operator pour Firefox extrait l’information hCalendar et vous permet de l’ajouter dans votre application préférée de gestion de calendrier (elle fait de même avec l’information hCard pour votre carnet d’adresses) :
    exemple de hCalendar avec Operator pour Firefox
  • Aussi pour Firefox, l’extension Tails Export détecte l’information hCalendar (tout comme pour hCard) et l’extrait pour l’exporter dans votre application de calendrier :

    exemple de hCalendar avec Tails Export pour  Firefox
  • Le plugin microformats pour Safari fonctionne comme les extensions Firefox, en extrayant pour vous l’information hCalendar (et hCard) afin de l’ajouter à votre programme de calendrier.
  • Le bookmarklet microformats extrait lui aussi l’information hCalendar que vous pouvez exporter dans votre application de calendrier :

exemple de bookmarklet microformats

Autres Services
  • X2V de Brian Suda est une feuille de style XSLT qui extrait l’information hCalendar provenant d’une page web pour créer un fichier iCalendar .ics.
  • Technorati offre un moteur de recherche de microformats qui indexe l’information microformatée (hCalendar, hCard et hReview) provenant d’URLs proposées et rend cette information disponible pour la recherche.
  • Elias Torres a créé un script Greasemonkey hCalendar + Google Calendar Reminders qui identifier l’information hCalendar sur une page web et fournit une icône pour ajouter cet événement à votre Calendrier Google.
  • Un autre script GreaseMonkey de Les Orchard vous permet de modifier les champs de formulaire texte de Firefox pour devenir des générateurs hCalendar : Magic Microformat Forms.

Il existe encore plein d’implémentations hCalendar que je n’ai pas mentionnées.

Pression Par les Pairs

Si ces ressources ne vous ont pas fait tourner la tête, alors peut-être qu’un peu de pression par les pairs le fera. Bon nombre de services leaders aujourd’hui utilisent hCalendar (et d’autres microformats) :

  • Le site d’événement de Yahoo, Upcoming utilise hCalendar, de façon à ce que pendant que les utilisateurs naviguent dans les événements, ils puissent aussi les importer dans leurs applications de gestion de calendrier.
  • MapQuest Local supporte aussi hCalendar, tout comme les microformats hCard et celui de géolocalisation.
  • TripIt utilise le marquage hCalendar pour ses itinéraires.
  • Last.fm utilise hCalendar pour ses annonces de concerts.
  • Le géant du réseau social, Facebook, utilise hCalendar pour l’information d’événements.

Et il existe encore plus d’exemples hCalendar dans la jungle

Bon, vous savez que vous voulez y aller. Essayez tout simplement. Croyez-moi, vous aimerez.

Outils pour une Production Plus Facile

Aussi, si j’ai pu parvenir à vous “vendre” les microformats, vous pourriez être ravi(e) de savoir qu’il existe quelques outils qui vous faciliteront la vie pour les implémenter (à l’inverse du codage à la main, sans mentionner le fait de se rappeler de toutes les propriétés/sous-propriétés) :

  • Le hCalendar Creator est un formulaire qui génère du marquage hCalendar et les propriétés/sous-propriétés que vous lui proposez. Copiez et collez. Ne pourrait pas être plus simple.
  • Pour Textpattern, vous disposez du plugin pnh_mf et de JMC_Event_Manager pour ajouter du contenu microformaté à votre site/blog Textpattern.
  • WordPress a aussi quelques plugins qui aident les auteurs web à ajouter des microformats à leurs blogs/sites WordPress : Structured Blogging (aussi disponible pour MovableType) et WP-Microformats.
  • Grâce à WaSP, il existe une extension microformats pour Dreamweaver conçue pour DW 8, MX et au-dessus.
  • Le Conference Schedule Creator vous aide à créer un programme complet de conférence avec tous les événements marqués avec hCalendar.

A venir en 5ème Partie

Voilà c’est tout ce que j’ai pour hCalendar (est-ce assez ?).

La prochaine fois, dans Parvenir à la Sémantique avec les Microformats, 5ème Partie, je vous emmènerai en détail sur le microformat hAtom pour le contenu syndiqué comme les billets de blogs.

D’ici là …

Share the Love

Note : Cette traduction s’inscrit dans la poursuite de travaux visant à mieux faire connaître les microformats. L’article original d’Emily Lewis a été publié le 1er octobre dernier sur son blog personnel. Seul le lien original fait référence. Vous pouvez aider à raffiner cet article en éditant directement le code posé sur la page miroir de mon wiki-personnel. Merci d’avance. xtof

Emily Lewis : “Parvenir à la Sémantique avec les Microformats, 3ème partie - hCard”

Filed under: hcard, ressources — Christophe Ducamp @ 13:47

logo des Microformats

J’ai démarré cette série d’articles en détaillant les microformats pour les relations fondées sur les liens en utilisant l’attribut rel dans la 1èrePartie. Puis j’ai poursuivi dans la 2° Partie par une discussion sur l’extension de l’attribut rel avec les valeurs XFN pour connoter les relations sociales sur le web.

XFN et les microformats fondés sur rel sont relativement simples, n’exigeant que l’ajout de l’attribut rel sur les liens (<a>) et la(es) bonne(s) valeurs pour fournir le contexte sémantique.

Il est désormais temps de porter cette discussion sur les microformats à un niveau plus détaillé avec le microformat hCard, qui ajoute de la sémantique et de la structure au contenu web traitant des personnes, organisations, sociétés et lieux.

(Mettez-vous à l’aise, c’est long.)

Origines : vCard

vCard est un standard pour les cartes de visite électroniques, qui sont le plus souvent attachées en pièces jointes aux courriers électroniques sous forme de fichiers avec l’extension “.vcf”. Tout comme les cartes de visite traditionnelles, les vCards contiennent de l’information sur le nom et le contact.

La hCard a été présentée comme un format standard pour permettre aux auteurs du web d’inclure l’information vCard au sein de leurs pages web.

hCard utilise une représentation 1:1 de la vCard. Ce qui veut dire que le contenu web marqué avec le format hCard peut être converti en vCards par les spiders et autres agrégateurs, et peut être utilisé dans n’importe quelle application ou service vCard.

Personnes, Organisations, Sociétés & Lieux

Le microformat hCard représente des personnes, organisations, sociétés et lieux — le plus souvent en termes d’information adresse/contact, y compris mais non limité à :

  • Nom formaté/structuré
  • Adresse postale/distribution
  • Adresse e-mail
  • Numéro(s) de téléphone
  • Photographie

Parmi toutes les informations qui peuvent être incluses dans hCard, la seule information obligatoire est le nom formaté. Tout le reste est optionnel.

Et hCard, comme tous les microformats, utilise un marquage et des attributs existants pour spécifier cette information adresse/contact, et tout particulièrement différentes valeurs de classe, qui sont renvoyées sous des “propriétés” et “sous-propriétés.”

Une Personne, à Savoir Moi

L’une des premières implémentations hCard sur A Blog Not Limited est pour mon information personnelle de contact sur ma page About :

  1. <div class=”vcard”>
  2. <p class="fn n">
    <span class="given-name">Emily</span>
    <span class="additional-name">Paige</span>
    <span class="family-name">Lewis</span></p>
  3. <p><a class="email"
    href="mailto:emily@ablognotlimited.com">
    emily@ablognotlimited.com</a>
    </p>
  4. <p class="adr">
    <span class="locality">Albuquerque</span>,
    <abbr class="region" title="New Mexico">NM
    </abbr>
    <span class="postal-code">87106
    </span>
    <acronym class="country-name" title="United States of America">USA</acronym>
    </p>
  5. <p class="nonVisual">
    <a href="http://www.ablognotlimited.com" rel="home me" class="url">
    A Blog Not Limited</a>
    </p>
  6. </div>

La première chose à considérer sur l’exemple ci-dessus est que tout le balisage et le contenu sont contenus dans une <div> déclarée class="vcard".

L’élément contenant pourrait être n’importe quoi (<p>, <ul>, <span>, etc.), tant que cela reste de la syntaxe valide et de préférence sémantique.

Ce qui est essentiel c’est class="vcard".

“Mais le microformat s’appelle hCard … quel rapport avec la propriété vCard ?” me direz vous.

Bon, ceci s’explique par la représentation 1:1 de la vCard. Toutes les propriétés spécifiées hCard (les valeurs class) sont fondées sur les noms des propriétés type vCard.

Acceptez ça et avançons.

Information d’Identité Personnelle

En divisant l’exemple dans ses différentes propriétés, commençons par celles qui m’identifient personnellement, comme mon nom. Vous pouvez constater que mon information de nom est contenue dans <p class="fn n"> :

<p class=”fn n”>
<span class=”given-name”>Emily</span>
<span class=”additional-name”>Paige</span>
<span class=”family-name”>Lewis</span>
</p>

La propriété fn indique que le contenu contenu à l’intérieur est une chaîne correspondant au nom de la personne, comme pourriez le voir sur une plaque nominative. Comme je l’évoquais précédemment, c’est une propriété obligatoire dans le microformat hCard.

La propriété n indique que le contenu à l’intérieur contient les parties du nom d’une personne, comme le prénom, le deuxième prénom et les noms de famille.

Bien que la propriété n soit requise par la spécification, elle peut être implicite (ce qui veut dire, non spécifiée), si le contenu regroupé par la propriété fn fait exactement deux mots. Le wiki Microformats explique en détail cette optimisation implicite.

Il existe quelques autres propriétés d’identification que je pourrais inclure si j’étais encline à faire ainsi :

  • class="nickname" indique le pseudo/nom de guerre d’une personne, et s’applique à un élément contenant le texte de ce pseudo.
  • class="photo" indique une photo associée à une personne, et s’applique à un élément <img /> faisant référence à l’URL de la photo (via src). Cette propriété pourrait être aussi appliquée à un élément <object> référençant l’URL de la photo via l’attribut data (bien que ce soit pour moi une option non-sémantique).
  • class="bday" indique une date de naissance d’une personne, et s’applique à un élément contenant l’information de date.
Aparté : Les Dates

Je devrais mentionner que quand on arrive à l’information de date, celle-ci est souvent marquée avec de l’information à la fois lisible par les humains et par les machines. Ceci s’appelle le datetime design pattern.

Sans rentrer trop dans les détails (parce que je traiterai cela en profondeur avec microformat hCalendar dans la 4ème partie de cette série), voici un exemple sur la façon dont l’information de date est communément référencée dans les différents microformats :

<abbr class="bday"
title=”1974-09-04″>4 Septembre 1974
</abbr>

>Remarquez que ce qui est contenu par le <abbr> est de l’information-date-lisible-par-les-humains, alors que la valeur title est de l’information de date lisible–par–les–machines.

L’utilisation de l’élément <abbr> pour l’information de date (l’abbr design pattern), a cependant soulevé quelques problématiques d’accessibilité.

Une fois de plus, je traiterai cela plus en détails dans la 4ème partie, mais ce qui a été proposé pour contourner ces problématiques est d’utiliser un élément <span> avec une valeur title plutôt que <abbr>. (Je traiterai aussi des problématiques d’accessibilité plus en détail en conclusion de cette série.)

Sous-Propriétés

Ainsi, pour revenir à l’exemple sur ma page About

Beaucoup de propriétés hCard ont des sous-propriétés pour fournir encore plus de contenu. Dans mon exemple, je marque le contenu dans <p class="fn n"> avec des <span>s référençant les sous-propriétés :

<p class="fn n">
<span class=”given-name”>Emily</span>
<span class=”additional-name”>Paige</span>
<span class=”family-name”>Lewis</span>
</p>

  • Mon premier prénom est indiqué par class="given-name".
  • Mon second prénom est indiqué par class="additional-name".
  • Mon nom de famille est indiqué par le class="family-name".

Parmi ces trois sous-propriétés, given-name et family-name ne peuvent être seulement utilisées qu’une fois par vcard, alors que la sous-propriété additional-name peut être utilisée plusieurs fois.

Et il existe deux sous-propriétés supplémentaires que j’aurais pu inclure :

  • class="honorific-prefix" indique les préfixes du nom (par ex. M., Dr.), et qui s’applique à un élément contenant le texte de ce préfixe.
  • class="honorific-suffix" indique les suffixes du nom (par ex. MD, PhD), et s’applique à un élément contenant le texte de ce suffixe.

Comme additional-name, ces deux sous-propriétés peuvent aussi être utilisées plusieurs fois.

E-mail & Téléphone

La prochaine partie de l’exemple est mon adresse e-mail dans <a class="email"> :

<p>
;<a class=”email”
href=”mailto:emily@ablognotlimited.com”>
emily@ablognotlimited.com</a>
</p>

Attribuer la propriété email à mon lien (<a>) indique que la valeur href est mon adresse e-mail. Le contenu regroupé par le <a> pourrait être n’importe quoi. J’ai simplement choisi d’afficher la véritable valeur de mon adresse e-mail.

La propriété email peut être utilisée plusieurs fois. Dans ces cas, la sous-propriété type peut être ajoutée pour savoir quelle adresse parmi les multiples e-mails est la préférée (”pref”):

  1. <p><a class=”email”
    href=”mailto:test1@test.com”>
    <span class=”type”>pref</span>
    erred email
    </a>
    </p>
  2. <p><a class=”email”
    href=”mailto:test2@test.com”>alternate email
    </a>
    </p>

Je pourrais aussi inclure une autre propriété, tel, qui indique un numéro de téléphone d’une personne (via la sous-propriété value). La propriété tel a une sous-propriété type pour indiquer le type de numéro (par exemple home, work, fax) :

<p class=”tel”>
<span class=”type”>Work</span> :
<span class=”value”>555-123-4567</span>
</p>

La sous-propriété type est complètement optionnelle. Si vous avez choisi de l’omettre, la valeur par défaut est “voice.”

La propriété tel peut être utilisée plusieurs fois, comme le peut type. La sous-propriété type peut aussi indiquer “pref” pour afficher si c’est le numéro de téléphone préféré.

  1. <p class=”tel”>
    <span class=”type”>Work
    </span>(<span class=”type”>pref
    </span>
    erred):
    <span class=”value”>555-123-4567
    </span>
    </p>
  2. <p class=”tel”>
    <span class=”type”>Home
    </span> :
    <span class=”value”>555-789-0123
    </span>
    </p>

Pour finir, la sous-propriété value peut être implicite. Si un type est spécifié sans qu’aucune value ne soit spécifiée, alors tout autre propriété autre que type dans la propriété tel est considérée comme la value.

Information d’Adresse

La prochaine partie de l’exemple inclut mon adresse regroupée sous un <p class="adr"> :

<p class=”adr”>
<span class=”locality”>Albuquerque</span>,
<abbr class=”region” title=”Nouveau Mexique”>NM</abbr>
<span class=”postal-code”>87106</span>
<acronym class=”country-name” title=”United States of America”>USA</acronym>
</p>

La propriété adr indique les parties d’une adresse, que je décris par des <span>s assignés aux différentes sous-propriétés de l’adresse :

  • La ville est indiquée par class="locality".
  • L’état est indiqué par class="region". Cette sous-propriété pourrait s’utiliser pour les provinces.
  • Le code postal est indiqué par class="postal-code".
  • Le pays est indiqué par class="country-name".

Remarquez que pour mon country-name, j’ai utilisé l’élément <acronym> pour une référence plus courte vers mon pays, avec le nom complet inclus dans le title. J’aurais pu tout aussi bien écrire le nom complet et contourner complètement l’<acronym>e. Juste une question de préférence (même si j’encourage vivement à la concision sémantique).

Pour des détails d’adresses encore plus précis, je pourrais aussi ajouter :

  • class="street-address" pour mon adresse de rue
  • class="extended-address" pour ajouter le numéro de mon appartement
  • class="type" pour indiquer le type d’adresse (par ex. home, work)
Aparté : address

Mais attendez ! Qu’en-est-il de la sémantique ? Pourquoi ne pas utiliser l’élément <address> comme le conteneur principal, plutôt qu’un <p> ?

En fait, jusqu’à ce que j’écrive cet article et fasse la recherche, j’ai découvert que j’utilisais <address> de manière incorrecte depuis des années. J’avais toujours pensé que c’était littéralement pour les adresses physiques, comme dans cet exemple précis.

J’avais tort.

Selon le W3C, l’élément <address> est :

… employer l’élément ADDRESS pour fournir les informations de contact du document ou d’une partie essentielle de celui-ci, comme un formulaire.

Compte tenu de cela, ce n’est tout simplement pas le bon élément à utiliser.

Information sur le Site Web

La dernière partie de mon exemple contient mon URL de blog dans <a class="url"> :

<p class="nonVisual">
<a href="http://www.ablognotlimited.com" rel="home me" class=”url”>
A Blog Not Limited</a>
</p>

La propriété url indique que le lien (<a>) destination (href) se fait vers un site web associé à moi. Bien que je sois en train de référencer mon blog, ceci pourrait être aussi un lien vers mon portfolio design ou toute autre URL m’étant associée.

Quelques trucs à remarquer concernant la dernière partie de l’exemple :

  • En restant engagée avec les microformats fondés sur le rel, je me suis aussi assurée d’inclure rel="home me". Remarquez la facilité de combiner les microformats ?
  • Le lien est contenu dans un <p class="nonVisual">, ce qui est tout simplement un paragraphe auquel j’ai déclaré une classe personnalisée pour supprimer l’affichage de l’information parce que je ne pense pas qu’il soit nécessaire de l’afficher dans cette situation spécifique. Sans tenir compte du fait que cela n’a rien à voir avec le microformat hCard.
Produit Fini

Après cette explication exhaustive du marquage, voici à quoi cela ressemble :

vCard d'Emily

Et du fait que hCard n’utilise que du XHTML standard, elle peut être stylisée de n’importe quelle façon comme il vous plaira.

Si vous n’avez pas déjà compris, j’ai choisi une esthétique plutôt minimaliste, aussi j’en suis arrivée virtuellement à aucun autre stylisme que l’utilisation du class="nonVisual" pour supprimer l’affichage de quelque contenu.

Mais pour voir un exemple de ce que vous pourriez produire, Chris Coyier a récemment posté une Carte de Visite Professionnelle en Microformats, qui utilise le marquage hCard avec une très belle CSS pour imiter une carte de visite traditionnelle imprimée.

Les possibilités ne se limitent qu’à vos talents en CSS.

Ajouter au Carnet d’Adresses ?

Vous voyez dans mon exemple qu’immédiatement après mon contenu hCard, j’offre un lien vers “Ajouter à votre Carnet d’Adresses.” C’est tout simplement un lien vers le fichier vCard qui peut être téléchargé et ajouté à un programme de gestion de carnet d’adresses.

Vous pouvez offrir facilement un lien direct vers le .vcf que vous créerez et maintiendrez sur votre serveur, ou vous pouvez tirer profit du Service Contacts de Technorati.

En utilisant la technologie de Technorati, vous faites simplement précéder l’URL de la page où votre microformats hCard réside avec http://feeds.technorati.com/contacts/, et puis utilisez l’URL résultante comme la valeur href pour votre lien (<a>).


<a
href="http://feeds.technorati.com/contact/http://www.ablognotlimited.com/about/
title=”Téléchargez la vCard”
>Ajouter au Carnet d’Adresses
</a>

Quand un utilisateur sélectionne ce lien, la vCard est créée dynamiquement et il peut alors la télécharger :

Téléchargez la vCard d'Emily

Quelques Règles & Un Rappel

Maintenant que j’en ai terminé avec mon premier exemple de hCard, il est nécessaire de faire remarquer quelques règles :

  • Les noms de propriétés et de sous-propriétés sont sensibles à la casse.
  • La “racine” vcard ne peut pas être mélangée avec n’importe laquelle de ses propriétés. Par conséquent, class="vcard fn" est invalide.
  • Les propriétés ne peuvent pas être combinées avec les sous-propriétés. Par conséquent, class="tel value" est invalide.

Pas si mal non ? Je veux dire, allez les microformats sont standards. Bien sûr il y a quelques règles.

Et n’oubliez pas : Ce n’est pas intrinsèquement un problème de marquage quand on parle de microformats. Cela concerne les valeurs de classe et différents attributs de marquage — propriétés et sous-propriétés.

Vous pouvez utiliser presque tous les éléments (X)HTML que vous voudrez et faire que les microformats soient encore valides si vous déclarez proprement les propriétés et sous-propriétés.

Bien sûr, si vous vous souciez de comprendre la sémantique des microformats, vous devriez aussi comprendre le marquage sémantique.

N’oublions Pas le Profil

Tout comme je le mentionnais avec XFN, il est recommandé d’inclure le profil hCard dans le <head> des pages web qui incluent le microformat :


<head profile=”http://www.w3.org/2006/03/hcard”>

le W3C autorise plusieurs valeurs de profil, séparées par un espace blanc, ainsi vous pouvez avoir à la fois les profils pour hCard et XFN :

<head
profile=”http://gmpg.org/xfn/11
http://www.w3.org/2006/03/hcard”>

Mise à jour :

J’ai récemment découvert qu’il existe un profil combiné pouvant être utilisé pour tous les microformats-non-draft, plutôt que de lister plusieurs profils dans le d’un document :

<head profile="http://purl.org/uF/2008/03/">

Aussi si vous utilisez un microformat unique sur une page, vous pouvez utiliser ce profil combiné si ce microformat est non-draft. Néanmoins pour les microformats-draft (en projet), vous devez spécifier le profil pour ce microformat particulier.

A cette heure, tous les microformats discutés dans cette série (à l’exception de rel-home) sont “non-draft”.

A nouveau, comme je l’ai déjà abordé eu égard à XFN, je maintiens mon <head> dans une inclusion globale, ainsi il y est fait référence sur l’ensemble du site A Blog Not Limited. Néanmoins, tel que cela se révèle, ceci est requis, parce que j’utilise le microformat hCard sur presque toutes les pages de mon site (dans le pied de page).

Ce qui suit très joliment dans la prochaine partie de cet article …

hCard en Langage Naturel

Il y a de ça un moment, j’étais tombée sur un article génial du brillant Jeremy Keith, qui suggère d’utiliser hCard en langage naturel.

En fait, il propose d’appliquer les propriétés et sous propriétés de hCard pour l’information de contact (par ex : nom, site web, email) qui apparaîtront dans le flux des phrases naturelles, à l’inverse du “découpage ” de l’information de contact d’une personne comme montré dans mon premier exemple.

Le concept est si simple et s’ouvre vraiment aux opportunités pour utiliser hCard. Aussi, ai-je décidé de l’utiliser dans mon pied de page sur A Blog Not Limited où j’ai quelques trucs me concernant :

  1. <div id="creator" class=”vcard”>
  2. <h3><a href="/about/"
    title="En savoir plus à propos d'Emily">La Personne la plus Cool que Je Connaisse</a>
    </h3>
  3. <a href="/about/"
    title="En savoir plus à propos d'Emily">
    <img src="/images/emilyLewisThumb.jpg"
    style="width:80px; height:80px;" class=”photo”
    alt=”Emily Lewis” />
    </a>
  4. <p>Yeah ce serait moi :
    <a class=”fn email”
    href=”mailto:emily@ablognotlimited.com”>Emily Lewis</a>.
    </p>
  5. <p>Je suis
    <span class=”title”>web designer
    </span> vit à
    <span class=”adr”>
    <span class=”locality”>Albuquerque</span>,
    <span class=”region”>New Mexico
    </span> <span class=”postal-codenonVisual”>87106
    </span>
    <acronym class=”country-name nonVisual” title=”United States of America”>USA
    </acronym></span>, et suis une “standardista.”</p>
  6. <p>Je suis spécialisée dans le
    <acronym title="eXtensible Hypertext Markup Language">(X)HTML
    </acronym> sémantique codé à la main et <acronym title="Cascading StyleSheets">CSS
    </acronym>, concevoir des sites web accessibles, et l'écriture et optimisation du contenu web.
    </p>
  7. <p><a href="http://www.ablognotlimited.com" rel="home me"
    class=”url”>A Blog Not Limited</a> est mon blog personnel où je pontifie sur le design web, les standards du web, la sémantique et tout ce qui m’entiche.
    </p>
  8. </div>
Les Différences

Mis à part le fait que le contenu hCard dans ce second exemple soit “dans la ligne” avec du contenu non-hCard, il y a quelques légères différences dans les propriétés et sous-propriétés hCard utilisées :

  • Je fais uniquement référence dans cet exemple à mon premier prénom et à mon nom de famille, aussi je n’utilise que class="fn". Souvenez-vous que la propriété n peut être implicite si le contenu fn fait exactement deux mots.
  • J’inclus mon titre de job dans la description, aussi j’ajoute class="title", qui est l’une des propriétés fournissant de l’information à propos de l’affiliation professionnelle d’une personne. Cette propriété indique le titre de mon job.
  • J’inclus une photo de moi-même, aussi j’ajoute class="photo" à <img />.

Néanmoins, ces différences avec le premier exemple n’ont rien à voir avec le fait que j’utilise la hCard en langage naturel. Ce n’étaient simplement que les valeurs appropriées à utiliser avec le contenu dans cet exemple spécifique..

Combiner hCard & XFN

Comme je le mentionnais, ce concept de hCard en langage naturel fournit tellement plus de contextes dans lesquels la hCard peut être utilisée. Je l’ai déja appliqué à l’information à mon propos, mais je fais souvent référence à des amis et confrères dans mes articles … cela fait vraiment sens de marquer ces références avec hCard.

Et peu importe si je marque déjà ces références avec les valeurs XFN. L’une des meilleures choses à propos des microformats est qu’ils peuvent être facilement combinés.

Selon le contexte de la référence, j’utilise un marquage légèrement différent.

Dans les situations où je fais référence à un article/billet (tel que la référence au-dessus à Jeremy Keith), j’utilise <cite> comme mon conteneur vcard :

<p> … le brillant
<cite class=”vcard”>
<a href=”http://adactio.com” rel=”muse colleague”
class=”url fn”
title=”adactio.com”>Jeremy Keith</a>
</cite>,
qui suggère d’utiliser <a href=”http://adactio.com/journal/1122/”
title=”adactio : hCard en langage naturel”>hCard en langage naturel</a>.
</p>

Et dans les situations où je fais simplement référence à la personne, j’utilise <span> comme mon conteneur vcard :

<span class=”vcard”>
<a href=”http://www.jenschwedler.com/”
title=”jenschwedler.com” class=”url fn”
rel=”met colleague co-worker friend”>
Jen Schwedler</a>
</span>

Pour finir, si je fais seulement référence à la personne par son prénom, j’utilise <abbr> le conteneur du nom formaté avec le nom complet comme valeur pour title :

<span class="vcard">
<abbr class=”fn” title=”Ian Pitts”>
<a href=”http://www.iso-100.com/” title=”iso-100.com”
class=”url” rel=”met colleague co-worker friend”>
Ian
</a>
</abbr>
</span>

Dans tous ces exemples, les différences de marquage reflètent simplement ma sémantique préférée. Les microformats hCard et XFN sont les mêmes :

  • propriété fn pour le nom
  • propriété url pour le site web
  • valeurs rel appropriées.

Et si j’avais de l’information supplémentaire à propos de ces types (comme un titre de job, un e-mail, etc.) je marquerais de la même façon ce contenu avec les propriétés/sous-propriétés appropriées.

Organisations & Sociétés

J’ai déjà rencontré des situations où je devais utiliser hCard pour décrire une société ou une organisation sur ce blog, et je voulais vraiment fournir un exemple sur la façon dont cela pourrait s’implémenter :

  1. <div class=”vcard”>
  2. <p class=”fn org”>Big Ass Blow-Up Dolls</p>
  3. <img src="logo.png" class=”logo” style=”width:69px; height:69px;” alt=”Big Ass Blow-Up Dolls” />
  4. <p class=”adr”><span
    class=”street-address”>
    6969 Happiness Avenue</span>,
    <span class=”locality”>Los Angeles</span>,
    <abbr class=”region” title=”California”>CA</abbr>
    <span class=”postal-code”>69069</span>
    </p>
  5. <ul>
  6. <li class=”tel”><span
    class=”value”>696-969-6969</span>
    </li>
  7. <li><a class=”email”
    href=”mailto:goodtimes@babud.com”>Envoyez-nous un e-mail</a>
    </li>
  8. <li><a class=”url”
    href=”http://www.babud.com/”>Visitez Notre Site Web</a>
    </li>
  9. </ul>
  10. </div>

Comme vous pouvez le constater, la hCard pour les organisations/sociétés est en fait la même qu’elle l’est pour les individus. Les principales différences sont :

  • En plus de la propriété fn pour le nom, le nom de l’organisation se voit aussi déclarer la propriété org. Et avec les sociétés/organisations, vous n’utilisez jamais la propriété n.
  • Plutôt que photo pour l’<img />, l’image associée est marquée avec la propriété logo.

Lieux

Ce que j’ai détaillé pour les sociétés et organisations serait la même approche pour les lieux. Vous référenceriez simplement le nom du lieu avec les propriétés fn org et appliqueriez toute l’information d’adresse comme je l’ai démontré au-dessus.

Voici un exemple de hCard en langage naturel pour un lieu :


<p class=”vcard”>
Durant ma visite à <span class=”locality”>Atlanta
</span>,
<abbr title=”Georgia” class=”region”>GA
</abbr>,
je prévois de jeter un oeil au
<span class=”fn org”>
Centennial Olympic Park
</span>.</p>

Il y a quelques propriétés hCard spécifiques-aux-lieux qui sont particulièrement utiles pour les endroits (bien qu’elles ne soient pas uniquement limitées aux lieux) :

  • La propriété geo spécifie la position globale en utilisant deux sous-propriétés, latitude et longitude.
  • La sous-propriété latitude spécifie une valeur décimale qui indique la position verticale en relation avec l’équateur.
  • La sous-propriété longitude spécifie une valeur décimale qui indique la position horizontale en relation avec le premier méridien.

Parlons Avantages

Ainsi, maintenant que j’ai traité plusieurs exemples de hCard, il est temps de passer aux avantages.

Sémantique

Vous saviez que ça arriverait. Je l’ai déjà dit et le répéterai encore une fois :

L’usage des microformats ajoute de la structure et du sens au contenu web, le rendant à la fois lisible par les humains et les machines. Et tout cela avec des standards existants pour le marquage et les données.

Ceci encourage aussi le concept plus large de standards du web qui profitent à tous.

Partager l’Information de Contact

En utilisant hCard pour marquer l’information de contact, vous rendez automatiquement possible le fait que cette information soit convertie en une vCard téléchargeable, qui peut alors être utilisée par les programmes tels que Outlook de Microsoft et le Carnet d’Adresses d’Apple.

Vous pouvez utiliser le service de contacts de Technorati décrit précédemment, ou pouvez créer le vôtre et l’héberger sur votre propre serveur pour le téléchargement.

En outre, il existe plusieurs modules/extensions de navigateurs qui exportent automatiquement l’information hCard en vCards :

Firefox

Operator 0.9.3 reconnaît le contenu hCard et offre aux utilisateurs une option pour exporter l’information sous une vCard pour utilisation dans leurs programmes préférés de gestion d’adresses :

Extension Firefox Operator avec hCard

vCard importée dans le Carnet d'Adresses

Vous pouvez aussi voir la liste des options dans la capture d’écran, Operator utilise l’information hCard pour chercher sur d’autres sites web, comme Google Maps :

Google Maps recherche hCard

Tails Export 0.3.5 est une autre extension Firefox qui tire profit de l’information hCard pour l’export à l’intérieur d’autres programmes de carnet d’adresses :

Extension Firefox Tails Export vers hCard

Safari

Le plugin Safari Microformats est utilisé pour vous utilisateurs de Safari afin d’identifier les microformats hCard sur une page web et de la sauvegarder dans votre carnet d’adresses.

Je ne suis pas une fervente utilisatrice de Safari, et l’installation de ce plug-in fût bien trop boîteuse pour moi … aussi je ne l’ai pas installé et ne peux pas vous fournir de capture d’écran.

Bookmarklets

Le concept derrière le plugin susmentionné a été implémenté dans un bookmarklet microformats indépendant du navigateur, et je peux confirmer que c’est vraiment très beau :

bookmarklet Microformats avec hCard

Il existe aussi d’autres bookmarklets hCard.

Chercher

Le contenu web marqué avec des microformats a naturellement plus de sens. Ceci pourrait aider les moteurs de recherche à mieux évaluer le contenu que vous leur fournissez, et peut-être, augmenter votre classement dans les résultats des moteurs de recherche.

Il n’y a jamais de garanties quand on arrive à la recherche, mais le contenu de qualité dans le contexte est toujours un bon démarrage.

Au delà des résultats de recherche, bon nombre des moteurs de recherche sont en train d’implémenter hCard dans leurs propres applications et services :

Réseaux Sociaux

Les sites de réseaux sociaux utilisent les microformats hCard pour marquer les pages profils avec l’information de contact des utilisateurs, tout comme celles des “contacts/friends/followers” des utilisateurs :

  • Twitter applique la hCard aux pages profil, tout comme celles des listes des “following” et “follower”.
  • ClaimID applique la hCard sur les profils publics des utilisateurs.
  • Last.fm applique la hCard sur les profils, qui comprend photo et url en plus de fn.

Et ce pour n’en citer que quelques-uns. Regardez la liste complète des services qui utilisent hCard.

Des Outils pour Vous Faciliter La Vie

Je serais négligente si je ne vous faisais pas ressortir quelques outils utiles qui peuvent vous aider à implémenter bien plus facilement hCard que de coder à la main et vous obliger à vous souvenir de toutes les valeurs (bien que j‘apprécie) :

  • hCard creator est un simple formulaire qui génère une hCard à partir de l’information proposée.
  • Le validateur microformat hCard vous laisse proposer une URL avec un contenu hCard, et puis valide les propriétés et sous-propriétés.
  • Il existe une anti-sèche hCard pour une référence rapide aux propriétés et sous-propriétés.

Il y en a Tellement Plus

Je suis entrée dans des détails vraiment spécifiques sur le microformat hCard. Mais il y en a bien plus encore que ce que j’ai pu mentionner.

Je vous encorage vivement à prendre un peu de temps et lire toutes les propriétés et sous-propriétés disponibles du microformat hCard, tout comme à voir quelques-uns des exemples de hCard dans la jungle.

A venir en 4ème Partie

Bien que ce fût un article long (qui en dit beaucoup considérant ma tendance normale à la verbosité), j’espère que cela a été intéressant et au moins utile pour vous.

Parvenir à la Sémantique Avec les Microformats, 4ème Partie traitera du microformat hCalendar.

Restez branchés …

Tags Technorati :

Note : Cette traduction s’inscrit dans la poursuite de travaux visant à mieux faire connaître les microformats. L’article original d’Emily Lewis a été publié le 22 septembre dernier sur son blog personnel. Seul le lien original fait référence. Vous pouvez aider à raffiner cet article en éditant directement le code posé sur la page miroir de mon wiki-personnel. Merci d’avance. xtof

21 September 2008

Emily Lewis : “Parvenir à la Sémantique avec les Microformats, 2ème partie - XFN”

Filed under: microformats, ressources, traduction — Christophe Ducamp @ 8:06

Dans la première partie de cette série, j’ai expliqué différentes implémentations du microformat rel sur A Blog Not Limited. Tout en expliquant rel-me, j’ai rapidement abordé le microformat XFN.

Il est maintenant temps de passer un peu plus de temps sur ce microformat très cool, qui fût en outre l’un des premiers.

Mettre un Visage Humain sur les Liens

Créé par le GMPG, le XHTML Friends Network est un moyen étonnamment simple et décentralisé de représenter les relations humaines en utilisant l’attribut rel dans les liens(<a>).

Le concept est identique à ce que je décrivais dans la Première Partie pour les relations fondées sur les liens :


<a href="http://twitter.com/emilylewis"
rel=”me”>Twitter</a>

Dans cet exemple, l’ajout du rel="me" indique que le lien de destination (href) fait référence à une page à mon propos (ou une page dont je suis responsable).

Le microformat XFN prend cette référence “humaine” pour les relations fondées sur les liens bien plus profondément que ce que j’ai déjà discuté.

Nous Sommes Tous Connectés

XFN pousse le concept du rel-me au delà de l’identification personnelle de l’individu pour aller vers les relations sociales entretenues par une personne. Vous ajoutez simplement plusieurs valeurs qui décrivent ces relations à l’attribut rel d’un lien.

Par exemple, je fais souvent référence dans mes articles de blog à mon ami et patron, Ian  :


<a href="http://www.iso-100.com/"
rel=”met colleague co-worker friend”>
Ian Pitts</a>

Dans cet exemple, j’ai ajouté rel="met colleague co-worker friend au lien faisant référence à son blog personnel. Les valeurs rel indiquent que :

  • J’ai rencontré (met) Ian en personne.
  • Ian est un confrère (colleague), ce qui veut dire que le considère comme un pair avec des intérêts et talents similaires.
  • Ian est mon boss et par conséquent un collègue (co-worker).
  • Je considère Ian comme mon ami (friend) (il a de la chance, non ?).
Comment Sommes Nous Connectés

La spécification XFN fournit des valeurs de relation qui sont volontairement simplifiées.

Amitié/Familiarité

Seule une valeur peut être utilisée dans cette liste :

  • friend : varie selon les définitions personnelles. C’est fondamentalement le plus haut niveau d”intimité” dans la catégorie de familiarité.
  • acquaintance : induit une familiarité mutuelle.
  • contact : quelqu’un avec lequel vous avez l’information de contact.
Physique

met indique quelqu’un que vous avez rencontré en personne. Peut exister indépendamment de toutes les autres valeurs.

Professionnel

Une ou plusieurs de ces valeurs peuvent être utilisées :

  • colleague : quelqu’un avec des intérêts et/ou compétences similaires aux vôtres ; un pair.
  • co-worker : quelqu’un avec qui vous partagez un employeur.
Géographique

Seule une de ces valeurs peut être utilisée :

  • co-resident : quelqu’un avec lequel vous partagez une adresse de rue.
  • neighbor : une référence géographique plus étendue, généralement quelqu’un qui vit près de chez vous mais pas dans la même rue.
Familial

Seule une de ces valeurs peut être utilisée :

  • child : quelqu’un dont vous êtes le parent, que ce soit biologique ou adoptif.
  • parent : quelqu’un qui vous a enfanté, que ce soit biologique ou adoptif.
  • sibling : quelqu’un avec qui vous partagez un parent, une fois de plus biologique ou adoptif, tout comme à travers le mariage.
  • spouse : quelqu’un avec lequel(le) (ou sentez que vous êtes) marié(e), que ce soit légal ou non.
  • kin : tout proche de vous, que ce soit par le sans, le mariage ou l’adoption.
Romantique

N’importe laquelle ou toutes ces valeurs peuvent être utilisées :

  • muse : quelqu’un qui vous inspire.
  • crush : quelqu’un vers lequel vous êtes attiré(e), mais dont les sentiments peuvent ne pas être réciproques ou même savoir que vous existez.
  • date : quelqu’un avec qui vous sortez régulièrement.
  • sweetheart : une personne avec laquelle vous êtes intime sur le plan émotionnel et/ou physiquement, et vers laquelle vous êtes engagé(e).

Du fait de ma propre confusion quand j’ai commencé cette tentative, j’ai pressenti que cela pouvait valoir la peine d’expliquer la valeur muse. Même si elle existe dans la catégorie romantique, c’est parti d’une perspective comparative en relation avec le rationnel. L’inspiration n’est pas rationnelle, de ce fait elle est romantique.

J’insère fréquemment des liens vers quelques-uns de mes héros de l’industrie (Jeffrey Zeldman, Eric Meyer et Jason Santa Maria, pour n’en nommer que quelques-uns). Et pour tous, j’insère rel="muse".

En aucune façon, ceci n’indique une relation romantique. J’admire tout simplement (et profondément) leurs travaux et les suit souvent pour de l’inspiration.

Et juste un aparté personnel : j’ai trouvé les descriptions de ces valeurs romantiques extrêmement drôles et amusantes.

Identité Personnelle

me indique un lien vers vous-même à un endroit différent (href).

C’est l’unique “relation” qui existe d’elle-même et reste exclusive de toutes les autres valeurs de relation.

J’espère que c’est évident, mais au cas où ce n’est pas considéré simplement que même si vous pressentez que vous êtes un ami de vous-même, déclarer la valeur friend est redondant. Tout comme met et toutes les autres. Vous n’avez tout simplement pas besoin d’elles et elles ne sont pas valides.

Délibérément Simple = Efficace

Même moi, en tant que personne très pointue sur le détail, je peux apprécier la simplicité et l’efficacité de ces valeurs. Plutôt que de débattre pour savoir si quelqu’un est, par exemple, un superviseur ou un subordonné, j’accepte simplement que co-worker soit une valeur plus large qui englobe les deux.

Cela vaut la peine de mentionner qu’il n’existe pas d’ordre spécifique qui ait besoin d’être suivi quand vous utilisez ces valeurs.

En outre, la réciprocité dans ces valeurs n’est pas obligatoire. Ainsi, si vous faites référence à une personne en tant que friend et qu’elle fait référence à vous en tant qu’acquaintance, ce n’est pas un problème (à moins que vous ne souffriez extrêmement d’un manque d’estime de vous-même et le preniez personnellement).

Spécifier un Profil

En plus de déclarer les valeurs rel sur les liens vers quiconque que vous connaissez, le GMPG recommande que vous laissiez aussi les navigateurs et moteurs de recherche savoir que vos pages supportent XFN en spécifiant le profil XFN dans l’en-tête <head> des pages avec des liens de relation XFN.

En ce qui me concerne, j’ai choisi de déclarer le profil de toutes mes pages par que mon <head> est maintenu dans un fichier global include. Ceci me facilite la maintenance, en outre, au minimum le rel="me" apparaît sur toutes mes pages (dans les liens du pied de page vers mes pages profil Flickr, Delicious, iLike et Twitter ) :

<head profile=”http://gmpg.org/xfn/11″>

Dites-le au Monde

Le GMPG recommande aussi de faire savoir aux gens que votre site est “XFN-friendly”. Ils fournissent même un petit marqueur que vous pouvez ajouter sur votre site :

XFN Friendly

Personnellement, je ne suis pas très fan des boutons et badges. Je préfère une esthétique plus discrète. Mais je supporte vraiment l’effort, ainsi j’ai ajouté un lien XFN dans mon pied de page :


<a href="http://gmpg.org/xfn"
title="XHTML Friends Network Friendly">XFN</a>

lien XFN dans le pied de page A Blog Not Limited

Faites que ce soit Plus Facile pour Vous

Même si ajouter simplement un attribut et quelques valeurs aux hyperliens ne constitue qu’un tout petit effort, il existe quelques outils disponibles qui rendent le XFN plus facile à implémenter :

  • Créateur XFN 1,1 est une application web qui crée des liens avec les valeurs XFN propres et est disponible en plusieurs langues.
  • MT Blogroll 2.12 Manual est un plugin pour Movable Type qui vous permet de définir les relations XFN pour les liens dans la blogroll.
  • XFN Link Creator est un autre wizard qui crée des liens avec des valeurs XFN. Il vous permet aussi de spécifier le balisage du contenant, tout comme les valeurs title pour les liens.
  • WordPress Links Manager est configuré pour vous permettre de définir les relations XFN pour les liens de blogroll.
  • WP Microformatted Blogroll 0.2 est un plugin WordPress qui produit des liens microformatés annotés sur votre blog.
  • rel-lint est un bookmarklet JavaScript qui vérifie les valeurs XFN connues et marque celles qu’il ne reconnaît pas.

Le Web Sémantique

Je sais que je l’ai déjà dit encore et encore (et ce n’est pas près de se terminer) : la sémantique est l’un des bénéfices de base des microformats, et XFN n’y fait pas exception.

L’usage ajoute de la structure et du sens au contenu, le rendant à la fois lisible par les humains – tout comme par les machines. Et même encore mieux, il le fait en utilisant des standards existants pour le marquage et les données. Brillant !

Les microformats nous emmènent vers un pas plus proche du Web Sémantique visionné par Tim Berners-Lee.

Le Web Social

Tout comme la sémantique seule me donne raison d’implémenter les microformats sur ce blog, je réalise que ce ne peut être suffisant pour certaines personnes. Pour ces personnes, je soupçonne que les aspects “sociaux” de XFN peuvent être plus importants.

Recherche Sociale

Rubhub est un moteur de recherche sociale où vous pouvez proposer votre site, et il est indexé et comparé à d’autres sites dans l’index rubhub pour identifier n’importe quelles relations sociales.

Une fois indexé, vous pouvez voir les résultats sociaux de votre site, y compris les autres sites liés à votre identité (via rel="me") et les sites des personnes qui vous référencent (y compris comment elles vous référencent).

Visualisations

XFN Graph crée des diagrammes en étoile sur la manière dont les sites se relient les uns aux autres, fournissant une représentation visuelle des relations sociales entres les auteurs de site/blog. A partir de ça, vous pouvez voir comment les personnes se connectent aux autres et trouver de nouvelles personnes qui partagent des intérêts similaires aux vôtres.

Connectivité

En utilisant XFN, l’API Social Graph de Google facilite le fait de trouver des amis dans de nouveaux endroits sur le web.

Son application de démo My Connections, par exemple, vous montre comment vous êtes connecté(e) à d’autres personnes. Voici un aperçu des résultats provenant de A Blog Not Limited”

API Social Graph My Connections pour A Blog Not Limited

Listes d’Amis

Il existe beaucoup de sites, particulièrement les sites de réseaux sociaux, qui supportent le marquage XFN sur les listes d’amis/contacts. Tant Twitter et LinkedIn, par exemple, ajoutent rel="contact" à leurs listes de liens des “suiveurs” et des contacts.

Pour aller un cran plus loin, plusieurs sites publient des listes d’amis hCard+XFN, qui peuvent être utilisées pour importer/s’abonner à d’autres sites qui supportent hCard+XFN. (Je couvrirai le microformat hCard en détail dans la partie 3 de cette série.)

Ceci pose les fondations pour permettre aux utilisateurs de modifier l’information de réseau social sur un site et faire que les autres sites soient automatiquement mis à jour.

Consolidation d’Identité

Comme je l’évoquais dans la Partie 1, XFN est essentiel pour la consolidation d’identité.

Sites de Réseaux Sociaux

Par exemple, beaucoup de sites de réseaux sociaux associent rel="me" aux liens vers les pages de profil, que ce soit Flickr, Twitter, LinkedIn et d’autres encore. Ainsi, là où n’importe quelle page réclame l’autre, l’identité divisée est consolidée.

ClaimID

Il existe aussi des services de consolidation d’identité qui utilisent XFN. claimID, par exemple, vous permet de régler manuellement un profil avec toutes vos identités en ligne consolidées sur une page, chacune d’entre elle pouvant être annoté avec rel="me". Voici un aperçu de mon profil claimID avec des liens qui englobent le microformat rel-me :

profil d'emily sur claimid

Un avantage supplémentaire de régler un profil claimID est que cela vous offre une OpenID.

OpenID est un système ouvert, décentralisé et libre pour l’identité digitale centrée sur l’utilisateur. Elle utilise les technologies web existantes pour transformer les identités digitales existantes (telles qu’un blog, un flux de photos, etc.) en un compte qui peut être utilisé sur des sites supportant les connexions OpenID. Ceci n’a bien sûr pas de rapport avec la discussion XFN, mais c’est vraiment cool.

Plaxo

Il existe aussi le Graphe Social Ouvert de Plaxo, qui comprent un crawler qui démarre par une URL que vous saisissez et cherche les liens rel="me". Il balaye ensuite ces liens, jusqu’à ce qu’il ne trouve plus de liens à suivre.

Il cherche aussi les liens bidirectionnels pour établir une “déclaration vérifiée” que c’est bien la même personne dans les deux endroits (href). Voici un aperçu des résultats du crawler pour A Blog not limited :

Plaxo Open Social Graph results for A Blog Not Limited

Le carnet d’adresses en ligne de Plaxo et le service de réseau social supporte aussi XFN en ajoutant automatiquement rel="me" à n’importe lesquels des sites personnels que vous ajoutez à votre profil. Chacun des liens “Emily on the Web” provenant de mon profil Plaxo a le microformat rel-me annoté :

Emily's Plaxo profile

Même l’API Social Graph de Google comprend une application de démonstration, Site Connectivity, qui vous montre votre identité consolidée en listant les sites qu’elle sait de vous, tout comme ceux qu’elle pense pouvoir être de vous. Voici un aperçu des résultats que j’ai obtenus pour A Blog Not Limited :

Social Graph API Site Connectivity for A Blog Not Limited

Un peu de Style

Aussi abordé dans la Partie 1, vous pouvez utiliser les sélecteurs d’attribut CSS pour ne styliser que les liens comportant des valeurs spécifiques rel.

Par exemple, mettons que vous vouliez tirer profit des icônes microformats XFN, vous utiliseriez des sélecteurs d’attribut pour déclarer :


a[rel~="friend"]:before {content: url(xfn-friend.png);}

Dans les navigateurs supportant la spécification CSS 2.1 (qui ne doivent pas être cette merde de navigateur IE6), ceci pourrait s’afficher comme suit :

exemple de lien ami XFN

A venir en Partie 3

Ceci clôture mon billet sur XFN. Parvenir A la Sémantique avec les Microformats, 3ème Partie traitera du microformat hCard.

Restez branché …

Note : Cette traduction s’inscrit dans la poursuite de travaux visant à mieux faire connaître les microformats. L’article original d’Emily Lewis a été publié le 17 septembre dernier sur son blog personnel. Seul le lien original fait référence. Vous pouvez m’aider à raffiner cet article en éditant directement le code posé sur la page miroir de mon wiki-personnel. Merci d’avance. xtof

20 September 2008

Emily Lewis : “Parvenir à la Sémantique avec les Microformats, 1° Partie : rel”

Filed under: ressources, traduction — Christophe Ducamp @ 11:56

logo microformats

Comme je le mentionnais dans cette introduction à cette série, je suis une dingue des microformats.

J’adore la sémantique, la structure et le potentiel. J’ai décidé que je devais partager cet amour au monde (ou au moins à mes quatre lecteurs) en détaillant comment j’avais utilisé différents microformats sur A Blog Not Limited.

Ce premier versement de la série se concentre sur les microformats pour les relations basées sur les liens utilisant l’attribut rel. Démarrons ?

Relations Fondées sur les Liens

L’attribut rel est utilisé pour décrire la relation d’un lien dans le sens où la destination (href) est vers la source. La plupart des personnes sont probablement très à l’aise avec cet attribut quand il est utilisé avec la CSS liée :


<link rel=”stylesheet” type=”text/css” media=”screen”
href=”/styles/main.css” />

En outre, plusieurs valeurs rel peuvent être utilisées dans le marquage, tout simplement parce que plusieurs valeurs class sont permises.

Montre Moi le Chemin vers la Home

Le microformat rel-home indique que la destination d’un lien est la page d’accueil du site. Il est essentiellement utilisé à des fins de navigation sur le site, mais aussi pour fournir quelque description de la structure du site aux pages individuelles.

Note : rel-home est une spécification brouillon, ce qui signifie qu’elle est sujette à changement. Mais, du fait que le changement fasse partie de la nature des technologies web, ce n’est pas quelque chose qui me gêne particulièrement.

Maintenant, retour à la programmation … j’utilise le microformat rel-home de deux façons. Dans le <head> de mon XHTML, j’ai ajouté :


<link rel=”home”
href=”http://www.ablognotlimited.com/”
title=”Home page” />

Ainsi, n’importe quel lien (dans la navigation, tout comme dans le contenu) vers la page d’accueil de A Blog Not Limited se voit assigner rel="home":


<a href="http://www.ablognotlimited.com" rel=”home”>
A Blog Not Limited</a>

Les Bénéfices

Outre la sémantique et le sens (ce qui est plus qu’assez en ce qui me concerne), Opera reconnaît le microformat rel-home quand il est utilisé dans le <link> d’un document <head>. Le navigateur contient une Barre d’Outils de Navigation qui permet aux utilisateurs de naviguer vers la page d’accueil :

Barre d'Outils de Navigation Opera

Aussi, selon Plongez dans l’Accessibilité de Mark Pilgrim, rel-home fournit une accessibilité accrue avec des aides à la navigation pour les navigateurs en mode texte, tels que Links et Lynx.

Pour finir, rel-home est reconnu par le module Firefox cmSiteNavigation Toolbar, qui affiche les pages web en rapport de la page web en cours dans une barre d’outils pour aider à la navigation. A cette heure, cette extension est uniquement disponible pour FF 1.5–2.0. Et du fait que j’utilise FF 3.0, je suis dans l’incapacité de vous fournir un aperçu de cet outil.

Moi, Moi-même & Me

Aussi, du fait que ce blog est mon blog et que plusieurs valeurs peuvent être utilisées, n’importe quel lien vers la page d’accueil se voit aussi assigner rel="me" :


<a href="http://www.ablognotlimited.com" rel=”home me”>
A Blog Not Limited</a>

Selon la spécification, rel="me" est utilisé sur les hyperliens provenant d’une page à propos d’une personne vers d’autres pages sur cette même personne.

Avec ça en tête, j’ai aussi ajouté rel="me" aux liens vers mes sites de médias sociaux (à savoir Flickr, Facebook, Twitter, etc.) :


<a href="http://twitter.com/emilylewis"
rel=”me”>Twitter</a>

Les Avantages

Une fois de plus, la sémantique me suffit bien en ce qui me concerne, mais il y a des avantages émergents à utiliser rel-me, principalement en relation avec le microformat XFN

XFN est un microformat qui décrit les relations sociales (à savoir les amis, la famille, les collègues, etc.). En utilisant XFN, Google est en train de développer l’API Social Graph pour aider à rendre le web plus social et plus facile pour trouver des amis dans de nouveaux endroits sur le web.

Il existe aussi tout un petit nombre de services de “consolidation d’identité en ligne” qui utilisent XFN, dont claimID et l’Open Social Graph de Plaxo.

Pour aller encore plus loin, beaucoup de sites de “réseaux sociaux” sont en train d’ajouter rel="me" à leurs liens de page profil, dont Flickr, Twitter, LinkedIn et plus encore. Ceci supporte l’effort de consolidation d’identité : Là où n’importe quelle page qui fait une demande pour une autre, l’identité divisée est consolidée.

Je traiterai le microformat XFN plus en détails dans la 2ème Partie de cette série.

Catégories + Tags = Organisation Joyeuse

Compte tenu de ma prédilection pour l’organisation (et parce que les enfants cools le font), j’utilise les tags sur A Blog Not Limited pour compléter les catégories. Et pour mon bonheur, il existe un microformat pour supporter cette organisation : rel-tag.

Ajouter rel="tag" à un lien (<a>) sur une page indique ce qui est traité sur cette page — ou une partie de cette page. Rel-tag est très utilisé sur les blogs où les auteurs taguent leurs billets pour aider à l’organisation/catégorisation du contenu.

La spécification requiert que le lien destination (href) inclut la véritable valeur du “tag” comme le segment final de la valeur de l’URL. Ceci est connu sous le nom “tagspace.”

Sur A Blog Not Limited, j’ai appliqué ce microformat à tous mes liens tagués :


<a href="http://www.ablognotlimited.com/articles/tag/ExpressionEngine/”
rel=”tag”
>ExpressionEngine</a>

Tout comme mes liens de catégories (parce que dans mon esprit, ils décrivent aussi ce qu’il y a dans un contenu donné :


<a href="http://www.ablognotlimited.com/articles/category/experiments/”
rel=”tag”
>Experiments</a>

Ces exemples démontrent qu’une page contenant ces liens englobe de l’information à propos de ExpressionEngine et/ou Experiments. En outre, les exemples montrent que les “tagspaces” tant pour ExpressionEngine que Experiments sont situés sur les URLs fournies.

Les Avantages

Ai-je besoin de le répéter une fois de plus ? Oui, bien sûr, juste parce que j’adore : la sémantique est le principal avantage pour moi. A cette heure, tout comme pour l’autre microformat décrit dans cet article, il y a des avantages supplémentaires.

Le module Operator, pour Firefox, par exemple, reconnaît rel-tag et fournit une recherche par contexte sur d’autres sites web, dont Amazon, YouTube et Flickr. Voici comment Operator traite les liens rel-tag sur mon blog :

Module Operator pour Firefox

Technorati a une fonctionnalité de recherche de tag qui indexe les billets de blog tagués et les autres contenus tagués avec rel. Utile pour aider à augmenter l’exposition d’un site ou d’un blog, parce que le contenu rel-tagué peut être accédé par les Tags de Technorati.

De la même manière, le moteur de recherche de blog Icerocket supporte la recherche basée sur les tags.

License to Kill (Avec Code Sémantique)

Oui, je sais ce titre est vraiment boiteux … passons …

Le dernier microformat de relation basé sur le lien que j’utilise est rel-license. Comme vous avez pu déjà le deviner, ce microformat indique une licence pour le contenu, et quand il est utilisé dans un lien (<a>), où accéder à cette licence (via la valeur href).

Quand j’ai démarré A Blog Not Limited, une des premières choses que j’ai faite fût de poser une licence Creative Commons pour la protection du copyright. J’ai ensuite modifié la déclaration de copyright dans mon pied de page de blog pour ajouter un lien vers la licence. Et c’est à ce lien que j’ai ajouté rel="license" :


<a href="http://creativecommons.org/licenses/by-nc-nd/3.0/deed.fr_CA"
title="Paternité-Pas d'Utilisation Commerciale-Pas de Modification 3.0"
rel=”license”>copyright</a>

Les Avantages

Oui, sémantique d’un côté. D’un autre côté, il y a un module pour Firefox qui reconnaît rel-license : Tails Export. Voici comme Tails affiche l’information rel-license pour A Blog Not Limited :

Extension Firefox Tails Export

En outre, Creative Commons lui-même utilise rel-license au moment de générer le balisage rel-license.

Et Google et Yahoo! offrent tous deux des recherches sur le contenu basé sur rel-license :

Un Avantage Global

Bien qu’ayant détaillé quelques avantages individuels pour chacun des microformats discutés dans cet article, il existe un avantage global qui devrait être aussi pris en compte : les sélecteurs d’attribut CSS.

En utilisant les sélecteurs d’attribut CSS, vous pouvez définir des styles spécifiques aux liens comprenant des attributs rel. Par exemple, ajouter une icône au début d’un lien assigné rel="license" :


a[rel~="license"]:before
{content: url(copyright.png);}

Bien sûr, IE6 ne reconnaît pas les sélecteurs d’attribut, mais au diable. Je hais IE6 de toutes les façons… je dis d’y aller pour une amélioration progressive du design pour des navigateurs compatibles avec les standards qui supportent véritablement les sélecteurs d’attribut.

A Venir en 2ème Partie

Comme je l’évoquais précédemment, je traiterai le microformat XFN dans Parvenir à la Sémantique avec les Microformats, 2° Partie.

Restez à l’écoute …

Note : Cette traduction en cours provient d’un article d’Emily Lewis publié le 9 septembre dernier sur son blog personnel. Seul le lien original fait référence. Vous pouvez aider à raffiner cet article en éditant directement le code posé sur la page miroir de mon wiki-personnel. Merci d’avance. - xtof

Mots-clés : , ,

Emily Lewis : “Parvenir à la Sémantique avec les Microformats - Introduction”

Filed under: ressources, traduction — Christophe Ducamp @ 11:01

Ce qui suit s’inscrit dans la poursuite de travaux visant à mieux faire connaître les microformats. Aujourd’hui, voici une traduction en cours d’un article d’Emily Lewis publié le 5 septembre dernier sur son blog personnel. Seul le lien original fait référence. Vous pouvez aider à raffiner en éditant directement le code posé sur la page miroir de mon wiki-personnel. Merci d’avance. - xtof

logo microformats

Je suis une organisatrice avec un besoin parfois frustrant de prêter attention aux plus petits détails.

Cela se voit même dans ma maison : ma collection de plus de 500 DVD est organisée par ordre alphabétique, tout comme ma collection de CDs. Je passe des heures dans itunes à déclarer des genres (parce que ceux par défaut ne sont tout simplement pas assez bien pour moi) et à créer des playlists de plus de 10 000 plages. Les tiroirs de ma commode et la penderie sont immaculés. Tout simplement moi. Ce caprice déteint aussi dans mon travail en design web, un travail valide, sémantique et bien commenté (la plupart du temps). Et c’est l’une des raisons pour lesquelles j’aime ce que je fais dans la vie.

Coder le XHTML et la CSS à la main requiert organisation et planning, tout spécialement pour bien le faire. Même pire, suivre les standards du web dans ce code requiert une plus grande attention au tout petit détail, tout particulièrement la sémantique. Telle est la raison pour laquelle je suis gaga des microformats.

C’est Quoi les Microformats ?

Pour le dire vite, les microformats sont de simples formats de données ouverts construits sur des standards existants pour le balisage et les données. Les designers et les développeurs utilisent les microformats pour ajouter de la structure et du sens à la publication web en ajoutant des métadonnées et d’autres attributs aux éléments (X)HTML existants.

A Quoi Cela Ressemble ?

Un exemple simple de microformat (bien qu’ils soient tous simples par nature) est l’attribut rel pour les liens (<a>) :

<a href="http://www.ablognotlimited.com" rel=”home”>A Blog Not Limited</a>

Le lien ci-dessus rel="home", qui indique la page liée est la page d’accueil du site. Ceci ajoute un peu plus de structure et de sens au lien avec du marquage et des attributs existants.

Mais cet article n’est pas une explication des microformats. Si vous voulez plus de recul, allez sur le site faisant autorité, Microformats, ou Wikipedia.

Alors, de Quoi Traite Cet Article ?

Depuis le développement de ce site A Blog Not Limited, j’ai identifié un certain nombre de microformats que je voulais utiliser dans mon marquage :

Afin de partager, j’ai voulu fournir des exemples de ces implémentations personnelles. Néanmoins, au fur et à mesure de la rédaction de cet article, j’ai réalisé que c’était bien plus long que ce à quoi je pouvais m’attendre. Mais je n’ai vraiment pas voulu me débarrasser de quoi que ce soit. Aussi j’ai décidé de le morceler à l’intérieur d’une série d’articles traitant de la manière dont j’ai implémenté les microformats sur ce blog. Cet article d’introduction est tout simplement ça : une introduction à la série avec un peu de contexte sur les microformats.

Qu’en Attendre

Chaque article dans ma série Parvenir à la Sémantique Avec Les Microformats traitera d’un microformat que j’ai choisi d’utiliser sur A Blog Not Limited.

J’y introduirai des échantillons de code, des explications des éléments et attributs utilisés, ainsi que les avantages à utiliser chaque microformat.

Je n’ai pas de planning pour les articles, mais j’espère en publier au moins un par semaine.

Aussi, Quelle Est la Prochaine Étape ?

Parvenir à la Sémantique avec Les Microformats, 1ère Partie détaillera les microformats pour les relations fondées sur les liens, rel-home, rel-me, rel-tag and rel-license.

Mots-clés : , ,, , , , , , , , , , ,

1 May 2008

C’est quoi les Monkeyformats ?

Filed under: implémentation, microformats, ressources, traduction — Christophe Ducamp @ 0:59

Ce ne serait pas élégant si les navigateurs intelligents pouvaient reconnaître les adresses, les dates et autres données structurées figurant sur les pages web ? Et ce même quand les données ne sont pas structurées ? (tout comme le fait l’application Mail d’Apple qui reconnaît les dates et les heures en fournissant à l’utilisateur lambda une interface pour faire des choses simples comme savoir les ajouter à son agenda)…

Et bien disons qu’avec les monkeyformats d’Albert de Klein, on fait juste là un (grand) pas en avant. Amusez-vous par exemple à extraire les hCards sur les Pages Jaunes : essayé à l’instant sur une simple requête “Aston Martin” à Paris et ça fonctionne !. Bravo et merci Albert. - xtof

P.S. Ce qui suit en-dessous est une traduction en cours publiée sous FairUse de la page monkeyformats.org, seul lien de référence.

monkeyformats

Albert de Klein : C’est quoi les Monkeyformats ?

Les Monkeyformats sont des scripts utilisateurs Greasemonkey qui ajoutent un balisage sémantique dans le navigateur Firefox aux sites web ne supportant pas encore les Microformats. Vous pouvez alors exécuter des actions sur ces Microformats avec Operator ou toute autre extension similaire.

Vidéo Monkeyformats

Pourquoi avons-nous besoin des Monkeyformats ?

L’adaptation des microformats peut utiliser un boost dans le monde car cela fait du Web un plus bel endroit. Les Monkeyformats permettent aux utilisateurs d’expérimenter les avantages des microformats sur des sites qu’ils utilisent tous les jours mais qui manquent à cette heure de balisage sémantique, et sans les contraindre à attendre que ces sites les ajoutent. Même si nous n’en sommes encore qu’aux prémisses, il existe déjà plusieurs monkeyformats disponibles qui ajoutent des microformats à quelques répertoires téléphoniques nationaux en Europe, aux services de billetteries, etc.

Exemple de Monkeyformat

hCard

Directory Pays Installation Auteur
Yellow Pages (Nouveau !) US Installer Albert de Klein
Pagine Bianchi Italie Installer Albert de Klein
British Telecom Royaume-Uni Installer Thom Shannon
Das Telefonbuch Allemagne Installer Albert de Klein
De Telefoongids Pays-Bas Installer Albert de Klein
Pages Jaunes France Installer Albert de Klein

hCalendar

Event listing Country Installation Auteur
Ticketmaster.co.uk Royaume-Uni Installer Albert de Klein
Lippupalvelu.fi Finlande Installer Albert de Klein
Billettservice.no Norvège Installer Albert de Klein
Ticnet.se Suède Installer Albert de Klein
Billetnet.dk Danemark Installer Albert de Klein
Ticketmaster.nl Pays-Bas Installer Albert de Klein

Comment puis-je utiliser ces Monkeyformats ?

Tout d’abord, vous devez installer à la fois l’extension Greasemonkey et l’extension Operator dans votre navigateur Firefox. Puis vous pouvez essayer quelques-uns des scripts utilisateurs provenant du répertoire Monkeyformat en les installant et en visitant les sites web pour lesquels ces microformats ont été écrits. Dans la plupart des cas, les signaux d’Operator devraient s’allumer dans la barre d’adresses après que vous ayez éxécuté une recherche indiquant que les microformats ont été ajoutés à la page. Puis vous pouvez par exemple envoyer ces hCards dans votre carnet d’adresses ou sur votre téléphone mobile.

Comment je crée mes propres microformats ?

Si vous voulez créer vos propres microformats, jetez un coup d’oeil aux scripts utilisateurs dans le repository. La plupart d’entre eux utilisent une combinaison de requêtes Xpath et de remplacements d’Expressions Régulières pour appliquer les microformats aux pages. Pour quelques sites c’est relativement facile d’appliquer les classes des microformats car tous les éléments sont en place et vous n’avez qu’à ajouter les classes appropriées. Dans la plupart des cas, vous devrez ajouter des éléments supplémentaires autour des adresses, des codes postaux ou des localités parce qu’ils ne sont pas entourés par des éléments à cette heure pour s’appliquer aux classes. Parfois, vous devrez même ajouter quelques éléments imbriqués pour rendre possible la structure des microformats.

Si vous créez des monkeyformats, partagez les S.V.P. avec d’autres dans le repository Userscripts.org. N’oubliez pas d’ajouter le tag monkeyformats pour faciliter la recherche.

Qu’est-ce que Greasemonkey ?

Greasemonkey est une extension pour le navigateur Firefox qui peut modifier l’apparence des sites web grâce à Javascript du côté client.

Qu’est-ce qu’Operator ?

Operator est une extension pour Firefox qui vous permet d’exécuter des actions sur les Microformats grâce à JavaScript.

C’est quoi les Microformats?

Les microformats sont un ensemble divers de spécifications qui vous permettent d’ajouter un balisage sémantique dans les pages HTML en utilisant des attributs de classes pré-définis.

Pour en savoir plus

Le concept complet des Monkeyformats est vraiment tout nouveau. Pour le moment, (et si vous savez lire le néerlandais) vous pourriez aussi jeter un oeil sur l’article que j’ai écrit pour Naar Voren, un magazine hollandais pour les travailleurs du web, dans lequel j’ai présenté le concept des Monkeyformats pour quelque information plus approfondie.

Amusez-vous avec le Web Sémantique !

Albert de Klein

13 April 2008

Brian Suda - Encodage XFN, extraction et visualisations

Filed under: ressources, réseausocial, traduction — Christophe Ducamp @ 8:24

Par Brian Suda. Traduction d’un article publié initialement le 21 février 2008 chez Dev.Opera. Seul le lien original fait référence.

Introduction

Dans cet article, j’exposerai un bel aperçu de XFN - le microformat pour décrire les relations entre personnes. Je regarderai rapidement ce que c’est et quel est le balisage requis pour ajouter de l’information sur vos sites, avant d’aller ensuite plus en profondeur, pour regarder les avantages dont vous pourrez tirer profit de cette donnée en l’extrayant et en l’utilisant de différentes façons. Extraire la donnée est plus facile que vous ne le pensez - il existe probablement une librairie déjà disponible pour votre langage ! Sinon, il existe aussi quelques services web qui pourraient faire le boulot que je vous présenterai en-dessous.

Remarquez que j’ai créé quelques exemples complexes pour accompagner les sections CSS et XSLT - vous pouvez télécharger le code ici.

Qu’est-ce que XFN ?

XFN veut dire “XHTML Friends Network” et c’est l’un des tout premiers microformats créé par le Global Multimedia Protocol Group. Il a émergé de la tendance générale à publier des liens vers d’autres sites dont vous appréciez la lecture. Sur votre blog, cela s’appelle une blogroll - il est commun de penser aux personnes à travers leurs sites web. Leur URL est une représentation de cette personne ; elle fait partie de son identité en ligne. XFN est une tentative pour codifier ces relations en utilisant du HTML standard.

XFN est très facile à utiliser - vous utilisez simplement quelques mots-clés intuitifs pour décrire les relations que vous avez avec d’autres personnes. Il existe un document XMDP qui décrit toutes les valeurs possibles XFN. Ces valeurs sont très basiques et capturent un large spectre de possibilités. J’avancerai avec vous à travers quelques exemples en-dessous. XFN est volontairement laissé vague ; il permet aux définitions de plus facilement se tordre dans le temps, et par conséquent nous obtenons une liste plus courte. Une liste plus verbeuse aurait été autrement trop longue et vous n’auriez pas pu décider exactement quelles valeurs utiliser, et elle n’aurait jamais pu être suffisamment granulée pour quiconque. Aussi XFN colle aux 80% des usages et ce rapidement et facilement, et en utilisant quelque chose de CHIC ou d’autres microformats pour coller à tous les cas particuliers.

Ces valeurs XFN sont ajoutées à l’intérieur des attributs rel (rel est un raccourci pour “relation”) des éléments a que vous utilisez pour lier ces personnes. L’attribut rel peut aussi apparaître sur l’élément link, mais du fait que les microformats se préoccupent de rendre les méta-données plus visibles, nous nous concentrerons seulement sur l’élément “a“. Un bel aspect de l’attribut rel est qu’il peut prendre un ensemble de valeurs séparées-non-ordonnées. Ceci veut dire que vous pouvez produire des déclarations XFN composées très simplement en listant plus d’une valeur, si la personne que vous liez a plus d’un type différent de relation envers vous. Ce qui suit est un tableau des valeurs possibles XFN, classées en catégories :

Amitié
(une
sélection)
Phys. Pro. Géo
(une
sélection)
Famille
(une
sélection)
Roman-
tique
Identité
contact met co-worker co-resident child muse me
acquaintance colleague neighbor parent crush
friend sibling date
spouse sweetheart

Implémentation

Ainsi prenons par exemple, Chris Mills, l’éditeur de mon article. Il a une bio d’auteur sur dev.opera.com, ainsi nous pouvons utiliser ce lien :

<a href="http://dev.opera.com/author/974138" rel=”">
Chris Mills</a>

Maintenant que j’ai ma structure basique, j’ai besoin de placer les valeurs appropriées pour mes relations avec Chris. Si je démarre simplement à gauche de la liste XFN et la parcours, je peux voir quelles valeurs je peux utiliser. La première catégorie est Amitié, qui décrit le niveau d’amitié que Chris et moi avons. Je sais comment contacter Chris, aussi contact est certainement approprié. Pour la plupart des personnes, ce pourrait être la relation maximale possible, mais je connais Chris mieux que cela, aussi je pourrais utiliser acquaintance. J’ai aussi travaillé avec Chris avant sur d’autres projets et l’ai rencontré à plusieurs occasions comme sur SxSWi et d.Construct, et nous avons pu discuter lors de plusieurs breuvages, par conséquent je pense que friend est la description qui colle le mieux. Quelques personnes réservent le terme friend aux personnes à qui elles laisseraient voir leurs enfants, quelques personnes sont amies avec quelqu’un qu’elles ont simplement rencontré durant 5 minutes ou admirent. Dans la catégorie amitié, il est possible de n’avoir qu’une seule valeur, aussi je baliserais Chris comme un friend. Le terme friend est souvent symétrique, ce qui veut dire que si je considère Chris comme un ami, il est probable qu’il me considère aussi comme un ami, mais ce n’est pas requis. Chris pourrait être encore bien plus strict sur sa définition de friend et de ne considérer seulement cette valeur que pour les quelques personnes sur la liste destinataires de sa carte de voeux. La définition de friend est ouverte à interprétation et changera avec le contexte et le temps. Du fait que la catégorie Amitié ne peut avoir qu’une seule valeur au plus, j’ai sélectionné le plus haut niveau de relation, friend.

<a href="http://dev.opera.com/author/974138" rel="friend“>
Chris Mills</a>

La prochaine catégorie est Physique. La seule option est met, et j’ai rencontré Chris à plusieurs occasions, aussi je peux ajouter cela à la valeur rel.

<a href="http://dev.opera.com/author/974138" rel="friend met“>
Chris Mills</a>

L’ordre des valeurs XFN n’est pas important ; le fait qu’elles soient séparées par des espaces veut dire que toutes ces valeurs s’appliquent. La prochaine catégorie est Professionnel. Celles-ci décrivent quelques relations professionnelles que vous pourriez avoir eues avec des personnes. Chris et moi travaillons tous deux dans le même secteur et écrivons pour dev.opera.com, par conséquent je dirais qu’il est un colleague. L’autre option est co-worker, mais nous ne travaillons pas pour la même société, aussi je n’utiliserai probablement pas ça. Ces deux valeurs professionnelles sont symétriques, aussi si je suis un “co-worker” de Chris, alors il est aussi un “co-worker” avec moi, et il en est de même pour “colleague” - si nous travaillons tous les deux dans le même secteur, alors nous devrions tous les deux nous considérer l’un et l’autre comme “colleague”.

<a href="http://dev.opera.com/author/974138"
rel="friend met colleague“>
Chris Mills</a>

Dans le reste des catégories, je ne trouve pas quelque valeur qui corresponde à Chris, aussi je n’ai pas besoin d’ajouter quelque valeur supplémentaire à mon attribut rel.

La dernière catégorie dans XFN est Identité, elle n’est utilisée que pour vos propres sites, pas pour les sites des amis. La seule valeur ‘rel‘ est ‘me‘ qui, quand elle est symétrique, permet la consolidation d’identité à travers différentes pages sur internet. Si mon site web suda.co.uk a un lien vers mon profil flickr, je peux utiliser rel="me". Puis son profil flickr, je peux utiliser rel="me" pour faire un lien arrière vers suda.co.uk. Si je peux faire ça sur toutes mes différentes pages profils sur Twitter, upcoming et autres, alors n’importe quel crawler XFN rel-me pourra commencer à construire un profil unique de moi sur le Web, tout cela sans avoir à dire à chaque site isolé ce qu’il en est de tous mes autres profils.

Outils pour créer XFN

Si cela vous semble difficile à mémoriser, pas de panique - il existe beaucoup d’outils pour vous aider. Il existe une version web du créateur XFN en différentes langues pour vous aider à démarrer rapidement. Il existe aussi des plug-ins pour Dreamweaver et Wordpress. De plus en plus de plugins sont en train d’apparaître, aussi soyez sûr de vérifier la page wiki sur XFN pour votre langage favori ou votre système de gestion de contenu.

Problématiques avec XFN

Il y a toujours eu quelques problématiques ouvertes avec XFN. Je ne m’y attarderai pas ici, mais ci-dessous je souligne quelques points communs et regarderai comment nous pouvons avoir intérêt à les connaître.

  • Par exemple, il n’existe pas de moyen de dire ex-ami de 1990-2000. XFN existe dans le maintenant. C’est plus un cas limite et ne peut pas être représenté dans XFN.
  • La définition de ‘friend’ est peut-être trop vague. C’est une zone grise - quelques-uns la considèrent trop vague, et d’autres disent de laisser le langage évoluer et la définition de “friend” changera tout autant. Personnellement je suis d’accord avec la dernière proposition - si nous nous efforçons d’améliorer la précision de la terminologie, nous pourrions sur-compliquer les choses et aboutir à 400 définitions supplémentaires de l’amitié que personne n’utiliserait de toutes façons.
  • XFN n’a pas suffisamment de relations professionnelles telles que “manager” ou “vendor”. Le truc génial à propos du HTML est que vous pourriez écrire rel="co-worker manager". Un parseur XFN trouverait encore la valeur ‘co-worker’ et d’autres parseurs spécifiques extrairaient vos valeurs personnalisées telles que ‘manager’. Les microformats sont aussi basés sur les pratiques existantes, aussi du fait que de plus en plus de personnes publient leurs relations professionnelles, celles-ci pourraient être classées dans le XFN à une date ultérieure. Rien n’est figé dans la perpétuité.

Comment extrayez-vous la donnée XFN ?

Il y a beaucoup de façons pour que vous puissiez extraire la donnée provenant du HTML, et j’étudierai dans cette section quelques-unes des plus populaires.

JavaScript

Javascript complète naturellement le HTML, ainsi c’est un langage idéal pour parser le XFN à partir du DOM. Le Javascript pourrait être chargé à l’intérieur de la page onLoad, il pourrait faire partie d’un bookmarklet, ou même être compilé dans un script greasemonkey. Voici un peu de code simple pour que vous puissiez démarrer.

// get all 'a' elements

var links=document.getElementsByTagName("a");
var xfnValues=['friend','acquaintance','contact','met','co-worker','colleague','co-resident','neighbor','child','parent','sibling','spouse','kin','muse','crush','date','sweetheart','me']

// boucle et recherche les attributs rel

for(var i=0;i<links.length;i++){
  var link = links[i];
  // regarde pour voir si le lien a un attribut rel et href
  if(link.getAttribute("href")&&link.getAttribute("rel")) {
    // reçoit la valeur rel
    var rel=link.getAttribute("rel");
    // boucle à travers les valeurs connues XFN
    for(var j=0;j< xfnValues.length;j++) {
      // cherche des correspondances
      var regex=new RegExp('\\b'+ xfnValues[j]+'\\b',"i");
      if(rel.match(regex)) {
        // fait quelque chose ici
      }
    }
  }
}

Drew McLellan a un outil génial rel-Lint, qui vous aidera à trouver les problèmes communs avec votre XFN et d’autres balisages.

CSS

En utilisant CSS, vous pouvez facilement styliser les données XFN. Il existe beaucoup de façons d’y parvenir, y compris les couleurs d’arrière-plan, ou en utilisant :after {content:"xxx" } pour ajouter un astérisque ou une image. Wolfgang Bartelme a produit quelques très belles images à cette intention qui sont une licence généreuse.

Les valeurs XFN sont ajoutées aux attributs rel des éléments a.
Ainsi, la première partie de toute déclaration CSS serait de styliser le a, à partir de là nous construirons des valeurs spécifiques XFN pour le stylisme.

a{ background-color: yellow; }

Ceci donnera un arrière-plan jaune à tous les liens, mais j’ai besoin d’être plus spécifique ici - ensuite je voudrais ne cibler que les éléments a avec un attribut rel. Ceci est possible avec le sélecteur d’attribut CSS.

a[rel] { background-color: yellow; }

Ceci n’appliquera le style qu’à tous les liens qui contiennent aussi l’attribut rel. L’étape suivante est de s’assurer que les attributs rel sélectionnés ont des valeurs XFN - nous ne voulons tout simplement pas n’importe quel attribut rel.

a[rel="friend"]{ background-color: yellow; }

Bien que cela soit correct, ça ne trouvera que des éléments a qui ont une valeur unique rel de friend. Souvenez-vous que l’attribut rel peut prendre une liste de valeurs séparées. S’il y a d’autres valeurs sur l’attribut rel, ce sélecteur ne collera pas et le style ne sera pas appliqué. Aussi, j’ai besoin d’ajouter un autre morceau d’information à ma syntaxe de sélecteur CSS.

a[rel~="friend"]{ background-color: yellow; }

En utilisant ~=" au lieu de simplement =, cela dit au navigateur d’accorder la chaîne friend dans n’importe quelle liste de valeurs séparées-par-des-espaces, comme tout simplement friend. Remarquez que ceci n’est pas supporté dans IE6, mais ce l’est dans la plupart des autres navigateurs modernes. Pour finir, il est aussi possible de chaîner ensemble ces valeurs :

a[rel~="friend"][rel~="co-worker"] { background-color: red; }

Ceci vous permet de styliser les combinaisons de personnes de valeurs XFN, je pourrais par exemple styliser les amis en jaune, mais les amis avec qui je travaille aussi auraient un arrière-plan rouge. Ceci est possible pour n’importe quelle combinaison, friend vs. friend et colleagues, muse vs. muse et met ; en utilisant CSS il est facile de cible ces relations particulières.

XSLT

XSLT est conçu pour convertir XML vers un autre format - vous pouvez très facilement extraire la donnée provenant du HTML en utilisant XSL et XPath, tant que le HTML est bien formé. (S’il ne l’est pas, vous pouvez utiliser une application comme TIDY pour le nettoyer). Pour toutes les personnes qui sont plus à l’aise avec Javascript qu’avec XPath, la plupart de la connaissance DOM se transfère, vous aurez juste besoin de vous familiariser avec la nouvelle syntaxe. Laissez-moi vous présenter un exemple. Tout d’abord, j’ai besoin de trouver tous les a n’importe où dans le DOM Tree. Pour faire ça, je démarre avec le chemin //.

//a

Ceci trouvera n’importe quel élément a à n’importe quel niveau de profondeur (//) à partir du noeud racine, dans notre cas html. C’est très proche du document.getElementByTagName('a') en JavaScript. L’étape suivante est de raffiner notre sélection à tous les éléments a qui ont un attribut rel de friend.

//a[@rel='friend']

Les crochets ([]) fonctionnent presque de la même façon qu’avec nos crochets CSS. Le @ est utilisé pour dire que c’est un attribut, ainsi @rel est l’attribut rel et il doit être égal à friend. Le problème avec cette expression XPath est le même qu’avec la problématique CSS ; il trouvera les valeurs rel qui ne contiennent seulement que la chaîne friend ; Je veux trouver friend n’importe où dans une liste séparée par des espaces.

XPath nous donne un peu plus d’outils que CSS ; nous pouvons ajouter la fonction contains() pour trouver la chaîne friend à partir de la valeur d’attribut générale rel. contains() prend deux paramètres - la chaîne complète suivie par la sous-chaîne que vous recherchez.

//a[contains(@rel,'friend')]

Ceci trouvera n’importe quel élément a qui a un attribut rel qui contient la sous-chaîne friend. Le problème est que cela trouvera aussi la chaîne friendship parce que friend est contenu dedans. Pour résoudre cela, je peux garnir les deux côtés de l’attribut rel avec des espaces et chercher le terme aussi garni d’espaces. Cela paraît compliqué, mais ce ne l’est pas. Il y a deux fonctions supplémentaires à noter dans cet exemple - normalize-space() qui retire l’espace-blanc non voulu (équivalent à trim() dans d’autres langages de programmation) et concat(), qui fusionne simplement les chaînes ensemble. Dans cet exemple nous concaténons un espace blanc avant et après les attributs normalisés rel.

//a[contains(concat(' ', normalize-space(@rel), ' '),' friend ')]

En utilisant XPath, vous pouvez maintenant trouver les éléments qui correspondent à vos requêtes. Il est désormais possible d’extraire cette donnée et de la styliser, de la transformer et de la sauvegarder pour un accès ultérieur.

Expressions Régulières

Vous pouvez aussi utiliser des Expressions Régulières pour extraire la donnée. Ceci est plus compliqué, mais quelques personnes sont plus à l’aise avec les Regexes qu’avec XSLT. Je ne suis pas un expert des Expressions Régulières - il y a probablement un meilleur moyen, plus optimisé de produire ça - mais cela fonctionne pour moi !

/<a(.*|\W*)(rel\s*=\s*\"([^\"]*)\")(.*|\W*)>(.*|\W*)<\/a>/i

Ceci trouvera tous les éléments a et tentera d’extraire les valeurs rel à l’intérieur d’un array que vous pourrez ensuite parser pour regrouper n’importe quelles valeurs ; vous pouvez ensuite faire tout ce que vous voulez avec la donnée.

L’expression régulière est non-sensible-à-la-casse ; nous avons spécifié qu’avec le /i sur la fin. Cela commence par le groupement d’une chaîne de <a - c’est la façon dont chaque lien ancre est écrit. Puis, cela cherche (.*|\W*). Le point (. regroupe n’importe quel caractère et le \W regroupe n’importe quel mot. Nous cherchons pour l’un d’entre eux zéro ou plus de fois. Ceci engloutira tout autre texte comme href="..." ou d’autres attributs qui ne sont pas les valeurs rel que nous recherchons. Nous avons besoin de faire ça de nouveau après la valeur rel pour engloutir aussi tout autre texte derrière. Le href ou les autres attributs peuvent être dans n’importe quel ordre, aussi nous avons besoin de gérer ces scénarios. La partie vraiment importante est (rel\s*=\s*\"([^\"]*)\"). Ceci regroupe la chaîne rel suivie par zéro ou plus de caractères espace blanc, puis un = suivi par plus d’espaces blancs optionnels. Le \" est la valeur d’échappement pour un caractère à double guillemets. C’est le début de notre liste séparée par des espaces de valeurs rel. Le ([^\"]*) dit à mon expression régulière pour saisir zéro ou plus de caractères qui ne sont pas (^) un double guillemet.

Une fois que vous faites tourner cette expression régulière, toutes les données dans la parenthèse sont rassemblées dans des valeurs array. La valeur véritable de l’attribut rel serait dans un item array [3] parce que c’est le troisième ensemble de parenthèses dans cette chaîne. Ceci est vraiment compliqué pour quelque chose qui semble vraiment simple dans d’autres langages, mais selon votre situation, votre niveau de confort et de langage de programmation, les expressions régulières pourraient être pour vous le meilleur choix.

Si aucun de ces morceaux de code ne sont votre tasse de thé, il pourrait y en avoir un disponible dans votre langage favori. La page XFN sur le wiki a une liste croissante d’applications et de librairies déjà écrites, ainsi c’est un endroit excellent pour démarrer votre prochain projet XFN.

Que pouvons-nous faire avec ces données ?

Ainsi tout cela est bien, mais certains d’entre vous doivent être en train de penser “Quelles sont les choses intéressantes que je puisse produire avec cette donnée, maintenant que je l’ai extraite ?” Une fois que vous avez extrait toute cette donnée du HTML, il est très facile de la stocker dans une base de données ou un fichier texte pour la retrouver ultérieurement. Vous êtes basiquement en train de stocker trois pièces de données - deux URLs (une URL#1 qui a une relation XFN avec la seconde URL) et une de type relation (la valeur de l’attribut rel.) Une fois que vous avez votre base de données, vous pouvez vous poser des questions comme “Montre moi toutes les URLs qui ont une relation de ‘contact ou colleague’ avec ’suda.co.uk’”

Dans cette section, j’étudierai quelques cas et sites qui vous permettent de faire un peu de ça dès aujourd’hui.

Six Degrés de Séparation

Le fameux phénomène du Petit Monde de Stanley Milgram a démontré qu’il existe une moyenne de 6 étapes entre deux personnes. Ceci est produit à travers un réseau complexe d’envois de lettres, et puis plus tard à nouveau via e-mail. En utilisant XFN, il est possible de cartographier les distances entre deux personnes via leurs relations. Le site RubHub trace les relations XFN et liste ceux qui se lient à vous et comment, avec ceux qui vous lient et comment. Les résultats pour mon site personnel, suda.co.uk, peuvent être vus dans la Figure 1. Mon ami Harry Halpin de mes années d’Université est lié à moi et dans mon exemple au-dessus, je lie vers Chris Mills. Ainsi un spider automatisé pourrait commencer par construire un réseau de qui est connecté à qui et à travers qui. Nous pouvons épancher cela à travers les contacts d’Harry et de Chris, et nous pouvons demander qui connaît qui et dans combien de sauts, ou s’il existe d’autres connexions mutuelles entre les deux parties. Avant, sans XFN, vous ne pouviez que deviner si un lien définissait une relation ou si c’était juste un lien. Maintenant que nous avons “typé” les liens, il est possible d’extraire plus de sens à partir d’eux.

A ma connaissance, il n’existe pas d’outil qui puisse répondre à des questions comme “à quelle distance est Jeffrey Zeldman de Brian Suda”. Le service RubHub vous permet de cliquer à travers chaque site de personne et de suivre leurs liens à l’infini, tout comme vous pouvez le faire avec IMDB pour voir quels acteurs ont travaillé avec d’autres. Ce type de donnée est juste en train de demander de construire un joli front-end visuel, ainsi vous pouvez poser des questions comme “Trouve le chemin entre suda.co.uk et zeldman.com”. Désormais, si seulement Kevin Bacon avait un site web avec XFN…

les résultats Rubhub pour suda.co.uk

Figure 1 : suda.co.uk résultats RubHub XFN

Comme vous pouvez le voir, le spider Rubhub a trouvé 6 liens externes qui pointent vers suda.co.uk avec différents types de valeurs XFN. Rubhub participe aussi à la consolidation d’identité à travers l’usage de liens rel-me - il sait qu’il existe trois autres pages que j’ai déclarées comme étant à moi. Ceci veut dire que tout lien XFN vers n’importe lesquelles de ces trois pages devrait être compté comme un lien vers suda.co.uk.

Graphe XFN

XFN Graph est une application similaire à celle de Many Eyes d’IBM, que je mentionnais dans un article précédent. Vous ensemencez cette application avec une URL et une profondeur. Elle crawlera ensuite l’URL et les liens vers la profondeur spécifiée pour une recherche de données XFN. Ceci vous permet de construire un graphe connecté entre les personnes. A partir de là, vous pouvez facilement inspecter les noeuds et fils pour trouver un chemin entre n’importe quelle paire de personnes.

graphe XFN Twitter

Figure 2 : Graphe XFN des amis de Brian Suda à partir de Twitter.

L’exemple dans la Figure 2 ne va qu’à un niveau de profondeur de 1, mais il est possible de continuer à crawler chacun de ces noeuds et de trouver leurs amis. Avec un niveau de profondeur de 2, il devient possible de chercher les amis d’amis, avec un niveau de 3 vous obtenez les amis d’amis d’amis et ainsi de suite.

Combiner ces données avec de l’information supplémentaire permet des mashups intéressants, vous pourriez par exemple combiner votre dossier d’e-mails envoyés avec votre liste d’amis XFN pour grouper vos amis selon la fréquence à laquelle vous les e-mailez. Vous pourriez aussi utiliser le @nomutilisateur de twitter pour voir quelles sont les personnes qui parlent à qui le plus souvent.

Nuages de tags

Le backnetwork est une brique logicielle pour les conférences et autres rassemblements. Il vous permet de vous ajouter vous-même avec quelques informations personnelles, puis vous pouvez construire calmement vos relations avec les autres participants. Il dispose de beaucoup de fonctionnalités intéressantes, mais celle sur laquelle je me concentrerai est le nuage de tags des relations.

Au fur et à mesure que vous vous connectez à d’autres participants présents, vous les étiquetez avec des valeurs XFN dans le système. Le nuage de relations tague ces valeurs XFN et leur assigne des poids. Un ami est plus grand qu’une connaissance, qui à son tour est plus grande qu’un contact. Si la relation est réciproque, alors la taille est augmentée encore plus. Ceci nous ramène à l’exemple de moi-même et Chris. Je le considère comme un ami, mais ce pourrait être réciproque. Dans cette instance, la taille du nom ne serait pas aussi grande que s’il avait été là. En utilisant ce jumelage rigolo, nous pouvons aussi commencer à évaluer les poids des liens, pas simplement le type.

Le nuage de relation de Brian sur le backnetwork de dconstruct 07

Figure 3 : nuage de relations du backnetwork d.Construct

La Figure 3 montre mon Nuage de Tags de d.Construct 07 - vous pouvez facilement voir à qui je suis connecté et avec quelle force. Les visualisations de type nuage sont populaires pour les tags et les mots, mais elles peuvent être aussi utilisées pour les personnes et la force des connexions. Ceci vous pemet de voir en un coup d’oeil à qui vous êtes le plus connecté. La plupart du temps, les personnes ne sont pas intéressées à la MANIERE exacte dont vous pouvez connaître quelqu’un, mais plutôt à la façon dont la connexion est grande et solide. Si vous voulez être présenté à quelqu’un en particulier, alors vous pouvez voir qui de vos amis a la connexion la plus solide vers cette personne. C’est la route avec le plus de succès.

Construire votre propre spider XFN

Construire votre propre spider n’est probablement pas la chose à conseiller. Ecrire le code, voyager le web, indexer les sites à la recherche de liens … tant que vous y êtes, pourquoi ne pas écrire un moteur de rcherche complet ? Heureusement, vous avez quelques options. Pour ceux qui doivent simplement faire tourner leurs propres applications, vous pourriez louer la donnée et le temps serveur provenant d’Alexa et crawler la donnée pour vous-même, ou vous pourriez utiliser la nouvelle API Google Social Graph.
Ceci vous permet de saisir une ou plusieurs URLs ; elle cherchera alors dans sa propre base de donées Internet les liens et rétroliens à partir de ces URLs qui disposent de liens XFN ou FOAF. J’ai saisi suda.co.uk, mon site personnel et claimid.com/briansuda, un autre site que j’utilise pour OpenID. Les résultats de cette trouvaille sont étonnants - regardez la Figure 4.

Les URLs de Brian connectées dans l'API Google Social

Figure 4 : Photo écran de mes URLs connectées dans l’API Google Open Social

Le service trouve 25 URLs qu’il connaît comme étant aussi à moi, et 4 de plus pour lequel il pense que c’est à moi. Ce service vous permet de consolider votre identité à travers la totalité de l’internet. Il personnifie ce pourquoi l’internet a été conçu, des sites vaguement joints, sans le besoin d’un serveur central où vous saisissez toute votre information. Vous pouvez vivre votre vie aux bords de ce graphe sur des sites web faisant chacun des tâches pour lesquels ils ont été conçus. Puis les services peuvent ensuite rassembler toutes ces données pour produire un profil unique vous concernant.

Non seulement, cela ne fonctionne pas uniquement pour des données vous concernant, mais aussi pour des données sur la manière dont vous êtes en rapport avec vos amis. La fonctionnalité trouvée dans le lien au-dessus permet à n’importe quel nouveau site de réseau social de vous demander une URL quand vous le rejoignez. Il peut ensuite utiliser l’API Google pour recevoir une liste des URLs d’amis que vous avez déclarés ailleurs sur l’internet. Ce nouveau site de réseau social ne vous oblige plus à passer des heures à écrire du code pour accéder aux APIs de différents sites ou de les scraper pour des données ; vous pouvez maintenant demander un service unique qui ait précédemment indexé les sites et relations. Google renvoie les données, en suggérant les URLs potentielles qui correspondent aux membres existants de ce nouveau réseau social et en vous demandant de migrer vos relations avec juste un clic.

Résumé

Comme nous l’avons vu, XFN est un moyen rapide et simple d’exprimer quelques relations basiques entre vous-même et d’autres à travers l’utilisation de pratiques HTML existantes. En balisant explicitement les données, vous donnez plus de sens à votre balisage, qui peut être alors utilisé pour générer de nouvelles visualisations et aussi utilisé pour créer un réseau de connexions pouvant être facilement migré de place en place. Aussi qu’attendez-vous ?

Ressources

Mots-clés : , , , ,

Note : Traduction en cours d’un article de Brian Suda paru chez DevOpera le 21 février dernier. Seul le lien original fait référence. Vous pouvez aider à raffiner cette traduction publiée sous “fair use” en éditant la page-miroir posée sur mon wiki. Merci - xtof.

6 April 2008

Microformats : Combler les Lacunes du HTML

Filed under: microformats, ressources, traduction — Christophe Ducamp @ 7:38

Traduction en cours d’un article paru dans SitePoint - Seul le lien original fait référence

Microformats - Combler les Lacunes du HTML

Dans cette référence, les sujets portent sur les standards (ou pour utiliser les termes du W3C, les “recommandations”) qui s’appliquent aux éléments et attributs du HTML/XHTML. Si vous les avez tous lus (dans ce cas, vous méritez une étoile d’or), il pourrait vous arriver de temps à autre de vous dire, “bon c’est bien fichu, mais comment puis-je baliser une adresse, comme celle où j’habite ?”. Ou peut-être que vous vous êtes posé la question “Comment devrai-je baliser quelque chose comme la date d’un évènement ?”. Si vous avez réfléchi à cela, alors vous avez déjà fait progresser mon scénario d’application des microformats. Mais qu’est-ce que les microformats et pourquoi devriez-vous vous y intéresser ?

Dans les saveurs actuelles du HTML et du XHTML, il existe un bon nombre d’éléments qui, dans l’environnement actuel, apparaissent comme étant complètement hors de propos. Par exemple, quand vous vous retrouvez à utiliser les éléments xmp ou tt. Je ne l’ai jamais fait. Également s’agissant des éléments semblant superflus et ayant été forgés par quelques scientifiques pour qui leur utilisation était limité en pratique, il semble vraiment qu’il y ait quelques omissions dans les spécifications (et par specs, je veux dire bien sûr “recommandations” - néanmoins la plupart des personnes normales font référence à elles en tant que specs !). L’exemple de l’adresse que j’ai éludé au-dessus est l’une de ces omissions.

Maintenant, pour ceux qui prêtent encore attention - et pour ceux qui ont dévoré les contenus de cette référence du début à la fin - on peut tout de même progresser à ce stade : “Ah, mais il existe un élément pour les adresses. Il s’appelle ‘address‘.” Mais hélas, vous faites fausse route. Un rapide retour à la référence pour address révélera que cet élément n’est pas utilisé pour baliser un endroit physique, mais qu’il est en fait réservé pour identifier la personne à contacter concernant une page Web et que par conséquent, il peut inclure une adresse e-mail ou un numéro de téléphone ou quelque chose de cet acabit. Si l’élément address est utilisé pour baliser un endroit (numéro, rue, localité, etc), il est en fait mal utilisé. Mais alors que devriez-vous faire ?

Entrez dans les Microformats.

L’idée derrière les Microformats est de combler ces lacunes existantes dans les standards actuels, tout en utilisant - et ceci est assez difficile - uniquement du HTML/XHTML standard et valide. Comment cela peut-il être possible ? En ajoutant à ces éléments standards un ensemble défini de valeurs d’attribut qui sont basées sur un standard pré-existant. Ainsi, si vous voulez par exemple baliser les informations de contact de quelqu’un, vous pouvez utiliser hCard, le microformat conçu à cette effet, qui est fondé sur le format plus ancien et standardisé de la vcard (l’usage de hCard sera entièrement décrit d’ici peu). Les différentes parties des informations de contact - nom de famille, prénom, localité, rue, etc. - sont toutes identifiées par un attribut de classe qui peut être appliqué à n’importe quel élément HTML ; vous pouvez aussi faire usage de ces noms de classe pour modifier le style.

Ce n’est pas dévoiler un secret très bien conservé que d’avancer que le mécanisme du Consortium du World Wide Web Consortium (W3C) peut vraiment s’enrayer, ce qui est très frustrant pour des développeurs Web, programmeurs et designers du monde entier. Néanmoins, avec les microformats c’est une autre histoire. Bien entendu, les ’standards’ pour les Microformats sont également révisés et validés par les pairs, mais cela se produit bien plus rapidement. Dans l’intervalle de temps durant lequel CSS3 a été discuté et mis à disposition par le W3C, pour ne garder à cette heure qu’une recommandation dans les travaux, la totalité du concept des microformats était né, et plusieurs standards définis, avec bien plus de microformats en discussion et approchant de leur version finale.

Pour le dire vite, si un mécanisme pour marquer le HTML pour un objectif spécifique doit être accepté (et, on l’espère, utilisé) comme un microformat, il a besoin de satisfaire tous ces points :

  • Le Microformat doit résoudre un problème (et non pas créer quelque schéma fantaisiste pour baliser quelque chose qui existe déjà ou ne le garantit vraiment pas).
  • Il devrait démarrer aussi simplement que possible.
  • Il devrait être conçu d’abord pour les humains, ensuite pour les machines.
  • Il devrait réutiliser des standards existants et largement adoptés (par ex. IETF).
  • Pour finir, il devrait encourager des développements/services décentralisés (par exemple les services d’agrégation).

Pour vous donner une idée sur la manière dont les microformats peuvent offrir un avantage à l’utilisateur, prenons un exemple du vrai monde chez Google.

Google Maps et hCard

Quand Google a ajouté du contenu microformaté à ses résultats de recherche, ç’aurait été tout sauf invisible pour la plupart des utilisateurs réguliers que quelque chose de nouveau ait été ajouté. Cela a probablement pris très peu de temps à leurs développeurs d’ajouter les attributs de classe supplémentaires aux résultats de recherche, aussi cela n’aura pas été un effort inutile. Mais pour bon nombre de personnes - moi y compris - ajouter le microformat hCard a offert une excellente nouvelle fonctionnalité. Pour que cette fonctionnalité opère, cela requiert l’ajout d’une barre d’outils dans le navigateur qui peut alors détecter la présence de microformats sur une page. Personnellement j’ai essayé l’extension Tails (pour Firefox) et aussi l’extension Operator (aussi pour Firefox). En supposant que vous ayez ajouté ces barres d’outils, voici ce à quoi vous pouvez vous attendre au moment d’utiliser Google Maps pour chercher des restaurants locaux avec l’extension Operator :

  • Recherche Google Maps pour une Maison du Curry dans votre quartier
  • Les résultats apparaissent sur la carte avec des pointeurs que vous pouvez cliquer et aussi une liste en bas sur le côté gauche. (Normalement c’est là où votre interaction s’arrête et vous pouvez produire une note des détails du restaurant avant de téléphoner pour réserver une table.)
  • Operator vous notifie de la présence de Microformats en affichant l’une des icônes de la barre d’outils (qui était précédemment grisée)
  • Le fait de cliquer sur l’icône mise en valeur révèle la liste des Maisons du Curry trouvées, et vous pouvez ensuite exporter chacune d’elles individuellement - ou toutes en une fois - vers le carnet d’adresses de votre ordinateur.
  • Si votre téléphone mobile est couplé à votre ordinateur via Bluetooth – quelque chose que beaucoup de gens font pour synchroniser leurs contacts et agendas - vous pouvez alors mettre rapidement tous ces contacts sur votre téléphone mobile.

Il y a peu de temps, j’ai fait tout ce qui est décrit au-dessus à des fins de démonstration (une démonstration en ligne est disponible sur http://www.youtube.com/watch?v=Kjp4BaJOd0M), et il était possible de chercher les établissements et d’obtenir tous leurs numéros de téléphone et adresses sur mon téléphone en moins de 60 secondes. Je ne serai plus jamais à court de Maison du Curry si je devais me retrouver dans un cas de besoin urgent de Poulet Tikka Masal sans accès à un annuaire téléphonique ou à l’Internet, je peux d’ailleurs remercier les microformats d’avoir rendu cela possible.

Un autre outil qui vaut la peine d’être mentionné à ce stade est Optimus (http://microformatique.com/optimus/) qui n’est pas une extension navigateur mais un service basé sur le Web. Il fournit un mécanisme pour transformer le contenu sur une page qui a été balisé sous un Microformat vers un autre format, actuellement XML ou JSON. Ce serait un job supplémentaire d’ajouter un lien vers votre site Web dans une section qui est utilisé sur tout le site (par exemple un fichier inclus dans l’en-tête ou le pied de page) et de ce fait fournir des formats alternatifs pour tous vos contenus microformatés. Comme le dit la ligne savoureuse du site Web : “Maintenant votre site Web pourrait vraiment être votre API avec la beauté des microformats et la puissance d’Optimus.”

Microformats – Constamment en évolution

Du fait de la nature d’émergence rapide des Microformats (rapidité relative comparée au W3C, au moins !), il n’est pas possible de décrire tous les microformats disponibles. Le temps que ceci s’imprime, la liste aura probablement évoluée. Néanmoins cela vaut la peine de jeter un oeil sur quelques microformats spécifiques et sans surprise il s’avère que ce sont ceux qui existent depuis le plus longtemps du fait qu’ils aient été les premiers à être définis et qu’ils ont été les plus utiles pour l’implémentation. Pour une liste complète des microformats, allez sur le http://microformats.org/wiki. Si vous souhaitez vous impliquer dans la discussion et aider à former de nouveaux microformats, vous pouvez rejoindre la liste de discussion sur http://microformateurs.org/discussion/.

Les Microformats décrits par cette référence sont :

Pour démarrer, nous jetterons un oeil à la hCard – l’un des meilleurs exemples de Microformats paru du fait de son potentiel d’usages.

Dans cette partie :

  • hCalendar
    fournit un mécanisme pour baliser les évènements (date, heure, lieu, etc.)
  • hCard
    fournit un mécanisme pour baliser les informations de contact
  • hreview
    standardise une méthode pour les revues critiques de produit, service
  • XFN
    identifie la relation sociale des liens entre les pages Web
  • rel- Microformats
    fournit une relation supplémentaire concernant la destination du lien

22 January 2008

Microformat hAudio…

Filed under: ressources — Christophe Ducamp @ 0:19

…ou comment donner du sens à vos playlists-HTML-audio partagées sur le Web ?

Appréciant depuis toujours divers styles de musique, j‘aimerais un jour m’essayer à donner du sens à quelques futures playlists audio qui berceront mes nuits durant les futures traductions à l’écran.

Depuis que Tantek a présenté une superbe démo de hAudio à l’OpenMedia Web, je piaffais d’envie de m’essayer à partager une première playlist vivante.

Aussi, en ce dimanche matin, je me jette pour tenter de comprendre et appliquer quelques instructions fraîchement traduites sur le wiki des microformats afin d’amorcer ce qui pourrait être une première liste haudio mise à jour au fil de l’eau.

Avertissement : Ce document est destiné au seul usage de recherche pédagogique et de démonstration. Sa publication s’inscrit naturellement sous Fair-Use pour inviter les auteurs et labels à publier des contenus mieux structurés. Tous les contenus audio proposés demeurent sous Copyright ECM Records GmbH.

En hAudio, ceci donnerait pour un futur exemple dans la jungle sorti droit de la discothèque :

keith jarrett - live at montreux

My Foolish Heart - Live at Montreux

  • Un album interprété par Keith Jarrett, Gary Peacock et Jack Dejohnette
  • Enregistré le 22 juillet 2001 à l’Auditorium Stravinsky (Montreux-Suisse), le disque est sorti le 8 octobre 2007 sous le label ECM.
  • Echantillon, Achat chez Amazon
  • Catégorie :
  • Durée totale : 50 minutes et 33 secondes
  • Prix : €20.00
  • Pistes sur le CD-1 :
    • 1. Four (9:09) - Compositeur Miles Davis.
    • 2. My Foolish Heart (12:25)
    • 3. Oleo (6:37) - Compositeur Sonny Rollins.
    • 4. What’s new (7:54) - Johny Burke - Robert Haggard
    • 5. The Song is You (7:43) - Oscar Hammerstein II - Jerome Kern
    • 6. What’s new (6:40) - Andy Razaf - Harry Brooks - Thomas Fats Waller

Pour aller plus loin :

Thomas Yadan écrivait :

L’un des plus grands pianistes de jazz au prestigieux festival de Montreux, l’affiche est belle. Et le résultat exaltant. Alors on se réjouit de la sortie de ce double album ‘My Foolish Heart’ enregistré à l’auditorium Stravinsky le 22 juillet 2001. Comme à son habitude, le pianiste ne lésine pas sur la durée du concert car le temps réel est un concept, qui bien heureusement pour le spectateur, lui échappe complètement. Si le trio, formé depuis 1983 avec Gary Peacock à la contrebasse et Jack Dejohnette (mention spéciale) à la batterie, excelle dans le be-bop, utilisant l’ancien au profit du moderne, il change d’optique aujourd’hui, avec cet album. Le pianiste, comme à son habitude, aime surprendre. Revisitant des standards récents de Miles, Monk ou Rollins, le concert se transforme en hommage explicite au ragtime et au piano stride.

Ainsi, on pourra deviner l’âme enjouée de Fats Waller et l’originalité de Scott Joplin, sans oublier évidement la touche si spécifique de Keith Jarrett. Si ‘Ain’t Misbehavin’ ou le légendaire ‘Honeysuckle Rose’ sont des productions authentiques de piano stride, les morceaux ‘Straight, no chaser’ ou ‘Oléo’ sont décisifs par leur générosité, offrant au pianiste des possibilités de variations insoupçonnables. On pourra tout de même sentir un effluve plus classique avec ‘Fives Brothers’. Quand à l’investissement des musiciens, elle demeure incontestable au regard de l’entente quasi-fusionnelle du trio. Un disque incontournable qui démontre encore une fois le talent et les ressources infinies de Keith Jarrett et de ses acolytes.

Code :

Le code ci-dessous comprend des sauts de ligne et quelques troncages pour des besoins de lisibilité. Vous pouvez y accéder aussi directement sur la page hAudio éditable posée sur mon wiki-personnel.


<div class="haudio" id="haudio-myfoolishheart">

<img class="photo" style="float:right;padding:0.5em;"
src="http://image.org/exemple-pochette.jpg"
alt="keith jarrett - live at montreux" />

<h2 class="album">My Foolish Heart - Live at Montreux</h2>
<ul>
<li>Un album interprété par 
<span class="contributor">
 <span class="vcard">
 <span class="fn org">
 <a class="url"
href="http://fr.wikipedia.org/wiki/Keith_Jarrett_%28musicien%29">
Keith Jarrett</a>, 
Gary Peacock et Jack Dejohnette</span>
</span>
</span>
</li>

<li>
Enregistré le
<abbr title="2001-07-22">22 juillet 2001</abbr> à l'
<span class="vcard">
<span class="fn org">Auditorium Stravinsky</span>
(<span class="locality">Montreux</span> -
<span class="country-name">Suisse</span>)
</span>,
le disque est sorti le
<abbr class="published" title="2007-10-08">
8 octobre 2007</abbr>
sous le label
<span class="vcard">
<a class="fn url org"
href="http://www.ecmrecords.com">ECM</a>
</span>.
</li>

<li>
<a rel="enclosure"
href="http://www.elanceur.org/Musique/KeithJarrett/Four.mp3">
Echantillon</a>,
<a rel="payment" href="http://tinyurl.com/3599wp">
Achat chez Amazon</a>
</li>

<li>
Catégorie :
<a class="category" rel="tag"
href=
"http://fr.wikipedia.org/wiki/Portail:Jazz">
Jazz</a>
</li>

<li>
Durée totale :
<abbr class="duration" title="PT50M33S">50 minutes
et 33 secondes</abbr>
</li>

<li>
Prix : <span class="price">
<abbr class="currency"
title="Euros 20.00">€20.00</abbr>
</span>
</li>

<li>Pistes sur le CD-1 :
<ul>
<li class="item">
<span class="position">1</span>.
<a rel="enclosure"
href=
"http://www.elanceur.org/Musique/KeithJarrett/Four.mp3"
class="title">Four</a>
(<abbr class="duration"
title="PT9M09S">9:09</abbr>)
- Compositeur <span class="contributor">
Miles Davis</span>.
</li>

<li class="item">
<span class="position">2</span>.
<a rel="enclosure" class="title" href=
"http://www.elanceur.org/Musique/KeithJarrett/MyFoolishHeart.mp3"
>My Foolish Heart</a>
(<abbr class="duration" title="PT12M25S">12:25</abbr>)
</li>

<li class="item">
<span class="position">3</span>.
<a rel="enclosure" class="title" href=
"http://www.elanceur.org/Musique/KeithJarrett/Oleo.mp3"
>Oleo</a>
(<abbr class="duration" title="PT6M37S">6:37</abbr>)
- Compositeur
<span class="contributor">Sonny Rollins</span>.
</li>

<li class="item">
<span class="position">4</span>.
<span class="title">What's new</span>
(<abbr class="duration" title="PT7M54S">7:54</abbr>)
- <span class="contributor">Johny Burke</span>
- <span class="contributor">Robert Haggard</span>
</li>

<li class="item">
<span class="position">5</span>.
<span class="title">The Song is You</span>
(<abbr class="duration" title="PT7M43S">7:43</abbr>)
- <span class="contributor">Oscar Hammerstein II</span>
- <span class="contributor">Jerome Kern</span>
</li>

<li class="item">
<span class="position">6</span>.
<span class="title">What's new</span>
(<abbr class="duration" title="PT6M40S">6:40</abbr>)
- <span class="contributor">Andy Razaf</span>
- <span class="contributor">Harry Brooks</span>
- <span class="contributor">Thomas Fats Waller</span>
</li>
</ul>
</li>
</ul>

<h2>Pour aller plus loin :</h2>
<p><cite class="vcard"><span class="fn">
Thomas Yadan</span></cite>
<a href="http://www.evene.fr/culture/agenda/keith-jarrett-13800.php?critiques">
écrivait</a> :</p>
<blockquote class="description">
<p>
L’un des plus grands pianistes de jazz au prestigieux festival de Montreux, l’affiche
est belle. Et le résultat exaltant.  Alors on se réjouit de la sortie de ce double album
‘My Foolish Heart’ enregistré à l’auditorium Stravinsky le 22 juillet 2001.
Comme à son habitude, le pianiste ne lésine pas sur la durée du concert
car le temps réel est un concept, qui bien heureusement pour le spectateur,
lui échappe complètement. Si le trio, formé depuis 1983 avec Gary Peacock
à la contrebasse et Jack Dejohnette (mention spéciale) à la batterie,
excelle dans le be-bop, utilisant l’ancien au profit du moderne,
il change d'optique aujourd’hui, avec cet album. Le pianiste, comme à son habitude,
aime surprendre. Revisitant des standards récents de Miles, Monk ou Rollins,
le concert se transforme en hommage explicite au ragtime et au piano stride.
</p>

<p>
Ainsi, on pourra deviner l’âme enjouée de Fats Waller et l’originalité de Scott Joplin,
sans oublier évidement la touche si spécifique de Keith Jarrett. Si ‘Ain’t Misbehavin’ ou
le légendaire ‘Honeysuckle Rose’ sont des productions authentiques de piano stride,
les morceaux ‘Straight, no chaser’ ou ‘<a href="http://www.elanceur.org/Musique/KeithJarrett/Oleo.mp3">Oléo</a>’
sont décisifs par leur générosité, offrant au pianiste des possibilités de variations
insoupçonnables. On pourra tout de même sentir un effluve plus classique avec
‘Fives Brothers’. Quand à l’investissement des musiciens,
elle demeure incontestable au regard de l’entente quasi-fusionnelle du trio.
Un disque incontournable qui démontre encore une fois le talent et les ressources
infinies de Keith Jarrett et de ses acolytes.
</p>

</blockquote>

</div>
</div>

6 January 2008

Tantek Çelik : “Construire du contenu textuel ouvert sur le HTML”

Filed under: microformats, microformats.org, ressources, traduction — Christophe Ducamp @ 21:56

Le Web est de loin le médium le plus victorieux dans l’histoire pour la publication et le partage de contenu ouvert. Concentrer les efforts pour promouvoir et permettre le contenu ouvert sur le Web d’abord et avant tout (plutôt que disons, des entrepôts de données propriétaires et des bases de données institutionnelles) a l’effet le plus fort pour habiliter le contenu ouvert en général.

Le contenu textuel sur le Web est dominé par le HTML (y compris le XHTML bien sûr) du fait de sa diffusion large et sa facilité de publication. Plus nous sommes capables d’utiliser le HTML comme un transporteur commun de morceaux d’informations de plus haute fidélité, plus nous hissons et enrichissons la publication et le partage de contenu textuel.

De ce fait, les microformats sont développés en ligne avec les pratiques et principes du “bon vieux pur HTML sémantique” (), ce qui veut dire, comme des extensions sémantiques valides vers le HTML. Le HTML sémantique en lui-même permet le partage de contenu ouvert avec des titres, des paragraphes et listes, etc. Les microformats se construisent sur cette fondation, plutôt qu’en réinventant (par ex. réutilise le HTML pour les listes et les listes imbriquées pour les structures, plutôt que d’inventer de nouvelles balises ou vocabulaire) et ne s’étendent seulement que pour de la sémantique communément publiée sur le HTML, comme celle de , des , des , du , etc.

Ces extensions peuvent être utilisées pour publier des documents contenant juste un type d’information pour une consommation par des applications spécifiques-par-domaine (par exemple une liste de contacts pour les carnets d’adresses, ou une liste d’évènements pour les outils de gestion d’agenda), ou beaucoup de types inter-mixés et imbriqués, embarqués dans un plus grand document qui les relie tous ensemble dans un contexte ayant du sens comme dans le cas d’un curriculum-vitae, signifiant que cet ensemble serait perdu si chaque type de donnée avait été isolé, retiré de son contexte et publié dans son propre silo de format pour un objectif spécifique.

Que ce soit de simples assemblages ou des documents composés, en construisant sur le HTML, tous ces usages fonctionnent bien non seulement pour eux-mêmes, mais embarqués et mélangés avec du contenu web existant, d’une façon qui soit bien comprise par les auteurs web, tout comme par les navigateurs et moteurs de recherche. Ceci contraste profondément avec les . Pour finir, c’est cette étendue très large, pour le contenu existant, les auteurs, les applications, les services de recherche et une variété de terminaux, qui rend le contenu textuel construit sur le HTML même plus ouvert vu d’une perspective pratique.

Traduction en cours. Source microformats.org - Seul le lien original fait référence. Vous pouvez aider à raffiner le contenu en éditant le code posé sur la page-miroir de mon wiki de travail. Merci.- xtof

Next Page »

Powered by WordPress