microformats 2

Jump to: navigation, search

Cette page a démarré sur microformats2


Bienvenue sur la page d'accueil des microformats 2.

Contents

Résumé

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

  1. préfixes pour les noms de classes utilisés pour les microformats, ceux qui démarrent avec 'h-' 'p-' 'u-' 'dt-', 'e-' = syntaxe indépendante des vocabulaires qui peut ensuite être développée séparément.
    • 'h-*' pour les noms de classes racine, par ex. 'h-card'
    • 'p-*' pour des propriétés simples (texte), par ex. 'p-name'
    • 'u-*' pour les propriétés d'URL, par ex. 'u-photo'
    • 'dt-*' pour les propriétés de datetime, par ex. 'dt-bday'
    • 'e-*' pour les propriétés de marquage embarqué, par ex.'e-note'. Voir conventions de nommage du préfixe pour en savoir plus
  1. ensembles plats des propriétés optionnelles pour tous les microformats (la data hiérarchique utilise des microformats imbriqués). Les propriétés sont toutes optionnelles et potentiellement à plusieurs valeurs (les applications ayant besoin d'une sémantique unique peuvent utiliser la première instance)
  2. marquage unique de classe pour les usages communs - pour les modèles de marquage simple, un seul nom de classe racine peut sous-entendre quelques propriétés génériques - name, url, photo, par exemple :

exemples simples de microformats

Voici quelques exemples simples de microformats 2 qui démontrent la plupart des changements, avec le JSON canonique :

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

JSON analysé :

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

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

JSON analysé :

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

<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"]
}
}]
<div class="h-card">
<img class="u-photo" alt="photo de Mitchell"
src="https://webfwd.org/content/about-experts/300.mitchellbaker/mentor_mbaker.jpg"/>
<a class="p-name u-url"
href="http://blog.lizardwrangler.com/" 
>Mitchell Baker</a>
(<a class="u-url" 
href="https://twitter.com/MitchellBaker"
>@MitchellBaker</a>)
<span class="p-org">Mozilla Foundation</span>
<p class="p-note">
Mitchell is responsible for setting the direction and scope of the Mozilla Foundation and its activities.
</p>
<span class="p-category">Strategy</span>
<span class="p-category">Leadership</span>
</div>

JSON Parsé :

{ 
"items": [{ 
"type": ["h-card"],
"properties": {
"photo": ["https://webfwd.org/content/about-experts/300.mitchellbaker/mentor_mbaker.jpg"],
"name": ["Mitchell Baker"],
"url": [
"http://blog.lizardwrangler.com/",
"https://twitter.com/MitchellBaker"
],
"org": ["Mozilla Foundation"],
"note": ["Mitchell is responsible for setting the direction and scope of the Mozilla Foundation and its activities."]
"category": [
"Strategy",
"Leadership"
]
}
}]
}

Notes :

  1. Le "type" JSON utilise la totalité du nom de classe racine du microformat (par ex. "h-card") 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 rel-profile, la proposition d'attribut html5-profile, ou peut-être à la place un attribut 'vocab' (peut-être plus intuitif que le terme surchargé 'profile').

vocabulaires v2

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

h-adr

nom de classe racine : h-adr
profile/itemtype : http://microformats.org/profile/h-adr

propriétés :

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 :

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


h-card

nom de classe racine : h-card
profile/itemtype : http://microformats.org/profile/h-card

propriétés :

Propriétés réservées : (propriétés pas beaucoup utilisées (si ce n'est pas du tout) en pratique)


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
propriétés : (parsés comme p- plein texte à moins qu'autre chose ne soit spécifié)


Réservé : (les propriétés pour rétro-compatibilité que les parseurs peuvent implémenter, s'ils le font, ils doivent l'implémenter de cette façon :

...

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

nom de classe racine : h-entry
profile/itemtype : http://microformats.org/profile/h-entry

propriétés :

Ceci est une mise à jour de hAtom

Brainstorming :

Les propriétés suivantes sont des ajouts proposés à h-entry au-dessus de ce quehAtom (ou Atom) fournit, basé sur différentes conventions de marquage existant de prévisualisation de lien :

Rétro-compatibilité :

(*)les implémentations spécifiques-hAtom qui exécutent des affichages ou traductions personnalisées (par ex. vers Atom XML) devraient préférer p-name à p-entry-title, et utiliser le(s) valeur(s) p-entry-title value(s) comme un recour s'il n'y a pas de p-name. Pour une rétro-compatibilité hAtom, 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
propriétés : (parsés comme p- plein texte à moins qu'autre chose ne soit spécifié)


FAQ:

  • Quel est le p-name d'une note ?
    • Quelques options, de la plus simple à la plus détaillée.
      • le même que la propriété p-content/e-content.
      • le même que l'élément title sur la page permalien du post. Au moment de publier une note sur sa propre page post permalien, les contenus de la note sont probablement abrégés pour le titre de la page. La même abréviation peut être utilisée pour le p-name.
      • première phrase de la propriété p-content/e-content. Ce peut être mieux pour les objectifs de syndication et de prévisualisation-de-lien pour fournir juste la première phrase de la note comme le p-name. De la même façon, si seulement une portion du contenu est syndiquée vers d'autres sites, cette portion peut être marquée comme le p-summary.
  • ...

Problématiques résolues

h-event

nom de classe racine : h-event(*) profile/itemtype : http://microformats.org/profile/h-event

propriétés :

Ceci est une mise à jour de hCalendar

(*)les implémentations spécifiques hCalendar qui exécutent des affichages ou traductions (par ex. vers iCalendar .ics) DEVRAIT préférer p-name sur p-summary, et utiliser la(es) valeur(s) p-summary comme recours s'il n'a pas de p-name.

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 : (parser comme p- plein texte à moins qu'autre chose ne soit spécifié)

h-geo

nom de classe racine : h-geo
profile/itemtype : http://microformats.org/profile/h-geo

propriétés :

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.

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

h-item

nom de classe racine : h-item
profile/itemtype: http://microformats.org/profile/h-item

propriétés :

Note : en pratique, du fait des règles de propriété implicite dans microforamats", il est attendu que la plupart des usages de "h-item" n'obligeront pas du tout à quelques propriétés explicites (parce que les parseurs microformats2 inféreront les propriétés name, photo, et url à partir de la structure de l'élément avec "h-item" et ses contenu/éléments s'il y en a).

h-product

nom de classe racine : h-product
profile/itemtype: http://microformats.org/profile/h-product

propriétés :

For backward compatibility, microformats 2 parsers SHOULD detect the following root class name and property names. A microformats 2 parser may use existing microformats parsers to extract these properties. If an "h-product" is found, don't look for an "hproduct" on the same element.

compat root class name: hproduct
properties: (parsed as p- plain text unless otherwise specified)

Note: hProduct a au moins une propriété expérimentale qui a une adoption du vrai monde du fait du support de la recherche hProduct par Google et Bing. Actuellement ceci est : price

h-recipe

nom de classe racine : h-recipe
profile/itemtype: http://microformats.org/profile/h-recipe

propriétés :

Propriétés expérimentales avec large adoption

For backward compatibility, microformats 2 parsers SHOULD detect the following root class name and property names. A microformats 2 parser may use existing microformats parsers to extract these properties. If an "h-recipe" is found, don't look for an "hrecipe" on the same element.

compat root class name: hrecipe
properties: (parsed as p- plain text unless otherwise specified)

Note: hRecipe has a number of experimental properties which have real world adoption due to Google recipe search support of hRecipe. These are: summary, author, published and nutrition


h-resume

nom de classe racine : h-resume
profile/itemtype : http://microformats.org/profile/h-resume

propriétés :

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

nom de classe racine compatible : hresume
propriétés : (parsées comme p- plein texte à mons qu'autre chose ne soit spécifié)

Note : skill a une expansion proposée en 'competency' avec un 'summary' explicite, une notation et/ou des composants de durée. Basé sur l'adoption existante dans le vrai monde, nous devrions envisager un vocabulaire h-competency avec les propriétés p-summary, p-rating, et dt-duration.

h-review

root class name: h-review
profile/itemtype: http://microformats.org/profile/h-review

properties:

For backward compatibility, microformats 2 parsers SHOULD detect the following root class name and property names. A microformats 2 parser may use existing microformats parsers to extract these properties. If an "h-review" is found, don't look for an "hreview" on the same element.

compat root class name: hreview
properties: (parsed as p- plain text unless otherwise specified)

Note: The hReview format has three properties which make use of rel attribute, these are tag, permalink (via the self and bookmark values) and license. Microformats 2 parsers SHOULD map these URLs into the page scoped rel collection.

h-review-aggregate

root class name: h-review-aggregate
profile/itemtype: http://microformats.org/profile/h-review-aggregate

properties:

For backward compatibility, microformats 2 parsers SHOULD detect the following root class name and property names. A microformats 2 parser may use existing microformats parsers to extract these properties. If an "h-review-aggregate" is found, don't look for an "hreview-aggregate" on the same element.

compat root class name: hreview-aggregate
properties: (parsed as p- plain text unless otherwise specified)

v2 notes vocab

Notes :

v2 vocab to-do

à faire :


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>
du <time class="dt-start">2012-06-30</time> 
au <time class="dt-end">2012-07-01</time> chez  
<span class="p-location h-card">
<a class="p-name p-org u-url" href="http://geoloqi.com/">
Geoloqi
</a>, 
<span class="p-street-address">920 SW 3rd Ave. Suite 400</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é :

{ 
"items": [{
"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"]
}
}]
}
}]
}


Questions :

  • Should the nested hCard be present also as a top-level item in the JSON? - Tantek 02:02, 19 June 2012 (UTC)
    • My current (2012-243) leaning is no. - Tantek 18:53, 30 August 2012 (UTC)
    • If so, how do we avoid expansion of the JSON geometrically proportional to the depth of microformat nesting? (Or do we not worry about it?)
  • Should there be a canonical hierarchical JSON and a canonical flattened JSON? - Tantek 02:02, 19 June 2012 (UTC)
    • My current (2012-243) leaning is no, we stick with one canonical JSON for uf2 which is hierarchical. - Tantek 18:53, 30 August 2012 (UTC)
    • If so, should the flattened JSON have references from properties to nested microformats that have been pushed to the top level per flattening? - Tantek 02:02, 19 June 2012 (UTC)
      • If so, what convention does/do JSON follow for such synthetic local reference identifiers? - Tantek 02:02, 19 June 2012 (UTC)

Notes :

h-card org h-card

Les personnes publient souvent de l'information générale à propos de leurs sociétés plutôt que quelque chose spécifique sur eux, auquel cas, ils peuvent désirer encapsuler cela dans un microformat composé. Par exemple, voici un exemple simple de hCard avec une propriété org :

Mitchell Baker (Mozilla Foundation)

avec la source :

<div class="h-card">
<a class="p-name u-url"
href="http://blog.lizardwrangler.com/" 
>Mitchell Baker</a> 
(<span class="p-org">Mozilla Foundation</span>)
</div>

JSON analysé :

{
"items": [{ 
"type": ["h-card"],
"properties": {
"name": ["Mitchell Baker"],
"url": ["http://blog.lizardwrangler.com/"],
"org": ["Mozilla Foundation"]
}
}]
}

Parfois de telles affiliations à une organisation sont hyperliés vers le site web de l'organisation :

Mitchell Baker (Mozilla Foundation)

Vous pouvez marquer cela avec une h-card embarquée :

<div class="h-card">
<a class="p-name u-url"
href="http://blog.lizardwrangler.com/" 
>Mitchell Baker</a> 
(<a class="p-org h-card" 
href="http://mozilla.org/"
>Mozilla Foundation</a>)
</div>

JSON analysé :

{
"items": [{ 
"type": ["h-card"],
"properties": {
"name": ["Mitchell Baker"],
"url": ["http://blog.lizardwrangler.com/"],
"org": [{
"value": "Mozilla Foundation",
"type": ["h-card"],
"properties": {
"name": ["Mozilla Foundation"],
"url": ["http://mozilla.org/"]
}
}]
}
}]
}

Note : la h-card embarquée a des propriétés 'name' et 'url' implicites, tout comme devrait le faire toute autre h-card avec un seul nom de classe racine sur un <a href>.


POUR PARSEURS UNIQUEMNENT :

La 'h-card' embarquée pourrait être marquée tout aussi bien avec un 'h-org', qui l'ajoute à l'array type du microformat imbriqué, le tout comme partie de la propriété spécifiée par le 'p-org'.

<div class="h-card">
<a class="p-name u-url"
href="http://blog.lizardwrangler.com/" 
>Mitchell Baker</a> 
(<a class="p-org h-card h-org" 
href="http://mozilla.org/"
>Mozilla Foundation</a>)
</div>

JSON PARSE :

{
"items": [{ 
"type": ["h-card"],
"properties": {
"name": ["Mitchell Baker"],
"url": ["http://blog.lizardwrangler.com/"],
"org": [{
"value": "Mozilla Foundation",
"type": ["h-card", "h-org"],
"properties": {
"name": ["Mozilla Foundation"],
"url": ["http://mozilla.org/"]
}
}]
}
}]
}


POUR PARSEURS UNIQUEMNENT :

Without a property class name like 'p-org' holding all the nested objects together, we need to introduce another array for nested children (similar to the existing DOM element notion of children) of a microformat that are not attached to a specific property:

<div class="h-card">
<a class="p-name u-url"
href="http://blog.lizardwrangler.com/" 
>Mitchell Baker</a> 
(<a class="h-org h-card" 
href="http://mozilla.org/"
>Mozilla Foundation</a>)
</div>

JSON Parsé :

{
"items": [{ 
"type": ["h-card"],
"properties": {
"name": ["Mitchell Baker"],
"url": ["http://blog.lizardwrangler.com/"]
},
"children": [{
"type": ["h-card","h-org"],
"properties": {
"name": ["Mozilla Foundation"],
"url": ["http://mozilla.org/"]
}  
}]
}]
}

Du fait qu'il n'y ait pas de nom de classe de propriété sur l'élément avec les classes 'h-card' et 'h-org', le microformat représentant cet élément est rassemblé à l'intérieur de l'array enfant.

Un tel microformat embarqué sous-tend quelque relation (confinement, étant en rapport), mais n'est pas aussi utile que si le microformat imbriqué était une propriété spécifique de son parent.

Pour cette raison, il est recommandé que les auteurs ne devraient pas publier de microformats imbriqués sans un nom de classe de propriété, et au lieu de cela, au moment d'imbriquer les microformats, les auteurs devraient toujours spécifier un nom de classe propriété comme 'p-org') sur le même élément que le(s) nom(s) de classe racine du(es) microformat(s) imbriqué(s) (comme 'h-card' et/ou 'h-org').

POUR PARSEURS UNIQUEMNENT :

Ou l'objet imbriqué pourrait n'être marqué qu'avec 'h-card'. Source :

<div class="h-card">
<a class="p-name u-url"
href="http://blog.lizardwrangler.com/" 
>Mitchell Baker</a> 
(<a class="h-card" 
href="http://mozilla.org/"
>Mozilla Foundation</a>)
</div>

JSON Parsé :

{
"items": [{ 
"type": ["h-card"],
"properties": {
"name": ["Mitchell Baker"],
"url": ["http://blog.lizardwrangler.com/"]
},
"children": [{
"type": ["h-card"],
"properties": {
"name": ["Mozilla Foundation"],
"url": ["http://mozilla.org/"]
}  
}]
}]
}

À faire : ajouter un exemple de h-event h-card et JSON, selon des exemples de publication du vrai monde comme Swing Time: Classes in Southern England.

publication

marquage minimal

Le meilleur moyen d'utiliser microformats-2 est d'ajouter aussi peu de syntaxe que possible. Ceci rend votre code plus propre, améliore sa capacité de maintenance, et par conséquent la qualité et la longévité de vos microformats.

Un grand avantage de microformats-2 sur les précédents microformats (et d'autres) est la capacité d'ajouter un nom de classe à un élément existant pour créer un item structuré.

Voir les exemples simples en haut pour un démarrage, par ex.

Des hCards simples qui fonctionnent simplement en ajoutant class="h-card" :

<span class="h-card">Frances Berriman</span>
 
<a class="h-card" href="http://benward.me">Ben Ward</a>
 
<img class="h-card" alt="Sally Ride" 
src="http://upload.wikimedia.org/wikipedia/commons/a/a4/Ride-s.jpg"/>
 
<a class="h-card" href="http://tantek.com">
<img alt="Tantek Çelik" src="http://ttk.me/logo.jpg"/>
</a>

(par ex. href src), et en dernier les autres attributs (par ex. style). Le fait de placer l'attribut class en premier le relie plus fortement à l'élément name/tag en lui-même, ce qui fait que c'est plus trivial et par conséquent plus facile à mettre à jour.

rétro-compatibilité

Si vous dépendez des implémentations actuelles, pendant qu'elles sont mises à jour pour supporter microformats-2, vous pouvez inclure à la fois le marquage microformats existant et le marquage microformats-2.

En résumé : utilisez simultanément les deux ensembles de noms de classes.

En faisant ainsi, utilisez-les sur le même élément, avec en premier le nom de classe microformats-2, suivi immédiatement du nom de classe existant microformats.

Voici les hCards microformats-2 du dessus avec le marquage actuel hCard, qui peut exiger d'ajouter un élément conteneur (par ex. un <span>) pour séparer l'élément nom de classe racine des éléments explicites de propriétés de noms de classes :

<span class="h-card vcard">
<span class="p-name fn">Frances Berriman</span>
</span>
 
<span class="h-card vcard">
<a class="p-name fn u-url url" href="http://benward.me">Ben Ward</a>
</span>
 
<span class="h-card vcard">
<img class="p-name fn u-photo photo" alt="Sally Ride" src="http://upload.wikimedia.org/wikipedia/commons/a/a4/Ride-s.jpg"/>
</span>
 
<span class="h-card vcard">
<a class="u-url url" href="http://tantek.com">
<img class="p-name fn u-photo photo" alt="Tantek Çelik" src="http://ttk.me/logo.jpg"/>
</a>
</span>


Trucs :

events individuelles des microforamts

Les préfixes (h-, p-, etc.) des noms de classes microformats2 fournissent une reconnaissance plus facile, et quand ils sont suivis du nom de classe existant nommé de manière similaire, ils sont plus facilement reconnus en tant que tels et par conséquent maintenus ensemble quand la marquage est maintenu au fil du temps.

FAQ en rapport : When using both h-card and vcard which should be first and why?

Exemples dans la jungle

Ajoutez SVP de nouveaux exemples dans la jungle de microformats2 en haut de cette liste. Quand cette liste sera trop grosse, nous pouvons la migrer sur une page séparée comme microformats-2-exemples-dans-la-jungle.

h-adr, h-card, h-entry, h-event, h-geo, h-review et des vocabulaires expérimentaux h-feed (embarqué pour des histoires de mise à jour) , objets activity-streams h-as-article, h-as-collection, h-as-note, h-as-update, tout comme des propriétés expérimentales : u-alternate et u-as-downstream-duplicate (liens vers copies POSSE), et u-in-reply-to (liens vers le contenu aquel les posts sont des réponses).

Implémentations

Outils de Blogging :

Les parseurs et autres implémentations de microformats2, généralement open source : Javascript :

PHP :

Ruby :

Présentations

Présentations à propos de microformats2 :

Testimoniaux

À Propos de ce Brainstorm

Le reste de cette page est un brainstorming 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

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

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. 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 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 :

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 ?

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 :

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

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. :

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

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 :’’’

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)


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


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. 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 :

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 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 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)

Les extensions propriétaires vers des formats ont généralement été des échecs expérimentaux de courte durée avec une grosse exception récente.

Les implémentations propriétaires ou expérimentales de propriétés CSS3 ont eu beaucoup de succès.

Il y a eu beaucoup d'utilisation des propriétés border radius et animations/transitions qui utilisent les propriétés CSS avec des préfixes spécifiques aux vendeurs comme :

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:

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:

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:

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 :

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

microformats 2 was last modified: Tuesday, August 20th, 2013

Views