microformats-2-fr: Difference between revisions

From Microformats Wiki
Jump to navigation Jump to search
m ([fr: →‎UTILISATEURS: 1st draft translation])
([fr: translation - content updated - sync'd with original - to be studied and completed with french examples])
Line 520: Line 520:
# Quelques règles spécifiques à certains formats spécifiques (optimisations marquage/contenu)
# Quelques règles spécifiques à certains formats spécifiques (optimisations marquage/contenu)


Ceci voulait dire qu’à chaque fois qu’un nouveau microformat est « drafté »/spécifié/adopté, les parseurs ont besoin d’être mis à jour pour le gérer correctement, à un minimum pour les parser quand ils sont à l’intérieur d’autres microformats et évitent des propriétés implicites errantes de l’un à l’autre (confinement, problème [[mfo-fr|mfo]]).
Ceci voulait dire qu’à chaque fois qu’un nouveau microformat est « drafté »/spécifié/adopté, les parseurs ont besoin d’être mis à jour pour le gérer correctement, à un minimum pour les parser quand ils sont à l’intérieur d’autres microformats et évitent des propriétés implicites errantes de l’un à l’autre (confinement, problème [[mfo-fr|mfo]]).


==== conventions de dénomination pour analyse générique ====
==== conventions de dénomination pour analyse générique ====

Revision as of 07:34, 13 June 2012

<entry-title>microformats 2.0</entry-title>

Bienvenue sur le développement en cours des microformats 2.0.

Résumé

Microformats 2.0 améliore la facilité d'utilisation et d'exécution tant pour les auteurs (éditeurs) que les développeurs (les éxécuteurs d'analyses), avec les simplifications suivantes :

  1. quels noms de classes sont utilisés pour les microformats (ceux qui démarrent avec 'h-' 'p-' 'u-' 'dt-', 'e-')
  2. ensembles plats de propriétés pour tous les microformats (la data hiérarchique utilise des microformats imbriqués) qui sont tous optionnels et pluriels (les applications ayant besoin d'une sémantique unique peuvent utiliser la première instance)
  3. vocabulaires indépendants de la syntaxe - les deux précédentes simplifications permettent une analyse générique (par conséquent une sortie automatique JSON/XML/RDF) et un développement de syntaxe indépendant des vocabulaires
  4. marquage plus simple pour les cas-d'usages communs - les cas-d'usages commun ont été même encore plus simplifiés avec des règles génériques d'analyse et quelques propriétés génériques implicites : name, url, photo.

exemples simples de microformats

Voici quelques exemples simples de microformats 2.0 qui démontrent la plupart des changements (les exemples analysés JSON sont une expérience draft - feedback bienvenu !)

Simple référence à une personne :

<span class="h-card">Frances Berriman</span>

JSON analysé :

[{ 
  "type": ["h-card"],
  "properties": {
    "name": ["Frances Berriman"] 
  }
}]

Simple référence à une personne hyperliée

<a class="h-card" href="http://benward.me">Ben Ward</a>

JSON analysé :

[{ 
  "type": ["h-card"],
  "properties": {
    "name": ["Ben Ward"],
    "url": ["http://benward.me"]
  }
}]

Simple image de personne hyperliée

<a class="h-card" href="http://rohit.khare.org/">
 <img alt="Rohit Khare"
      src="https://s3.amazonaws.com/twitter_production/profile_images/53307499/180px-Rohit-sq_bigger.jpg" />
</a>

JSON analysé :

[{ 
  "type": ["h-card"],
  "properties": {
    "name": ["Rohit Khare"],
    "url": ["http://rohit.khare.org"],
    "photo": ["https://s3.amazonaws.com/twitter_production/profile_images/53307499/180px-Rohit-sq_bigger.jpg"]
  }
}]

Plus de détails sur la façon dont les cas simples fonctionnent dans microformats-2-implied-properties.

Notes :

  1. "type" utilise la totalité du nom de classe racine du microformat pour une identification cohérente.
  2. toutes les propriétés sont optionnelles et syntaxiquement plurielles avec des valeurs analysées fournies dans l'ordre du document ; les microformats spécifiques (et applications en découlant) peuvent mettre en oeuvre une sémantique spécifique/singulière pour la première valeur d'une propriété.
  3. les propriétés pourraient être explicitement liées en tant qu'URIs en utilisant la proposition d'attribut html5-profile, ou peut-être à la place un attribut 'vocab' (plus intuitif que le 'profile' surencombré).

vocabulaires v2

Statut : draft. SVP critique et feedback bienvenus sur IRC.

h-adr

profile/itemtype: http://microformats.org/profile/h-adr

propriétés :

  • p-post-office-box
  • p-extended-address
  • p-street-address
  • p-locality
  • p-region
  • p-postal-code
  • p-country-name
  • p-label - nouveau dans vCard4 (RFC6350)
  • p-geo (ou u-geo avec un RFC 5870 geo: URL) - nouveau dans vCard4 (RFC6350)
  • p-latitude - nouveau dans vCard4 (RFC6350 à partir de RFC 5870)
  • p-longitude - nouveau dans vCard4 (RFC6350 à partir de RFC 5870)
  • p-altitude - nouveau dans vCard4 (RFC6350 à partir de RFC 5870)

Pour une rétro-compatibilité, les parseurs de microformats 2 DEVRAIENT détecter le nom de classe racine et les noms de propriétés suivants. Un parseur microformats 2 peut utiliser les parseurs microformats existants pour extraire ces propriétés. Si un "h-adr" est trouvé, ne pas chercher un "adr" sur le même élément. nom de classe racine compatible :

  • adr

propriétés : (parsée comme p- plein texte à moins qu'autre chose ne soit spécifié)

  • post-office-box
  • extended-address
  • street-address
  • locality
  • region
  • postal-code
  • country-name


h-card

profile/itemtype : http://microformats.org/profile/h-card

propriétés  :

  • p-name
  • p-honorific-prefix
  • p-given-name
  • p-additional-name
  • p-family-name
  • p-honorific-suffix
  • p-nickname
  • u-email
  • u-logo
  • u-photo
  • u-url
  • p-category
  • p-adr
  • p-post-office-box
  • p-extended-address
  • p-street-address
  • p-locality
  • p-region
  • p-postal-code
  • p-country-name
  • p-label
  • p-geo ou u-geo avec un RFC 5870 geo : URL, nouveau dans vCard4 (RFC6350)
  • p-latitude
  • p-longitude
  • p-altitude - nouveau dans vCard4 (RFC6350 à partir de RFC 5870)
  • p-tel
  • p-note
  • dt-bday
  • p-org
  • p-organization-name
  • p-organization-unit
  • u-impp per RFC 4770, new in vCard4 (RFC6350)
  • p-sex nouveau dans vCard4 (RFC6350)
  • p-gender-identity nouveau dans vCard4 (RFC6350)
  • dt-anniversary nouveau dans vCard4 (RFC6350)
  • ...

Pour une rétro-compatibilité, les parseurs de microformats 2 DEVRAIENT détecter le nom de classe racine et les noms de propriétés. Un parseur microformats 2 peut utiliser les parseurs microformats existants pour extraire ces propriétés. Si une "h-card" est trouvée, ne pas chercher une "vcard" sur le même élément. nom de classe racine compatible :

  • vcard

properties: (parsed as p- plein texte à moins qu'autre chose ne soit spécifié)

  • fn - parser comme p-name
  • honorific-prefix
  • given-name
  • additional-name
  • family-name
  • honorific-suffix
  • nickname
  • email - parser comme u-
  • logo - parser comme u-
  • photo - parser comme u-
  • url - parser comme u-
  • category
  • adr - parser comme p-adr h-adr incluant la racine compat adr
  • extended-address
  • street-address
  • locality
  • region
  • postal-code
  • country-name
  • label
  • geo - parser sous p-geo h-geo incluant la racine compat geo
  • latitude
  • longitude
  • tel
  • note
  • bday - parse as dt-
  • org
  • organization-name
  • organization-unit
  • ...

Note : L'usage de 'value' dans 'tel' devrait être automatiquement géré par le support du modèle-classe-value. Et à cette heure, la sous-propriété 'type' de 'tel' est abandonnée/ignorée. S'il y a un besoin documenté démontré pour des types de tel supplémentaires (par ex. fax), nous pouvons introduire si besoin de nouvelles propriétés plates (par ex. p-tel-fax).

h-entry

profile/itemtype : http://microformats.org/profile/h-entry

propriétés :

  • p-name
  • p-entry-summary
  • e-entry-content
  • dt-published
  • dt-updated
  • p-author
  • p-category
  • u-url
  • u-uid
  • p-geo
  • p-latitude
  • p-longitude

Pour une rétro-compatibilité, les parseurs de microformats 2 DEVRAIENT détecter le nom de classe racine et les noms de propriétés. Un parseur microformats 2 peut utiliser les parseurs microformats existants pour extraire ces propriétés. Si un "h-entry" est trouvé, ne pas chercher un "hentry" sur le même élément.

nom de classe racine compatible :

  • hentry

properties: (parsed as p- plein texte à moins qu'autre chose ne soit spécifié)

  • entry-title - parser sous p-name
  • entry-summary
  • entry-content
  • published - parser sous dt-
  • updated - parser sous dt-
  • author
  • category
  • geo - parser sous p-geo h-geo incluant la racine compat geo
  • latitude
  • longitude
  • ...


h-event

profile/itemtype : http://microformats.org/profile/h-event

propriétés :

  • p-name
  • dt-start
  • dt-end
  • p-description
  • u-url
  • p-category
  • p-location
  • p-geo
  • p-latitude
  • p-longitude
  • ...

Pour une rétro-compatibilité, les parseurs de microformats 2 DEVRAIENT détecter le nom de classe racine et les noms de propriétés. Un parseur microformats 2 peut utiliser les parseurs microformats existants pour extraire ces propriétés. Si un "h-event" est trouvé, ne pas chercher un "vevent" sur le même élément. nom de classe racine compatible :

  • vevent

propriétés : (parsed as p- plein texte à moins qu'autre chose ne soit spécifié)

  • summary - parse as p-name
  • dtstart - parse as dt-start
  • dtend - parse as dt-end
  • description
  • url - parse as u-
  • category
  • location
  • geo - parse as p-geo h-geo including compat root geo
  • latitude
  • longitude
  • ...


h-geo

profile/itemtype: http://microformats.org/profile/h-geo

properties:

  • p-latitude
  • p-longitude
  • p-altitude - new in vCard4 (RFC6350 from RFC 5870)

Pour une rétro-compatibilité, les parseurs de microformats 2 DEVRAIENT détecter le nom de classe racine et les noms de propriétés. Un parseur microformats 2 peut utiliser les parseurs microformats existants pour extraire ces propriétés. Si un "h-geo" est trouvé, ne pas chercher un "geo" sur le même élément.

  • geo

propriétés : (parsé sous p- plein texte à moins qu'autre chose ne soit spécifié)

  • latitude
  • longitude


v2 notes vocab

Notes :

  • Tous les vocabulaires v2 sont définis comme des listes à plat de propriétés d'un objet/item, et par conséquent, peuvent être utilisées dans la syntaxe microformats-2 comme présenté, ou dans items microdata, ou RDFa. Les préfixes de parsage de propriétés microformats-2 "p-", "u-", "dt-", "e-" sont omis au moment d'utiliser les propriétés définis dans l'itemprop de microdata et propriété RDFa car ces syntaxes ont leurs propres règles de parsage spécifiques à l'élément.
  • Les URLs Profile sont fournies pour utilisation avec l'attribut de profil HTML4, l'itemtype microdata, et les attributs vocab/typeof de RDFa (bien que ce dernier exige de trancher le segment derrière du profil pour l'attribut typeof, et laissant le reste en vocab).

v2 vocab to-do

à faire :

  • actualiser les documents profile sur http://microformats.org/profile/h-* URLs mentionnés ci-dessus.
  • Fournir tout langage nécessaire spécifique au microdata (par ex être compréhensible en comparaison pour le vocabulaire microdata échantillon vCard4/hCard1. Fournir aussi tout langage-spécifique-RDFa comme requis. A la fois et de préférence dans un vocabulaire-générique-indépendant.

combinaison de microformats

Parce que microformats 2 utilise de simples ensembles plats de propriétés pour chaque microformat, plusieurs microformats sont combinés pour indiquer de la structure additionnelle.

h-event location h-card

Les événements ont généralement une information sur le lieu avec de la structure additionnelle, comme l'information d'adresse. Par exemple :

<div class="h-event">
  <a class="p-name u-url" href="http://indiewebcamp.com/2012">
    IndieWebCamp 2012
  </a>
  from <time class="dt-start">2012-06-30</time> 
  to <time class="dt-end">2012-07-01</time> at 
  <span class="p-location h-card">
    <a class="p-name u-url" href="http://urbanairship.com/">
      Urban Airship
    </a>, 
    <span class="p-street-address">334 NW 11th Ave.</span>, 
    <span class="p-locality">Portland</span>, 
    <abbr class="p-region" title="Oregon">OR</abbr>
  </span>
</div>

La h-card imbriquée utilisée pour structurer le p-location du h-event est representée comme une valeur structurée pour "location" dans le JSON, qui a une clé additionnelle, "value" qui représente la version plein texte analysée à partir du p-location.

JSON analysé :

[{ 
  "type": ["h-event"],
  "properties": {
    "name": ["IndieWebCamp 2012"],
    "url": ["http://indiewebcamp.com/2012"],
    "start": ["2012-06-30"],
    "end": ["2012-07-01"],
    "location": [{
      "value": "Urban Airship, 334 NW 11th Ave., Portland, OR",
      "type": ["h-card"],
      "properties": {
        "name": ["Urban Airship"],
        "url": ["http://urbanairship.com/"],
        "street-address": ["334 NW 11th Ave."],
        "locality": ["Portland"],
        "region": ["Oregon"]
      }
    }]
  }
}]

Notes :

  • La valeur 'location' renvoie le texte visible de son élément, y compris les espaces et la ponctuation, tout comme l'abréviation de l'état 'OR'. Les valeurs de propriété 'h-card' sont les seules qui sont marquées, et par conséquent contiennent des valeurs de structure sans ponctuation supplémentaire, et l'état prend la forme étendue à partir de l'attribut title de son élément <abbr>.

À Propos de ce Brainstorm

Ce brainstorm est actuellement écrit en format narratif/exploratoire, ce qui veut dire, remercier le succès rencontré par les microformats, pourquoi c'est ainsi, et puis une promenade à travers les problématiques connues des microformats en général associée à l'itération de chemins pour résoudre les dites problématiques, pour finir en guise de conclusion avec le design actuel microformats 2.0.

Les propositions se construisent les unes sur les autres pour aboutir à une solution qui résout la vaste majorité des problématiques générales. Les modifications proposées méritent une incrémentation de version majeure, d'où microformats 2.0.

Ce style mathématique de preuve/dérivation est utilisé pour encourager explicitement la compréhension (et la double-vérification) des étapes rationnelles dans le développement de microformats 2.0. Les raisons sont documentées, parfois associées à des alternatives envisagées (et les raisons de rejet de ces alternatives).

Quand le brainstorm microformats 2.0 aura suffisamment évolué pour démontrer quelque degré de stabilité, d'utilisabilité, et de capacité à être implémenté, il sera ré-écrit dans un style de spécification plus déclaratif, et cette dérivation/narration sera archivé vers une page de développement à des fins historiques.

Tantek

Origines

2004 : tout début février les microformats ont été présentés en tant que concept à eTech, et en septembre hCard et hCalendar ont été proposés au FOO Camp.

2010 :

  • XFN -> API du Graphe Social -> Web comme un Réseau Social / Carnet d'Adresses

Résolution de Problématiques

AUTEURS et ÉDITEURS

Les auteurs et éditeurs sont peut-être la circonscription la plus importante dans la communauté des microformats. Il sont bien plus nombreux que les développeurs, programmeurs, parseurs, etc. et ce sont eux qui ont résolu le problème de la poule et de l'oeuf en publiant des microformats même avant que les outils ne soient disponibles pour les consommer.

Par conséquent, nous devons en priorité résoudre les problèmes généraux des auteurs/éditeurs avec les microformats.

pouvons-nous faire le cas le plus simple encore plus simple

Problématique : How can we make it easier for authors to publish microformats?

Actuellement la hCard la plus simple :

<span class="vcard">
  <span class="fn">
    Chris Messina
  </span>
</span>

requiert 2 éléments (imbriqués, avec peut-être au moins un déjà pré-existant) et 2 noms de classes.

Les auteurs et designers web sont habitués à la simplicité de la plupart des balises HTML, par ex pour marquer un en-tête :

<h1>Chris Messina</h1>

cela requiert 1 seul élément.

Jeffrey Zeldman relevait cette complexité incrémentale apparente (2 éléments vs 1) durant un atelier microformats en 2009 à NYC.

How can we make microformats just as easy?

Proposal: allow root class name only.

Ceci permettrait :

<h1 class="vcard">Chris Messina</h1>

n'exigeant qu'un seul nom de classe pour le cas le plus simple.


renommage pour utilisabilité

Autrement connu sous, choisir une forme de cohérence sur une autre.

Pouvons-nous faire même encore mieux ?

L'une des questions les plus communément posée à propos de hCard est :

Pourquoi hCard utilise vcard comme nom de classe racine ?

Cette légère incompatibilité entre le nom du format et le nom de classe racine prête naturellement à confusion pour un grand nombre de nouveaux venus sur les microformats.

Même si dans les microformats, nous croyons fermement au principe de réutilisation, nous devons admettre que dans ce cas, l'expérience/évidence a montré que ceci peut être un cas où nous avons réutilisé quelque chose bien au delà de son sens original. Par conséquent :

Proposition : utiliser le nom de classe racine "hcard" au lieu de "vcard" pour les futures hCards.

Ceci donnerait :

<h1 class="hcard">Chris Messina</h1>

rendant le cas simple même encore plus simple :

Juste 1 nom de classe additionnel, nommé du même nom que le format que vous ajoutez. Pensez hCard, marquez class="hcard".

Pour un minimum de compatibilité, nous devrions documenter que les parseurs devraient accepter "hcard" comme alternative à "vcard" comme le nom de classe racine pour hCard 1.0, et de la même manière pour hCalendar 1.0 : "hcalendar" en plus de "vcalendar", "hevent" en plus de "vevent".

Néanmoins, pour microformats 2 nous allons distinguer les noms de classes racine plus en profondeur en utilisant un préfixe "h-" (par ex. "h-card"). Continuez à lire pour comprendre pourquoi.

simplifier pour n'avoir besoin que d'un seul élément

Il est très important pour le simple cas d'être aussi simple que possible, de permettre aux maximum de personnes de démarrer avec un effort minimal. (L'idée d'utiliser un nom de classe unique pour un microformat a été proposée par Ryan Cannon en 2006 spécifiquement pour hCard, et redécouverte par Tantek en 2010 et généralisée par la suite pour tous les microformats.)

À partir de là, c'est bien d'obliger à un effort incrémental pour un retour incrémental. Ce qui veut dire ajouter toute information additionnelle à propos d'une personne, ajouter des noms de propriété explicites.

Comment fonctionne ce cas d'unique racine ?

  • le nom de classe racine reflète le nom du microformat
  • chaque microformat doit avoir besoin tout au plus d'une propriété (de préférence 0)
    • admettons qu'avoir besoin d'un champ dans une application résulte simplement dans du bruit (le problème 90210 - des apps qui ont besoin du code postal reçoivent beaucoup d'entrées 90210), et spécifier que n'importe quel cas d'usage d'application qui semble "avoir besoin" de propriétés spécifiques doit au lieu de cela définir comment signifier des valeurs sensibles par défaut pour elles.
  • si un seul nom de classe est spécifié, signifier les contenus entiers texte de l'élément comme la valeur de la propriété de base du microformat à savoir :
    • "hcard" insinue "fn"
    • hcalendar event - "hevent" - insinue "summary"
    • "hreview" insinue "summary"
    • "hentry" insinue "entry-summary" (à réduire peut-être en "summary" - en pratique ils ne sont pas suffisamment distincts sémantiquement pour avoir besoin de noms de propriété séparés)
    • OU au lieu de produire l'unique propriété implicite à avoir un vocab spécifique, introduire une nouvelle propriété générique 'p-name' (applicable à tous les vocabulaires) (subsuming hCard's 'fn'). Voir microformats 2 brainstorming: further simplifications pour les dernières idées le long de ces lignes, comprenant les propriétés génériques suivantes spécifiques de marquage pour tous les microformats (basées sur des cas d'usages de marquage existants et publiés)
      • 'p-name'
      • 'u-url'
      • 'u-photo'

ensembles plats de propriétés

Que pouvons-nous simplifier encore plus sur les microformats?

Bon nombre d'individus ont fourni le feedback qu'à chaque fois qu'il y a plus d'un niveau de hiérarchie dans un microformat, beaucoup (la plupart ?) des développeurs s'embrouillent - en particulier Kavi Goel de Google / Rich Snippets a fournir ce feedback durant un dîner microformats. Par conséquent, en fonction des multiples niveaux cela résulte probablement dans une perte d'auteurs, peut-être même de précision tout comme la confusion mène indubitablement à plus d'erreurs. Par conséquent :

Proposition : simplifier tous les microformats vers des ensembles plats de propriétés.

Ce qui veut dire :

  • tous les microformats sont simplement un objet avec un ensemble de propriétés avec des valeurs.
  • plus de sous-propriétés - laisser tomber la notion de sous-propriétés.
  • utiliser la composition de multiple microformats pour toute hiérarchie plus profonde, par ex. le "location" d'un événement hCalendar peut être une hCard, ou l' "agent" d'une hCard peut être une autre hCard.

Par exemple pour hCard, cela voudrait dire que les modifications spécifiques suivantes soient maintenues pour une fonctionnalité pertinente :

  • abandonner "n", promouvoir toutes les sous-propriétés "n" vers des propriétés complètes
    • given-name, family-name, additional-name, honorific-prefix, honorific-suffix
  • traiter "geo" comme un microformat imbriqué
  • traiter "adr" comme un microformat imbriqué (que faire du "type" adr ?)
  • traiter "org" comme une chaîne plate et laisser tomber "organization-name" et "organization-unit" (en pratique rarement utilisé, aussi non révélé ou ignoré dans les interfaces-utilisateurs de gestion de contact - par ex. Carnet d'Adresses)

Exemple : ajouter une initiale au milieu de l'exemple précédent du nom de Chris Messina, et marquer chaque composant de nom:

<h1 class="hcard">
 <span class="fn">
  <span class="given-name">Chris</span>
  <abbr class="additional-name">R.</abbr>
  <span class="family-name">Messina</span>
 </span>
</h1>

Note :

  1. usage d'un span explicite avec "fn" pour marquer le nom entier formaté
  2. usage de l'élément abbr pour indiquer explicitement la sémantique que "R." est simplement une abréviation pour son nom-additionnel.

distinguer les propriétés des autres classes

Les propriétés actuelles des microformats ré-utilisent des termes génériques comme "summary", "photo", "updated" à la fois tant pour la facilité d’usage que la compréhension.

Néanmoins, à travers une expérience à plus long terme, nous avons vu des sites qui ont abandonné accidentellement (ou rompu) leurs supports des microformats (par ex. Upcoming.org, Facebook) parce que les auteurs web écrivent à nouveau tous leurs noms de classes, et ne sont soit pas conscients que les microformats étaient dans la page, ou ne pouvaient pas facilement distinguer les noms de classe des propriétés des autres noms de classes spécifiques au site.

Ce problème a été rapporté par un certain nombre d’auteurs web.

Par conséquent microformats 2 utilise des préfixes pour les noms de classes des propriétés, par ex. :

  • p-summary au lieu de summary
  • u-photo au lieu de photo
  • dt-updated au lieu de updated

Préfixer ainsi tous les noms de classes de microformats fût suggéré initialement par Scott Isaacs de Microsoft à Tantek durant une visite chez Microsoft en 2006/2007, mais destiné spécifiquement pour faire en sorte que les microformats soient plus faciles à parser. À cette date, la suggestion avait été rejetée parce que les microformats étaient plus focalisés sur les auteurs web que les parseurs.

Néanmoins, parce que l’expérience a montré que les noms de classes distinctifs est une problématique tant ‘’’pour les auteurs web que les développeurs de parseurs, c’est un changement-clé que microformats-2 adopte. Voir la prochaine section pour les détails.

COMMUNAUTÉ et OUTILS

La seconde circonscription la plus importante dans la communauté des microformats sont les développeurs, programmeurs et développeurs d’outils.

Un nombre non-trivial parmi eux ont été suffisamment frustrés avec quelques problématiques générales à l'égard des microformats qu’ils ont fait le travail supplémentaire et significatif en plus pour supporter chacune des alternatives moins chaleureuses (microdata, RDFa). Basé sur ces données du vrai-monde (comportement du marché), cela nous a amené à nous occuper de ces problématiques générales de microformats pour cette circonscription.

exigences de parsage pour les microformats existants

COMMUNAUTÉ et OUTILS (qui) UTILISENT les MICROFORMATS

  • parseur / parsage
  • structuré
  • extraire/sortir la data
  • json - représentation 1:1

parser les microformats requiert

  1. Une liste de noms de classes racines pour chaque microformat à parser
  2. Une liste de propriétés pour chaque microformat spécifique, associée à la connaissance du type de chaque propriété afin de parser leurs données provenant de différentes portions du marquage HTML
  3. Quelques règles spécifiques à certains formats spécifiques (optimisations marquage/contenu)

Ceci voulait dire qu’à chaque fois qu’un nouveau microformat est « drafté »/spécifié/adopté, les parseurs ont besoin d’être mis à jour pour le gérer correctement, à un minimum pour les parser quand ils sont à l’intérieur d’autres microformats et évitent des propriétés implicites errantes de l’un à l’autre (confinement, problème mfo).

conventions de dénomination pour analyse générique

Je pense qu’il existe une solution suffisamment simple pour les points #1 et #2 de la liste du dessus, et nous pouvons progresser vers la minimisation du point #3. En résumé :

Proposition : un ensemble de conventions de dénomination pour les noms de classes racines microformats et propriétés qui les rendent évidentes quand :’’’

  • Un nom de classe représente un nom de classe racine microformat
  • Un nom de classe représente un nom de propriété microformat
  • Un nom de classe représente une propriété microformat qui a besoin d’un parsage spécial (type spécifique de propriété).

En particulier - dérivé d’exemples du vrai monde de microformats avérés existants (plutôt que toute abstraction de ce que pourrait avoir un schéma)

  • "h-*" pour les noms de classes racines, par ex. "h-card", "h-event", "h-entry"
    • Le préfixe 'h-' est basé sur le modèle de nommage existant des microformats de démarrer par 'h'.
  • "p-*" pour les simples propriétés (texte) , par ex. "p-fn", "p-summary"
    • Un parsage générique de vocabulaire, l’élément texte en général, traiter certaine combinaison d’attribut/élément HTML comme spécial et utiliser ceux-ci en premier, par ex. img/alt, abbr/title.
    • Le préfixe 'p-' est basé sur le mot "property" démarrant par 'p'.
  • "u-*" pour les propriétés URL, par ex. "u-url", "u-photo", "u-logo"
    • parsage spécial requis : préférer les attributs a/href, img/src, object/data etc. aux éléments de contenus
    • Le ‘préfixe u-‘ est basé sur URL/URI commençant par la lettre 'u', qui est le type de la plupart de ces propriétés en rapport.
  • "dt-*" pour les propriétés datetime, par ex. "dt-start", "dt-end", "dt-bday"
    • parsage spécial requis : modèle-classe-value, en particulier séparer les valeurs date time en parsant pour un meilleur équilibre lisibilité-par les humains / DRY.
    • Le préfixe 'dt-' est basé sur date time" ayant les initiales "dt" et la prépondérance de propriétés date time démarrant par "dt", par ex. dtstart, dtend, dtstamp, dtreviewed.
  • "e-*" pour les propriétés où la hiérarchie entière contenu de l’élément est la valeur, par ex. "e-content" (précédemment "entry-content") pour hAtom. Le préfixe 'e-' peut être aussi souvenu de manière mnémonique comme "element tree", "embedded markup", ou "encapsulated markup".


Ceci fournit une histoire plus simple de transition/éducation pour les auteurs/éditeurs existants de microformats :

  • "h*" vers "h-*", "dt*" vers "dt-*", propriétés url vers "u-*", entire embedded markup vers "e-*", et "p-*" pour toutes les propriétés "plein texte"


Voir microformats-2-prefixes pour de plus amples idées et discussions sur ces autres préfixes de classes.

Exemple : pousser ce simple exemple de hCard en titre :

<h1 class="h-card">Chris Messina</h1>

En tant que communauté, nous continuerions à utiliser le processus microformats à la fois pour chercher et déterminer le besoin de nouveaux microformats, et pour nommer les nouveaux noms de propriétés micformats pour un maximum de ré-utilisation et d’inter-opérabilité d’un vocabulaire partagé.

S’il advenait que nous ayons besoin d’un nouveau type de propriété dans le futur, nous pouvons utiliser l’une des uniques-lettres-préfixes pour l’ajouter à microformats 2.0. Ceci obligerait bien sûr à mettre à jour les parseurs, mais en pratique le nombre de différents types de propriétés a grandi très lentement, et nous savons à partir d’autres schémas/langages de programmation qu’il y a toujours un nombre limité et petit de types de propriétés scalaires/atomiques dont vous avez besoin, et en utilisant celles-ci, vous pouvez créer des types/objets composés qui représentent des types de données plus riches/plus compliqués. Voir microformats-2-prefixes pour une documentation des préfixes de noms de classes existants à une lettre-unique en pratique.

AVANTAGES

Ceci a de nombreux avantages :

  • meilleure maintenabilité - bien plus évident pour les auteurs web/designers/éditeurs dont les noms de classes sont pour/provenant des microformats.
  • aucune chance de collision - pour tous les objectifs pratiques avec des noms de classes existants et évitant de ce fait tout besoin d'ajouter des règles complexes de style CSS pour éviter des effets inattendus de mise en forme.
  • parsage plus simple - les parseurs peuvent produire désormais une simple analyse de flux (ou un parcours dans l'ordre de l'arbre du DOM) et extraire tous les objets, propriétés et valeurs microformats, sans avoir à connaître quoi que ce soit sur les microformats spécifiques.
  • séparation de syntaxe et vocabulaire - en résumant la syntaxe microformats 2 à quelque chose d'indépendant de tout vocabulaire, cela permet et encourage le développement de vocabulaires partagés qui peuvent fonctionner dans des syntaxes alternatives.

Plus d'exemples : voici le même exemple avec des composants de nom :

<h1 class="h-card">
 <span class="p-fn">
  <span class="p-given-name">Chris</span>
  <abbr class="p-additional-name">R.</abbr>
  <span class="p-family-name">Messina</span>
 </span>
</h1>

avec un hyperlien vers l'URL de Chris :

<h1 class="h-card">
 <a class="p-fn u-url" href="http://factoryjoe.com/">
  <span class="p-given-name">Chris</span>
  <abbr class="p-additional-name">R.</abbr>
  <span class="p-family-name">Messina</span>
 </a>
</h1>

COMPATIBILITÉ

microformats 2.0 est rétro-compatible dans le sens où il permet aux auteurs de contenus de marquer tant avec les vieux noms de classes que les nouveaux pour une compatibilité avec les vieux outils.

Voici un exemple simple :

<h1 class="h-card vcard">
 <span class="fn">Chris Messina</span>
</h1>

Un parseur microformats 2.0 verrait le nom de classe "h-card" et laisserait entendre la propriété unique requise à partir des contenus, alors qu'un parseur microformats 1.0 trouverait le nom de classe "vcard" et puis chercherait le nom de classe "fn". Aucune duplication de donnée n'est requise. C'est une mise en application très importante du principe DRY.

Et l'exemple au-dessus hyperlié avec à la fois les ensembles de noms de classes :

<h1 class="h-card vcard">
 <a class="p-fn u-url n fn url" href="http://factoryjoe.com/">
  <span class="p-given-name given-name">Chris</span>
  <abbr class="p-additional-name additional-name">R.</abbr>
  <span class="p-family-name family-name">Messina</span>
 </a>
</h1>


EXTENSIONS PROPRIÉTAIRES

(cette section fût seulement discutée verbalement et non écrite durant les discussions - saisie ici car elle est dans le sujet)

Proprietary extensions to formats have typically been shortlived experimental failures with one big recent exception.

Proprietary or experimental CSS3 property implementations have been very successful.

There has been much use of border radius properties and animations/transitions which use CSS properties with vendor-specific prefixes like:

  • -moz-border-radius
  • -webkit-border-radius

etc.

Note that these are merely string prefixes, not bound to any URL, and thus not namespaces in any practical sense of the word. This is quite an important distinction, as avoiding the need to bind to a URL has made them easier to support and use.

This use of vendor specific CSS properties has in recent years allowed the larger web design/development/implementor communities to experiment and iterate on new CSS features while the features were being developed and standardized.

The benefits have been two-fold:

  • designers have been able to make more attractive sites sooner (at least in some browsers)
  • features have been market / real-world tested before being fully standardized, thus resulting in better features

Implementers have used/introduced "x-" prefixes for IETF MIME/content-types for experimental content-types, MIME parameter extensions, and HTTP header extensions, per RFC 2045 Section 6.3, RFC 3798 section 3.3, and Wikipedia: HTTP header fields - non-standard headers (could use RFC reference instead) respectively, like:

Some standard types started as experimental "x-" types, thus demonstrating this experiment first, standardize later approach has worked for at least some cases:

  • image/x-png (standardized as image/png, both per RFC2083)

There have been times when specific sites have wanted to extend microformats beyond what the set of properties in the microformat, and currently lack any experimental way to do so - to try and see if a feature (or even a whole format) is interesting in the real world before bothering to pursue researching and walking it through the microformats process. Thus:

Proposal:

  • '*-x-' + '-' + meaningful name for root and property class names
    • where "*" indicates the single-character-prefix as defined above
    • where "x" indicates a literal 'x' for an experimental extension OR
    • OR "x" indicates a vendor prefix (more than one character, e.g. like CSS vendor extension abbreviations, or some stock symbols, avoiding first words/phrases/abbreviations of microformats properties like dt-)
    • e.g.
    • "h-bigco-one-ring" - a hypothetical "bigco" vendor-specific "onering" microformat root class name.
    • "p-goog-preptime" - to represent Google's "preptime" property extension to hRecipe (aside: "duration" may be another property type to consider separate from "datetime" as it may be subject to different parsing rules.)
    • "p-x-prep-time" - a possible experimental property name to be added to hRecipe upon consideration/documentation of real-world usage/uptake.

Background - this proposal is a composition of the following (at least somewhat) successful vendor extension syntaxes

UTILISATEURS

Besoin de plus d'outils et d'interfaces qui :

  • publient
  • copient/collent
  • clic-droit sur un microformat
  • partagent
  • recherchent des résultats

discuté de quelques outils existants comme : H2VX convertit hCard en vCard, hCalendar en iCalendar

Comment ré-implémenterions-nous Live Clipboard aujourd'hui, en le rendant plus facile pour les auteurs, éditeurs et développeurs ?

VOIR AUSSI