value-class-pattern-fr: Difference between revisions
([fr: sync'd with original page - translation to be achieved]) |
|||
Line 3: | Line 3: | ||
Le modèle de classe "value" provient de l'[[hcard-fr#Extraction_de_Valeur|extraction de valeur]] dans la hCard. | Le modèle de classe "value" provient de l'[[hcard-fr#Extraction_de_Valeur|extraction de valeur]] dans la hCard. | ||
''Les auteurs | ''Les auteurs pensent que le modèle-de-classe-value est désormais complet et prêt à l'emploi pour le balisage. | ||
Les implémenteurs sont encouragés à mettre leurs sites à jour et fournir un [[value-class-pattern-feedback|feedback]]. | Les implémenteurs sont encouragés à mettre leurs sites à jour et fournir un [[value-class-pattern-feedback|feedback]]. | ||
'''Remarque''', le comportement précis du parsage pourrait être modifié en réponse aux feedbacks des implémenteurs, mais les méthodes sont stables. | '''Remarque''', le comportement précis du parsage pourrait être modifié en réponse aux feedbacks des implémenteurs, mais les méthodes sont stables. | ||
Line 37: | Line 37: | ||
<source lang=html4strict> | <source lang=html4strict> | ||
<span class="tel"> | |||
<span class="type">Home</span>: | |||
<span class="value">+1.415.555.1212</span> | |||
</span> | |||
</source> | </source> | ||
Line 51: | Line 51: | ||
<source lang=html4strict> | <source lang=html4strict> | ||
<span class="tel"> | |||
<span class="type">Home</span>: | |||
<span class="value">+33</span> (0) <span class="value">1 42 31 23 23</span> | |||
</span> | |||
</source> | </source> | ||
Line 66: | Line 66: | ||
<source lang=html4strict> | <source lang=html4strict> | ||
<p>Je flâne dans Montmartre rue Junot | |||
<span class="geo"> | |||
48° 53' 16.3206", 2° 20' 5.9712" | 48° 53' 16.3206", 2° 20' 5.9712" | ||
(<span class="value">48.887867;2.3349922</span>) | (<span class="value">48.887867;2.3349922</span>) | ||
</span> | |||
</p> | |||
</source> | </source> | ||
Line 80: | Line 78: | ||
ainsi la classe <code>value</code> l'isole de la forme en degrés, que l'auteur a inclus pour plus de complétude. | ainsi la classe <code>value</code> l'isole de la forme en degrés, que l'auteur a inclus pour plus de complétude. | ||
==Analyse | ==Analyse Fondamentale== | ||
# L'exemple de classe value ne s'applique uniquement qu'aux propriétés qui sont de simples chaînes, des valeurs énumérées, des numéros de téléphone et des | # L'exemple de classe value ne s'applique uniquement qu'aux propriétés qui sont de simples chaînes, des valeurs énumérées, des numéros de téléphone et des dates-heures. L'exemple de classe value n'affecte pas l'analyse des propriétés de type email, URL, URI, UID. | ||
# Là où un élément avec un tel nom de propriété de classe microformat a un descendant avec un nom de classe <code>value</code> (un élément "value"), les parseurs devraient utiliser la portion suivante de cet élément : | # Là où un élément avec un tel nom de propriété de classe microformat a un descendant avec un nom de classe <code>value</code> (un élément "value"), les parseurs devraient utiliser la portion suivante de cet élément : | ||
## si l'élément value est un élément <code>img</code> ou un élément <code>area</code>, utiliser alors la valeur d'attribut du <code>alt</code> de l'élément. | ## si l'élément value est un élément <code>img</code> ou un élément <code>area</code>, utiliser alors la valeur d'attribut du <code>alt</code> de l'élément. | ||
Line 88: | Line 86: | ||
# Là où il y a plusieurs descendants d'une propriété avec un nom de classe de <code>value</code> (plusieurs éléments value) | # Là où il y a plusieurs descendants d'une propriété avec un nom de classe de <code>value</code> (plusieurs éléments value) | ||
## si la propriété microformats attend une chaîne simple, une valeur énumérée ou un numéro de téléphone, alors les valeurs extraites des éléments value devraient être concaténées ''sans'' insérer de caractères supplémentaires ou d'espace-blanc. | ## si la propriété microformats attend une chaîne simple, une valeur énumérée ou un numéro de téléphone, alors les valeurs extraites des éléments value devraient être concaténées ''sans'' insérer de caractères supplémentaires ou d'espace-blanc. | ||
## si la propriété microformats attend une valeur datetime, voir la section [[# | ## si la propriété microformats attend une valeur datetime, voir la section [[#Analyse_Date_et-heure|Analyse Date et heure]]. | ||
# Les descendants avec la classe <code>value</code> ne doivent pas être | # Les descendants avec la classe <code>value</code> ne doivent pas être analysées plus profondément qu'à un niveau. Ce qui veut dire, là où il y a un élément <code>foo</code> avec la classe <code>value</code> | ||
qui a un <em>descendant</em> <code>bar</code> avec la classe <code>value</code>, le contenu de <strong><code>foo</code></strong> est pris comme la <code>value</code>. | qui a un <em>descendant</em> <code>bar</code> avec la classe <code>value</code>, le contenu de <strong><code>foo</code></strong> est pris comme la <code>value</code>. | ||
L'imbrication d'éléments supplémentaires avec la classe <code>value</code> ne peut pas être utilisé pour isoler plus en profondeur une value de propriété. | L'imbrication d'éléments supplémentaires avec la classe <code>value</code> ne peut pas être utilisé pour isoler plus en profondeur une value de propriété. | ||
Line 108: | Line 106: | ||
<samp><code><em class="value">Puppies Rule!</em><strong>But kittens are better!</strong></code></samp>, pas simplement <samp>Puppies Rule!</samp>. | <samp><code><em class="value">Puppies Rule!</em><strong>But kittens are better!</strong></code></samp>, pas simplement <samp>Puppies Rule!</samp>. | ||
== Valeurs Date et | == Valeurs Date et heure == | ||
Quelques propriétés microformats attendent une valeur datetime ISO8601, par ex. [[hcalendar-fr|hCalendar]] <code>dtstart</code> et <code>dtend</code> ou [[hatom-fr|hAtom]] <code>published</code>. | Quelques propriétés microformats attendent une valeur datetime ISO8601, par ex. [[hcalendar-fr|hCalendar]] <code>dtstart</code> et <code>dtend</code> ou [[hatom-fr|hAtom]] <code>published</code>. | ||
Les auteurs peuvent utiliser le modèle de classe value pour spécifier séparément la date et l'heure, qui sont alors combinés pour spécifier une valeur unique datetime. | Les auteurs peuvent utiliser le modèle de classe value pour spécifier séparément la date et l'heure, qui sont alors combinés pour spécifier une valeur unique datetime. | ||
Exemple : | Exemple : cette propriété hCalendar 'dtstart' avec des éléments 'value' : | ||
<source lang=html4strict> | <source lang=html4strict> | ||
Line 124: | Line 122: | ||
</source> | </source> | ||
Produit : | Produit la valeur 'dtstart' suivante : | ||
et les convertisseurs iCalendar produisent le DTSTART suivant : | |||
<source lang=text> | <source lang=text> | ||
DTSTART: | DTSTART:20090519T193000 | ||
</source> | </source> | ||
L'absence d'une timezone indique une datetime "flottante", qui est une | L'absence d'une "timezone" indique une "datetime" "flottante", qui est une date-heure indépendante de tout fuseau horaire particulier. Des exemples de datetimes flottantes pourraient être une alarme de réveil que vous paramétrez pour sonner à 8h00, ou un jour de travail ordinaire comme 9h00-17h00. | ||
une alarme de réveil que vous paramétrez pour sonner à 8h00, ou un jour de travail ordinaire comme 9h00-17h00. | |||
=== Analyse Date et heure=== | === Analyse Date et heure=== | ||
Line 140: | Line 140: | ||
* si l'élément est un élément <code>abbr</code>, utiliser alors la valeur d'attribut <code>title</code> de l'élément. | * si l'élément est un élément <code>abbr</code>, utiliser alors la valeur d'attribut <code>title</code> de l'élément. | ||
* pour tout autre élément, utiliser son texte à l'intérieur. | * pour tout autre élément, utiliser son texte à l'intérieur. | ||
* si la valeur a à la | * si la valeur a à la fois une date spécifiée ISO8601 et une heure spécifique, utilisez ceux-ci et arrêtez de chercher des éléments "value". | ||
* si la valeur a *seulement* une date spécifique, spécifiquement, correspondant aux modèles de dates suivants ISO8601 (c.a.d. tels que documentés dans le [http://en.wikipedia.org/wiki/ISO_8601 résumé Wikipedia de ISO8601]) | * si la valeur a *seulement* une date spécifique, spécifiquement, correspondant aux modèles de dates suivants ISO8601 (c.a.d. tels que documentés dans le [http://en.wikipedia.org/wiki/ISO_8601 résumé Wikipedia de ISO8601]) | ||
** AAAA-MM-JJ | ** AAAA-MM-JJ | ||
** AAAA-JJJ | ** AAAA-JJJ | ||
** alors utiliser cela comme la valeur de date. Pour les besoins du modèle de classe value, les tirets "-" | ** alors utiliser cela comme la valeur de date. Pour les besoins du modèle de classe value, les tirets "-" séparant les années, mois, jour et/ou jour ordinal sont requis. | ||
** ignorer tous les éléments complémentaires "value" qui spécifient la date. | ** ignorer tous les éléments complémentaires "value" qui spécifient la date. | ||
* si la valeur a *seulement* une heure spécifique (avec ou sans fuseau horaire), parsez la pour une valeur time | * si la valeur a *seulement* une heure spécifique (avec ou sans fuseau horaire), parsez la pour une valeur time qui puisse correspondre à tout ce qui suit : | ||
** HH:MM:SS-XX:YY | ** HH:MM:SS-XX:YY | ||
** HH:MM:SS+XX:YY | ** HH:MM:SS+XX:YY | ||
Line 161: | Line 161: | ||
** HH sont les "heures" en 24 heures dans le temps, de 00 à 24, avec un 0 optionnel placé devant pour les valeurs inférieures à 10. | ** HH sont les "heures" en 24 heures dans le temps, de 00 à 24, avec un 0 optionnel placé devant pour les valeurs inférieures à 10. | ||
** MM sont les minutes de 00 à 59 | ** MM sont les minutes de 00 à 59 | ||
** SS sont les secondes optionnelles de 00 à 59 (60 pour une seconde). Si omis, inférez 00. | ** SS sont les secondes optionnelles de 00 à 59 (60 pour une seconde). Si omis, inférez 00 secondes. | ||
** XX est le décalage horaire du fuseau, de 00 à 12 | ** XX est le décalage horaire du fuseau, de 00 à 12, avec un 0 en tête optionnel pour les valeurs inférieures à 10 | ||
** YY est le décalage en minutes du fuseau horaire, de 00 à 59, même si en pratique ne sont utilisés que des décalages de 00, 15, 30, 45 minutes dans les fuseaux horaires globaux. | ** YY est le décalage en minutes du fuseau horaire, de 00 à 59, même si en pratique ne sont utilisés que des décalages de 00, 15, 30, 45 minutes dans les fuseaux horaires globaux. | ||
** Z est le 'Z' littéral pour indiquer GMT. | ** Z est le 'Z' littéral pour indiquer GMT. | ||
** Pour les besoins du modèle de classe value, les deux points ":" séparant heure, minutes et secondes sont requis. | ** Pour les besoins du modèle de classe value, les deux points ":" séparant heure, minutes et secondes sont requis. | ||
** Néanmoins les deux points ":" séparant les heures et minutes de tout décalage horaire sont "optionnels" et non recommandés afin de faire en sorte qu'une indication de fuseau horaire ne soit pas confondue avec un horaire. | ** Néanmoins les deux points ":" séparant les heures et minutes de tout décalage horaire sont "optionnels" et non recommandés afin de faire en sorte qu'une indication de fuseau horaire ne soit pas confondue avec un horaire. | ||
** | ** A l'étude : un suffixe non sensible à la casse { }"am"|{ }"a.m." pour traiter une valeur HH value de 12 comme 00, ou un suffixe non sensible à la casse { }"pm"|{ }"p.m."pour ajouter 12 à une valeur HH inférieure à 12 - selon [http://en.wikipedia.org/wiki/12-hour_clock l'article de Wikipedia sur l'horloge de 12 heures]. Note : [[X2V]] a implémenté cela. | ||
*** HH:MM:SSam | |||
*** HH:MM:SSpm | |||
*** HH:MMam | |||
*** HH:MMpm | |||
*** HHam | |||
*** HHpm | |||
*** où "am" et "pm" veulent dire "am ou a.m." et "pm or p.m." | |||
*** quand MM est omis, inférer 00 minutes. | |||
** ignorez tous les autres éléments "value" qui spécifient l'heure. | ** ignorez tous les autres éléments "value" qui spécifient l'heure. | ||
* si la valeur a *seulement* | * si la valeur a *seulement* une date-heure spécifique, ou une valeur de zone horaire qui corresponde à n'importe quelle valeur suivante : | ||
** -XX:YY | ** -XX:YY | ||
** +XX:YY | ** +XX:YY | ||
** -XXYY | ** -XXYY | ||
** +XXYY | ** +XXYY | ||
** -XX | |||
** +XX | |||
** Z | ** Z | ||
** XX est le décalage en heures du fuseau horaire, de 00 à 12 avec un 0 optionnel en avant pour les valeurs inférieures à 10. | |||
** YY est le décalage en minutes de la zone horaire, de 00 à 59, bien qu'en pratique seuls les décalages de 00, 15, 30, 45 minutes soient utilisés dans les zones horaires globales. | |||
** Z est le 'Z' littéral pour indiquer GMT. | |||
** ignorez tous les autres éléments "value" qui spécifient la timezone. | ** ignorez tous les autres éléments "value" qui spécifient la timezone. | ||
Line 183: | Line 196: | ||
* AAAA-MM-JJTHH:MM:SSZ ou | * AAAA-MM-JJTHH:MM:SSZ ou | ||
* AAAA-MM-JJTHH:MM:SS+XXYY - à la fois l'heure et la timezone ont été spécifiées | * AAAA-MM-JJTHH:MM:SS+XXYY - à la fois l'heure et la timezone ont été spécifiées | ||
Les convertisseurs iCalendar doit faire en outre ce qui suit : | |||
* supprimer tous les séparateurs tiret "-" dans la date. | |||
* supprimer tous les sépérateurs deux points ":" separators dans l'horaire. | |||
* exécuter un calcul datetime sur toute valeur timezone relative +/-, et produire une valeur UTC terminant par "Z". | |||
Les convertisseurs Atom doivent en outre faire ce qui suit : | |||
* normaliser toutes les valeurs date et datetime selon la RFC 3339. | |||
=== dérivation et tests === | === dérivation et tests === | ||
Le comportement des valeurs date et time dans le modèle de classe value a été intialement [[value-excerption-pattern-brainstorming#date_and_time_separation|brainstormé sur la page value-excerption-pattern-brainstorming]] et dérivé à partir de cette analyse et des retours. Pour les curieux, les détails historiques peuvent être trouvés là, avec des idées complémentaires pour les extensions. | Le comportement des valeurs date et time dans le modèle de classe value a été intialement [[value-excerption-pattern-brainstorming#date_and_time_separation|brainstormé sur la page value-excerption-pattern-brainstorming]] et dérivé à partir de cette analyse et des retours. Pour les curieux, les détails historiques peuvent être trouvés là, avec des idées complémentaires pour les extensions. | ||
Voir [[value-class-date-time-tests]] pour des cas de tests. | |||
=== optimisations spécifiques des formats === | |||
The following are format specific optimizations under strong consideration that make use of the value-class-pattern. Note: [[X2V]] has implemented this for hCalendar. | |||
;<span style="font-size:smaller">short URL for this section</span> | |||
:http://tr.im/vcpfso | |||
==== hCalendar date dtend implicite ==== | |||
Typically events that start and end the same day only display the date of the event once (makes sense per the DRY [[principle]]) (real world examples: [http://upcoming.yahoo.com/event/3010807/ Upcoming], ... more examples with URLs would help for thoroughness). | |||
Thus it would be convenient if we could imply an [[hCalendar]] event "dtend" date from its "dtstart" date when only the time (and optionally timezone) was specified for its "dtend", e.g.: | |||
<source lang=html4strict> | |||
<span class="vevent"> | |||
The <span class="summary">party</span> will be on | |||
<span class="dtstart"> | |||
<span class="value">2009-06-26</span>, from | |||
<span class="value">19:00</span></span> to | |||
<span class="dtend"><span class="value">22:00</span></span>. | |||
</span> | |||
</source> | |||
To simplify this further for authors, hCalendar processors could treat the specifying of just the time per the value-class-pattern date and time value rules, and thus eliminate the need for the "value" span inside the "dtend" span: | |||
<source lang=html4strict> | |||
<span class="vevent"> | |||
The <span class="summary">party</span> will be on | |||
<span class="dtstart"> | |||
<span class="value">2009-06-26</span>, from | |||
<span class="value">19:00</span></span> to | |||
<span class="dtend">22:00</span>. | |||
</span> | |||
</source> | |||
hCalendar to iCalendar converters should produce the following iCalendar fragment (as part of a valid .ics file) from either of the above two examples: | |||
<source lang=text> | |||
BEGIN:VEVENT | |||
SUMMARY:party | |||
DTSTART:20090626T190000 | |||
DTEND:20090626T220000 | |||
END:VEVENT | |||
</source> | |||
Note: [[X2V]] has implemented this. | |||
Examples "in the wild": | |||
* http://microformats.org/wiki/events/2009-08-12-nyc-workshop (real world example, but on this wiki). | |||
==== hAtom date updated implicite ==== | |||
Similarly, in blog posts that indicate both when they were "published" and "updated", the date is usually only displayed once, typically when "published" (real world examples with URLs would help for thoroughness). | |||
Thus it would be convenient if we could imply an [[hAtom]] entry "updated" date from its "published" date when only the time (and optionally timezone) was specified for its "updated", e.g. for a blog post that was updated the same day: | |||
<source lang=html4strict> | |||
<span class="hentry"> | |||
<span class="entry-summary">short blog post example</span> | |||
was published on <span class="published"> | |||
<span class="value">2009-08-01</span> at <span class="value">12:06</span></span> | |||
and updated at <span class="updated"><span class="value">12:10</span></span>. | |||
</span> | |||
</source> | |||
To simplify this further for authors, hAtom processors could treat the specifying of just the time per the value-class-pattern date and time value rules, and thus eliminate the need for the "value" span inside the "updated" span: | |||
<source lang=html4strict> | |||
<span class="hentry"> | |||
<span class="entry-summary">short blog post example</span> | |||
was published on <span class="published"> | |||
<span class="value">2009-08-01</span> at <span class="value">12:06</span></span> | |||
and updated at <span class="updated">12:10</span>. | |||
</span> | |||
</source> | |||
==Parsing value from a <code>title</code> attribute== | |||
The <code>value-title</code> class name allows the publisher to indicate the data value for a parent property is contained in the <code>title</code> attribute of an element, rather than the inner-text. | |||
This can be used to provide a synonym within content, or used to quietly publish alternate forms of information for microformats parsing, without affecting the consumption of content. | |||
For example, you can use casual localization with dates: | |||
<source lang=html4strict> | |||
<p>It was | |||
<span class='dtstart'> | |||
<span class='value-title' title='2008'>last year</span> | |||
</span> | |||
that I realised my addiction to cashew nuts would cost this country so dear. | |||
</p> | |||
</source> | |||
Parsing rules for <code>value-title</code> are the same as for <code>value</code> above, with the following change: | |||
* Where a microformats property has a child element with class name of <code>value-title</code>, the content of the <code>title</code> attribute of that element must be parsed, rather than the portion of the element that would be parsed for a class name of <code>value</code>. | |||
===Utilisation de <code>value-title</code> pour publier des données-machines=== | |||
The initial usage of <code>value-title</code> is used to publish alternate, parsable forms of property values in a visible context without the use of the <code>abbr</code> element whose semantics already support interpretation of the 'title' attribute as an expanded, more precise form of the content. | |||
Experience has found that there are some cases in microformats where a number of publishers want to include a precisely accurate and parsable value for a property but do not want it to be visible in their page, even as a tooltip. | |||
For example, full [[ISO8601]] datetimes may be confusing to readers of the page (as a tooltip or when read aloud by a screen reader), and enumerated values such as the <code>type</code> subproperty of hCard's <code>tel</code> property use US-English terms, which are not part of pages in any other language. | |||
Since both of those scenarios have shown to be obstacles for a number of publishers, for these cases, and these alone, there exists a further extension of value-excerption. This extension allows the parsable form of the property to be published ‘silently’ immediately adjacent with the respective local visible content. | |||
Here is an example, with the required use of a first child element with class name <code>value-title</code>: | |||
<source lang=html4strict> | |||
<p class='tel' lang='en-gb'> | |||
<span class='type'> | |||
<span class='value-title' title='cell'> </span> | |||
mobile | |||
</span> | |||
<span class='value'>+44 7773 000 000</span> | |||
</p> | |||
</source> | |||
The <samp>cell</samp> value is parsed for the 'type' subproperty, but <samp>mobile</samp> is presented to the user. | |||
In the case of dates: | |||
<source lang=html4strict> | |||
<p class='dtstart'> | |||
<span class='value-title' title='2009-03-14T16:28-0600'> </span> | |||
March 14th 2009, around half-past four | |||
</p> | |||
</source> | |||
A microformats parser will read the ISO8601 format datetime <samp>2009-03-14T16:28-0600</samp>, but users will only see <samp>March 14th 2009, around half-past four</samp>. Testing has shown that the ISO8601 datetime above does not get exposed to any user at all. | |||
==Parser une valeur provenant d'un attribut <code>title</code> == | ==Parser une valeur provenant d'un attribut <code>title</code> == | ||
Line 284: | Line 435: | ||
Pour un futur usage, les ''auteurs de spécification'' peuvent hériter de l'usage de <code>value-title</code> par l'utilisation des formats de date et heures ISO8601, ou réutilisation d'autres microformats, mais les spécifications devraient éviter d'introduire de nouvelles structures de données qui dépendent ou encouragent ce modèle. Les nouvelles spécifications sont elles-mêmes attendues pour adhérer aux principes fondateurs de donnée visible et <abbr>DRY</abbr>. | Pour un futur usage, les ''auteurs de spécification'' peuvent hériter de l'usage de <code>value-title</code> par l'utilisation des formats de date et heures ISO8601, ou réutilisation d'autres microformats, mais les spécifications devraient éviter d'introduire de nouvelles structures de données qui dépendent ou encouragent ce modèle. Les nouvelles spécifications sont elles-mêmes attendues pour adhérer aux principes fondateurs de donnée visible et <abbr>DRY</abbr>. | ||
=== <abbr title='Foire aux Questions'>FAQ</abbr> | == Cas de Test == | ||
Voir [[value-class-pattern-tests]]. | |||
== <abbr title='Foire aux Questions'>FAQ</abbr>== | |||
Cette section est '''informative'''. | Cette section est '''informative'''. | ||
Line 290: | Line 445: | ||
<div class='discussion'> | <div class='discussion'> | ||
* '''Pourquoi utiliser un élément ' | * '''Pourquoi utiliser un élément 'vide' ? Pourquoi ne pas embarquer la donnée dans l'attribut de classe ?''' | ||
** L'attribut de classe est inapproprié pour les valeurs de données embarquées, selon la spécification HTML4, qui établit que <code>class</code> est pour le ‘general purposing processing’, qui est défini comme ‘par ex. pour identifier des champs au moment d'extrire la donnée des pages provenant du HTML dans une base de données, traduire des documents HTML dans d'autres formats, etc.'. ‘General purpose processing’ ne s'étend pas à la donnée elle-même. En outre, cette méthode évite d'inventer une nouveau modèle de chaîne pour embarquer de la donnée. | ** L'attribut de classe est inapproprié pour les valeurs de données embarquées, selon la spécification HTML4, qui établit que <code>class</code> est pour le ‘general purposing processing’, qui est défini comme ‘par ex. pour identifier des champs au moment d'extrire la donnée des pages provenant du HTML dans une base de données, traduire des documents HTML dans d'autres formats, etc.'. ‘General purpose processing’ ne s'étend pas à la donnée elle-même. En outre, cette méthode évite d'inventer une nouveau modèle de chaîne pour embarquer de la donnée. | ||
* '''Pourquoi utiliser un élément 'empty' ? Pourquoi ne pas produire un nouvel attribut, comme 'data' ?''' | * '''Pourquoi utiliser un élément 'empty' ? Pourquoi ne pas produire un nouvel attribut, comme 'data' ?''' | ||
Line 309: | Line 464: | ||
--> | --> | ||
* [http://visitmix.com/labs/oomph/2.0/tests/test.html Test Harness For Oomph] Cette page utilise toute une gamme de différents patterns pour à la fois hCard et hCalendar, en utilisant à la fois value et value-title, la plupart dérivée de l'application ci-dessus. | |||
* Le [http://georgebrock.com/ flux d'activité de George Brocklehurst] et son [http://blog.georgebrock.com/ blog] utilisent "value-title" pour la propriété <code>published</code> de hAtom | * Le [http://georgebrock.com/ flux d'activité de George Brocklehurst] et son [http://blog.georgebrock.com/ blog] utilisent "value-title" pour la propriété <code>published</code> de hAtom | ||
* [http://ben-ward.co.uk/ La page personnelle de Ben Ward] utilise : | * [http://ben-ward.co.uk/ La page personnelle de Ben Ward] utilise : | ||
Line 329: | Line 485: | ||
--> | --> | ||
* [[Oomph]] Version 2 passes [[value-class-pattern-tests#Date_and_time_values|Date and time values test cases]] and is a thorough implementation of the value class pattern. | |||
* [[X2V]] v0.9.3 and later: | |||
** implements [[#Date_and_time_values|Date and time values parsing]], including am/pm time values | |||
*** thus passes [[value-class-pattern-tests#Date_and_time_values|Date and time values test cases]]. | |||
** implements [[#hCalendar_dtend_implied_date|hCalendar implied dtend date]] | |||
* [[Operator-fr|Operator]] a *quelque* implémentation du modèle-classe-value selon Michael Kaply, mais plus précisément savoir à quel degré c'est implémenté, pour quelles propriétés (types de propriétés) et quels microformats n'est actuellement pas connu. | * [[Operator-fr|Operator]] a *quelque* implémentation du modèle-classe-value selon Michael Kaply, mais plus précisément savoir à quel degré c'est implémenté, pour quelles propriétés (types de propriétés) et quels microformats n'est actuellement pas connu. | ||
* [[Optimus]] v0.8 and later implements <code>value-title</code> as [http://twitter.com/DmitryBaranovsk/status/1891253248 announced by Dmitry Baranovskiy]. | |||
* ... ajoutez vos implémentations qui parsent ou génèrent le modèle-classe-calue ici, avec les fonctionnalités que vous supportez (nous l'espérons toutes !) et notez toutes les limites s'il y en a. | * ... ajoutez vos implémentations qui parsent ou génèrent le modèle-classe-calue ici, avec les fonctionnalités que vous supportez (nous l'espérons toutes !) et notez toutes les limites s'il y en a. | ||
== Articles == | |||
Articles and <span id="Blog_Posts">blog posts</span> discussing the value class pattern, most recent first. | |||
When this section gets too big, create a separate page like: [[value-class-pattern-articles]] | |||
* <span class="hentry"><span class="published">2009-08-25</span> <span class="entry-summary">MIX Online: <span class="entry-title">[http://visitmix.com/Articles/The-Value-Class-Pattern The Value Class Pattern]</span></span> by <span class="author vcard"><span class="fn">Jeremy Keith</span></span></span> | |||
* [http://ablognotlimited.com/s/106 Getting Semantic With Microformats, Part 8: Value Class Pattern] -- A very thorough writeup by Emily Lewis on the value class pattern | |||
* [http://adactio.com/journal/1579/ 2009-05-17 Adactio: Microformation] | |||
* [http://forabeautifulweb.com/blog/about/value_class_pattern/ For A Beautiful Web: Value Class Pattern] | |||
* [http://microformats.org/blog/2009/05/12/value-class-pattern/ 2009-05-12 microformats.org: Value Class Pattern] | |||
==Pages en Rapport== | ==Pages en Rapport== | ||
Cette section est '''informative'''. | Cette section est '''informative'''. | ||
* [[value-class-pattern-tests]] | |||
* [[value-excerption-pattern-issues]] | * [[value-excerption-pattern-issues]] | ||
* [[hcard-fr#Extraction_de_Valeur|hCard : Extraction de Valeur]] | * [[hcard-fr#Extraction_de_Valeur|hCard : Extraction de Valeur]] | ||
* [[value-excerption-pattern-brainstorming]] | * [[value-excerption-pattern-brainstorming]] | ||
* [[machine-data-fr|Machine Data in Microformats]] | * [[machine-data-fr|Machine Data in Microformats]] | ||
== Références == | |||
Cette section est '''informative'''. | |||
* [http://www.useit.com/alertbox/9608.html Jakob Nielsen: International Web Usability] |
Revision as of 13:14, 27 August 2009
<entry-title>Modèle de Classe Value</entry-title>
Le modèle de classe "value" provient de l'extraction de valeur dans la hCard.
Les auteurs pensent que le modèle-de-classe-value est désormais complet et prêt à l'emploi pour le balisage. Les implémenteurs sont encouragés à mettre leurs sites à jour et fournir un feedback. Remarque, le comportement précis du parsage pourrait être modifié en réponse aux feedbacks des implémenteurs, mais les méthodes sont stables. Vous devriez suivre cette page pour les mises à jour.
Voir aussi, l'annonce sur le blog (à traduire).
- Editeurs
- Ben Ward
- Tantek Çelik
- URL raccourcie
- http://tr.im/ClasseValue
- Traduction en cours
- Christophe Ducamp
Parfois, seule une partie d'un élément de contenu doit être utilisée comme la valeur d'une propriété d'un microformat.
Ceci peut arriver quand une propriété a des sous-propriétés optionnelles, telles que tel: type
et tel: value
dans la hCard.
D'autres fois, la structure la plus appropriée pour une propriété peut inclure d'autre contenu.
A ces fins, le nom spécial de classe value
est utilisé pour marquer l'extraction pertinente de la donnée provenant d'un élément de contenu plus grand.
Exemples Simples
Voici le marquage pour un numéro de téléphone de domicile :
fragment vCard :
TEL;TYPE=HOME:+1.415.555.1212
fragment hCard :
<span class="tel">
<span class="type">Home</span>:
<span class="value">+1.415.555.1212</span>
</span>
Dans ce cas, la value
de tel
est +1.415.555.1212
, et non pas Home: +1.415.555.1212
.
Parfois, la valeur pour une propriété microformats doit être découpée en plusieurs morceaux dans le contenu de l'élément représentant cette propriété. Plusieurs éléments avec un nom de classe "value" (les éléments value) peuvent être utilisés pour extraire et concaténer ces morceaux en une valeur unique pour les propriétés microformats qui attendent des chaînes simples ou des valeurs tel.
Un autre exemple, cette fois-ci utilisant un numéro de téléphone localisée (France) :
<span class="tel">
<span class="type">Home</span>:
<span class="value">+33</span> (0) <span class="value">1 42 31 23 23</span>
</span>
Dans ce cas, la data valide pour le numéro de téléphone est +33142312323, mais la façon dont le numéro de téléphone est présenté en France inclura le (0), pour un appel local. Ce qui veut dire, qu'à partir de n'importe où dans le monde vous pouvez composer +441423123123, ou à partir de la France vous pouvez composer 0142312323. La publication locale communément utilisée interfère avec la donnée, parce que composer +330142312323 est un numéro invalide.
Dans le marquage, deux classes value
ciblent la partie de la chaîne du numéro de téléphone qui produit un numéro international valide, tout en permettant une présentation conventionnelle.
Un autre exemple, ajouter un nom de lieu à des coordonnées geo :
<p>Je flâne dans Montmartre rue Junot
<span class="geo">
48° 53' 16.3206", 2° 20' 5.9712"
(<span class="value">48.887867;2.3349922</span>)
</span>
</p>
Alors que la chaîne complète est un point geo, c'est seulement les coordonnées encodées en décimales qui doivent être consommées par un analyseur de microformats,
ainsi la classe value
l'isole de la forme en degrés, que l'auteur a inclus pour plus de complétude.
Analyse Fondamentale
- L'exemple de classe value ne s'applique uniquement qu'aux propriétés qui sont de simples chaînes, des valeurs énumérées, des numéros de téléphone et des dates-heures. L'exemple de classe value n'affecte pas l'analyse des propriétés de type email, URL, URI, UID.
- Là où un élément avec un tel nom de propriété de classe microformat a un descendant avec un nom de classe
value
(un élément "value"), les parseurs devraient utiliser la portion suivante de cet élément :- si l'élément value est un élément
img
ou un élémentarea
, utiliser alors la valeur d'attribut dualt
de l'élément. - si l'élément value est un élément
abbr
, utiliser alors la valeur d'attribut dutitle
de l'élément. - pour tout autre élément, utiliser son texte à l'intérieur.
- si l'élément value est un élément
- Là où il y a plusieurs descendants d'une propriété avec un nom de classe de
value
(plusieurs éléments value)- si la propriété microformats attend une chaîne simple, une valeur énumérée ou un numéro de téléphone, alors les valeurs extraites des éléments value devraient être concaténées sans insérer de caractères supplémentaires ou d'espace-blanc.
- si la propriété microformats attend une valeur datetime, voir la section Analyse Date et heure.
- Les descendants avec la classe
value
ne doivent pas être analysées plus profondément qu'à un niveau. Ce qui veut dire, là où il y a un élémentfoo
avec la classevalue
qui a un descendant bar
avec la classe value
, le contenu de foo
est pris comme la value
.
L'imbrication d'éléments supplémentaires avec la classe value
ne peut pas être utilisé pour isoler plus en profondeur une value de propriété.
par ex.
<p class="description">
<span class="value">
<em class="value">Puppies Rule!</em>
<strong>But kittens are better!</strong>
</span>
</p>
Dans cet exemple, description
a un enfant ‘value
’, et cet enfant a une ‘value
’ petitenfant.
Néanmoins, l'analyse des classes value
s'arrête au premier niveau, ainsi la data pour description
est :
<em class="value">Puppies Rule!</em><strong>But kittens are better!</strong>
, pas simplement Puppies Rule!.
Valeurs Date et heure
Quelques propriétés microformats attendent une valeur datetime ISO8601, par ex. hCalendar dtstart
et dtend
ou hAtom published
.
Les auteurs peuvent utiliser le modèle de classe value pour spécifier séparément la date et l'heure, qui sont alors combinés pour spécifier une valeur unique datetime.
Exemple : cette propriété hCalendar 'dtstart' avec des éléments 'value' :
<p>La rencontre "afterwork" aura lieu
<span class="dtstart">
<abbr class="value" title="2009-05-19">ce Mardi</abbr>
à <span class="value">19:30</span>
</span>
</p>
Produit la valeur 'dtstart' suivante :
et les convertisseurs iCalendar produisent le DTSTART suivant :
DTSTART:20090519T193000
L'absence d'une "timezone" indique une "datetime" "flottante", qui est une date-heure indépendante de tout fuseau horaire particulier. Des exemples de datetimes flottantes pourraient être une alarme de réveil que vous paramétrez pour sonner à 8h00, ou un jour de travail ordinaire comme 9h00-17h00.
Analyse Date et heure
Pour toutes les propriétés date et heure (comme définies dans leurs spécifications respectives microformats), les règles suivantes s'appliquent en plus de celles (et dans certains cas les remplacent) des règles de modèles de parsage de classe value vues au-dessus.
Quand un élément "value" est trouvé, parsez une valeur à partir de l'élément comme suit :
- si l'élément est un élément
img
ou un élémentarea
, utiliser alors la valeur d'attributalt
de l'élément. - si l'élément est un élément
abbr
, utiliser alors la valeur d'attributtitle
de l'élément. - pour tout autre élément, utiliser son texte à l'intérieur.
- si la valeur a à la fois une date spécifiée ISO8601 et une heure spécifique, utilisez ceux-ci et arrêtez de chercher des éléments "value".
- si la valeur a *seulement* une date spécifique, spécifiquement, correspondant aux modèles de dates suivants ISO8601 (c.a.d. tels que documentés dans le résumé Wikipedia de ISO8601)
- AAAA-MM-JJ
- AAAA-JJJ
- alors utiliser cela comme la valeur de date. Pour les besoins du modèle de classe value, les tirets "-" séparant les années, mois, jour et/ou jour ordinal sont requis.
- ignorer tous les éléments complémentaires "value" qui spécifient la date.
- si la valeur a *seulement* une heure spécifique (avec ou sans fuseau horaire), parsez la pour une valeur time qui puisse correspondre à tout ce qui suit :
- HH:MM:SS-XX:YY
- HH:MM:SS+XX:YY
- HH:MM:SS-XXYY
- HH:MM:SS+XXYY
- HH:MM:SSZ
- HH:MM:SS
- HH:MM-XX:YY
- HH:MM+XX:YY
- HH:MM-XXYY
- HH:MM+XXYY
- HH:MMZ
- HH:MM
- HH sont les "heures" en 24 heures dans le temps, de 00 à 24, avec un 0 optionnel placé devant pour les valeurs inférieures à 10.
- MM sont les minutes de 00 à 59
- SS sont les secondes optionnelles de 00 à 59 (60 pour une seconde). Si omis, inférez 00 secondes.
- XX est le décalage horaire du fuseau, de 00 à 12, avec un 0 en tête optionnel pour les valeurs inférieures à 10
- YY est le décalage en minutes du fuseau horaire, de 00 à 59, même si en pratique ne sont utilisés que des décalages de 00, 15, 30, 45 minutes dans les fuseaux horaires globaux.
- Z est le 'Z' littéral pour indiquer GMT.
- Pour les besoins du modèle de classe value, les deux points ":" séparant heure, minutes et secondes sont requis.
- Néanmoins les deux points ":" séparant les heures et minutes de tout décalage horaire sont "optionnels" et non recommandés afin de faire en sorte qu'une indication de fuseau horaire ne soit pas confondue avec un horaire.
- A l'étude : un suffixe non sensible à la casse { }"am"|{ }"a.m." pour traiter une valeur HH value de 12 comme 00, ou un suffixe non sensible à la casse { }"pm"|{ }"p.m."pour ajouter 12 à une valeur HH inférieure à 12 - selon l'article de Wikipedia sur l'horloge de 12 heures. Note : X2V a implémenté cela.
- HH:MM:SSam
- HH:MM:SSpm
- HH:MMam
- HH:MMpm
- HHam
- HHpm
- où "am" et "pm" veulent dire "am ou a.m." et "pm or p.m."
- quand MM est omis, inférer 00 minutes.
- ignorez tous les autres éléments "value" qui spécifient l'heure.
- si la valeur a *seulement* une date-heure spécifique, ou une valeur de zone horaire qui corresponde à n'importe quelle valeur suivante :
- -XX:YY
- +XX:YY
- -XXYY
- +XXYY
- -XX
- +XX
- Z
- XX est le décalage en heures du fuseau horaire, de 00 à 12 avec un 0 optionnel en avant pour les valeurs inférieures à 10.
- YY est le décalage en minutes de la zone horaire, de 00 à 59, bien qu'en pratique seuls les décalages de 00, 15, 30, 45 minutes soient utilisés dans les zones horaires globales.
- Z est le 'Z' littéral pour indiquer GMT.
- ignorez tous les autres éléments "value" qui spécifient la timezone.
Si en parsant les éléments "value", au moins une date spécifique est trouvée, alors la "value" est par dessus-tout valide, et le parseur assemble la valeur datetime en concaténant la date spécifique, "T" et l'horaire spécifique (si l'heure a été spécifiée, avec 00 secondes implicite si aucune seconde n'est fournie), et une timezone spécifique (si la timezone et l'horaire spécifique ont été spécifiés).
- AAAA-MM-JJ - aucun horaire spécifié
- AAAA-MM-JJTHH:MM:SS - heure spécifiée mais pas de timezone. C'est une heure flottante.
- AAAA-MM-JJTHH:MM:SS-XXYY ou
- AAAA-MM-JJTHH:MM:SSZ ou
- AAAA-MM-JJTHH:MM:SS+XXYY - à la fois l'heure et la timezone ont été spécifiées
Les convertisseurs iCalendar doit faire en outre ce qui suit :
- supprimer tous les séparateurs tiret "-" dans la date.
- supprimer tous les sépérateurs deux points ":" separators dans l'horaire.
- exécuter un calcul datetime sur toute valeur timezone relative +/-, et produire une valeur UTC terminant par "Z".
Les convertisseurs Atom doivent en outre faire ce qui suit :
- normaliser toutes les valeurs date et datetime selon la RFC 3339.
dérivation et tests
Le comportement des valeurs date et time dans le modèle de classe value a été intialement brainstormé sur la page value-excerption-pattern-brainstorming et dérivé à partir de cette analyse et des retours. Pour les curieux, les détails historiques peuvent être trouvés là, avec des idées complémentaires pour les extensions.
Voir value-class-date-time-tests pour des cas de tests.
optimisations spécifiques des formats
The following are format specific optimizations under strong consideration that make use of the value-class-pattern. Note: X2V has implemented this for hCalendar.
- short URL for this section
- http://tr.im/vcpfso
hCalendar date dtend implicite
Typically events that start and end the same day only display the date of the event once (makes sense per the DRY principle) (real world examples: Upcoming, ... more examples with URLs would help for thoroughness).
Thus it would be convenient if we could imply an hCalendar event "dtend" date from its "dtstart" date when only the time (and optionally timezone) was specified for its "dtend", e.g.:
<span class="vevent">
The <span class="summary">party</span> will be on
<span class="dtstart">
<span class="value">2009-06-26</span>, from
<span class="value">19:00</span></span> to
<span class="dtend"><span class="value">22:00</span></span>.
</span>
To simplify this further for authors, hCalendar processors could treat the specifying of just the time per the value-class-pattern date and time value rules, and thus eliminate the need for the "value" span inside the "dtend" span:
<span class="vevent">
The <span class="summary">party</span> will be on
<span class="dtstart">
<span class="value">2009-06-26</span>, from
<span class="value">19:00</span></span> to
<span class="dtend">22:00</span>.
</span>
hCalendar to iCalendar converters should produce the following iCalendar fragment (as part of a valid .ics file) from either of the above two examples:
BEGIN:VEVENT
SUMMARY:party
DTSTART:20090626T190000
DTEND:20090626T220000
END:VEVENT
Note: X2V has implemented this.
Examples "in the wild":
- http://microformats.org/wiki/events/2009-08-12-nyc-workshop (real world example, but on this wiki).
hAtom date updated implicite
Similarly, in blog posts that indicate both when they were "published" and "updated", the date is usually only displayed once, typically when "published" (real world examples with URLs would help for thoroughness).
Thus it would be convenient if we could imply an hAtom entry "updated" date from its "published" date when only the time (and optionally timezone) was specified for its "updated", e.g. for a blog post that was updated the same day:
<span class="hentry">
<span class="entry-summary">short blog post example</span>
was published on <span class="published">
<span class="value">2009-08-01</span> at <span class="value">12:06</span></span>
and updated at <span class="updated"><span class="value">12:10</span></span>.
</span>
To simplify this further for authors, hAtom processors could treat the specifying of just the time per the value-class-pattern date and time value rules, and thus eliminate the need for the "value" span inside the "updated" span:
<span class="hentry">
<span class="entry-summary">short blog post example</span>
was published on <span class="published">
<span class="value">2009-08-01</span> at <span class="value">12:06</span></span>
and updated at <span class="updated">12:10</span>.
</span>
Parsing value from a title
attribute
The value-title
class name allows the publisher to indicate the data value for a parent property is contained in the title
attribute of an element, rather than the inner-text.
This can be used to provide a synonym within content, or used to quietly publish alternate forms of information for microformats parsing, without affecting the consumption of content.
For example, you can use casual localization with dates:
<p>It was
<span class='dtstart'>
<span class='value-title' title='2008'>last year</span>
</span>
that I realised my addiction to cashew nuts would cost this country so dear.
</p>
Parsing rules for value-title
are the same as for value
above, with the following change:
- Where a microformats property has a child element with class name of
value-title
, the content of thetitle
attribute of that element must be parsed, rather than the portion of the element that would be parsed for a class name ofvalue
.
Utilisation de value-title
pour publier des données-machines
The initial usage of value-title
is used to publish alternate, parsable forms of property values in a visible context without the use of the abbr
element whose semantics already support interpretation of the 'title' attribute as an expanded, more precise form of the content.
Experience has found that there are some cases in microformats where a number of publishers want to include a precisely accurate and parsable value for a property but do not want it to be visible in their page, even as a tooltip.
For example, full ISO8601 datetimes may be confusing to readers of the page (as a tooltip or when read aloud by a screen reader), and enumerated values such as the type
subproperty of hCard's tel
property use US-English terms, which are not part of pages in any other language.
Since both of those scenarios have shown to be obstacles for a number of publishers, for these cases, and these alone, there exists a further extension of value-excerption. This extension allows the parsable form of the property to be published ‘silently’ immediately adjacent with the respective local visible content.
Here is an example, with the required use of a first child element with class name value-title
:
<p class='tel' lang='en-gb'>
<span class='type'>
<span class='value-title' title='cell'> </span>
mobile
</span>
<span class='value'>+44 7773 000 000</span>
</p>
The cell value is parsed for the 'type' subproperty, but mobile is presented to the user.
In the case of dates:
<p class='dtstart'>
<span class='value-title' title='2009-03-14T16:28-0600'> </span>
March 14th 2009, around half-past four
</p>
A microformats parser will read the ISO8601 format datetime 2009-03-14T16:28-0600, but users will only see March 14th 2009, around half-past four. Testing has shown that the ISO8601 datetime above does not get exposed to any user at all.
Parser une valeur provenant d'un attribut title
Le nom de classe value-title
permet à l'auteur d'indiquer la donnée value pour une propriété parent contenue dans l'attribut title
d'un élément, plutôt que dans le texte à l'intérieur.
Ceci peut s'utiliser pour fournir un synonyme dans le contenu, ou utilisé pour publier tranquillement des formes alternatives d'information pour le parsage de microformats, sans impacter sur la consommation du contenu.
Par exemple, vous pouvez utiliser des localisations ponctuelles avec des dates :
<p>Ce fût
<span class='dtstart'>
<span class='value-title' title='2008'>l'année dernière</span>
</span>
que je pris conscience que mon addiction au tabac pourrait coûter très cher à la Sécurité Sociale.
</p>
Les règles de parsage pour value-title
sont les mêmes que celles pour value
au-dessus, avec le changement qui suit :
- Là où une propriété microformats a un élément enfant avec le nom de classe de
value-title
, le contenu de l'attributtitle
de cet élément doit être parsé, plutôt que la portion de l'élément qui devrait être parsé pour un nom de classe devalue
.
Utiliser value-title
pour publier des données-machines
L'usage initial de value-title
est utilisé pour publier des formes alternatives, parsables des valeurs de propriétés dans un contexte visible sans l'utilisation de l'élément abbr
dont la sémantique supporte déjà l'interprétation de l'attribut 'title' comme une forme plus étendue, plus précise du contenu.
L'expérience a montré qu'il existe quelques cas dans les microformats où un certain nombre d'auteurs veulent inclure une valeur précise et parsable pour une propriété mais ne veulent pas qu'elle soit visible dans leurs pages, ni même sous forme de petite bulle.
Par exemple le datetimes complet ISO-8601 peut être confus pour les lecteurs de la page (que ce soit sous forme de bulle ou quand c'est lu par un lecteur écran), et les valeurs énumérées telles que la sous-propriété type
de la propriété tel
de la hCard utilise des termes US-English, qui ne font pas partie de pages dans toute autre langue.
Le fait que ces scénarios se sont avérés être des obstacles pour un bon nombre d'auteurs, pour ces cas, et ceux-ci seulement, il existe une extension approfondie de l'extraction de valeur. Cette extension permet une forme parsable de la propriété pour être publiée 'en silence' et immédiatement adjacente avec le contenu visible local y afférent.
Voici un exemple, avec l'usage requis d'un premier élément enfant avec le nom de classe value-title
:
<p class='tel' lang='fr-fr'>
<span class='type'>
<span class='value-title' title='cell'> </span>
mobile
</span>
<span class='value'>+33 647 730 000</span>
</p>
La valeur cell est parsée pour la sous-propriété 'type', mais mobile est présenté à l'utilisateur.
Dans le cas de dates :
<p class='dtstart'>
<span class='value-title' title='2009-06-12T09:28-0600'> </span>
le 12 juin 2009, aux alentours de 9h30
</p>
Un analyseur de microformats lira le format datetime ISO8601 2009-06-12T09:28-0600, mais les utilisateurs ne verront que le 12 juin 2009, aux alentours de 9h30. Le test a montré que la datetime ISO8601 au-dessus n'est pas du tout présentée à quelque utilisateur.
Parsage donnée-machine value-title
Les navigateurs échouent sur le value-title
réduit à une largeur de span égale à 0
, en ne fournissant en fait aucun rendu visuel, tout en conservant l'élément dans le DOM. Sans dimensions physiques, il n'y a pas d'état 'hover', ainsi aucune infobulle n'est révélée. En outre, l'élément vide n'est pas passé aux couches de technologie assistives telles que VoiceOver. Les lecteurs écrans ne lisent pas les contenus de l'attribut title d'un élément vide span
.
Nous avons mené des tests approfondis de ces comportements de parsage pour assurer l'accessibilité.
Note : Bien que l'élément value-title
soit plus élégant à écrire sans texte à l'intérieur avec espace blanc (ou comme un élément <foo />
auto-fermé en XHTML), les outils actuels tels que les éditeurs WYSIWYG et HTML-Tidy se débarasseront par erreur de tels éléments, aboutissant à une donné parsable se faisant rejeter par quelques outils. Aussi, <span class='value-title'> </span>
, comprenant un caractère unique espace-blanc entre la balise d'ouverture et de fermeture, est à cette heure le modèle requis pour les auteurs.
Parser cette extension finale value-title
impose quelques restrictions plus strictes sur l'usage. Ces restrictions existent pour réduire l'impact des violations de DRY, pour réduire l'opportunité des sites à absorber les données, et pour encourager la bonne pratique de maintenir convenabelement ces deux formes de données.
Là où un élément avec la classe value-title
doit être parsé comme donnée pour une propriété, et que cet élément ne contienne aussi aucun contenu sans-espace-blanc (ici considéré en référence comme 'vide'), les règles suivantes s'appliquent :
- L'élément ‘vide’ value-title doit être le premier enfant sans espace-blanc de l'élément propriété. Ce qui veut dire qu'il devrait suivre imméidatement après la propriété déclarée, avant la forme lisibile-par-les-humains, et sans aucune autre imbrication supplémentaire.
- L'élément 'vide' value-title ne peut seulement être utilisé que pour des propriétés spécifiques. Les spécifications des microformats doivent explicitement déclarer quelles propriétés peuvent être utilisées avec cette extension du modèle-classe-value.
- Là où un élément 'vide' value-title doit être utilisé comme propriété unique de value, il doit être le seul comme contenu
value
. Ce qui veut dire, la première instance d'un élément conformevalue-title
surpasse toutes les autresvalue
etvalue-title
soeurs et/ou cousines. - Les outils écrits pour passer les Tests de Conformité et/ou Validation de Microformats devraient essayer de comparer les formes données-machines et visible-par-les humains des données de propriété, et conseiller les auteurs si les formes ne concordent pas.
Utilisation limitée de value-title
Du fait que le modèle value-title cache quelque quantité de donnée qui tend à être un duplicata spécifique-machine de donnée fournie dans le contenu lisibile par les humains, il y a deux principes microformats qui doivent être compromis : visibilité et DRY. Par conséquent, l'applicabilité de ce modèle est délibérément restreinte aux propriétés qui ont démontré à travers l'expérience un besoin de ce modèle, sans aucune autre alternative meilleure connnue.
En général, les auteurs devraient :
- Tout d'abord, essayer de spécifier directement les valeurs de propriété microformats dans la ligne (le plus visible, pas de duplication),
- Puis considérer d'utiliser le modèle de classe value
- Comprenant plusieurs éléments de 'value' pour les propriétés date et time
- et puis seulement si ces méthodes sont insuffisantes, considérer le modèle value-title.
Ce document post-date toutes les autres spécifications microformats, parce qu'elles peuvent ne pas indiquer à cette heure quelles propriétés permettent l'usage de ce modèle. Dans l'intervalle, seuls les types de propriétés suivantes devraient autoriser le modèle value-title.
- valeurs date, datetime, timezone et duration ISO8601
- Valeurs énumérées (tlles que les sous-propriétés 'type' tel/email/adr de la hCard)
- Les coordonnées (comme les propriétés 'latitude' et 'longitude' de geo)
- Les propriétés des numéros de téléphone (par ex. la propriété 'tel' de la hCard)
La page machine-data a de la documentation sur quelques-unes des propriétés de quelques spécifications pour lesquelles l'expérience a montré le besoin de solution comme le modèle value-title.
Il existe quelques exemples simples de références et tests pour ce modèle sur value-class-pattern-tests.
Pour un futur usage, les auteurs de spécification peuvent hériter de l'usage de value-title
par l'utilisation des formats de date et heures ISO8601, ou réutilisation d'autres microformats, mais les spécifications devraient éviter d'introduire de nouvelles structures de données qui dépendent ou encouragent ce modèle. Les nouvelles spécifications sont elles-mêmes attendues pour adhérer aux principes fondateurs de donnée visible et DRY.
Cas de Test
Voir value-class-pattern-tests.
FAQ
Cette section est informative.
Les questions souvent posées sur le modèle-classe-value. Une fois que cette section sera trop grosse, nous la migrerons sur une page wiki séparée (comme value-class-faq-fr).
- Pourquoi utiliser un élément 'vide' ? Pourquoi ne pas embarquer la donnée dans l'attribut de classe ?
- L'attribut de classe est inapproprié pour les valeurs de données embarquées, selon la spécification HTML4, qui établit que
class
est pour le ‘general purposing processing’, qui est défini comme ‘par ex. pour identifier des champs au moment d'extrire la donnée des pages provenant du HTML dans une base de données, traduire des documents HTML dans d'autres formats, etc.'. ‘General purpose processing’ ne s'étend pas à la donnée elle-même. En outre, cette méthode évite d'inventer une nouveau modèle de chaîne pour embarquer de la donnée.
- L'attribut de classe est inapproprié pour les valeurs de données embarquées, selon la spécification HTML4, qui établit que
- Pourquoi utiliser un élément 'empty' ? Pourquoi ne pas produire un nouvel attribut, comme 'data' ?
- Les microformats existent et fonctionnent en HTML4 et XHTML1 valide. Ceux-ci sont les standards actuels pour le développement web, et les microformats existent pour une utilisation maintenant. A l'avenir, peut-être que les futures révisions du HTML offriront une autre solution. A cette heure, cette méthode a été testé dans les navigateurs, et crée une structure de document cohérente (où les données formats-machines et lisibles-par-les-humains sont soeurs).
- L'attribut
title
ne devrait être utilisé que pour du contenu !- L'attribut
title
_est_ utilisé pour le contenu et se fait lire par les parseurs de microformats. Ceci existe pour les cas où la donnée ne peut pas être parsée avec suffisamment de précision provenant de ce que est communément publié, l'information visible. Ce modèle permet d'inclure les deux formes de contenu, tout en le maintenant invisible pour les consommateurs humains.
- L'attribut
Vous pouvez aussi vous référer aux FAQ Microformats générales et aux principes.
Exemples dans la jungle
Cette section est informative.
Les sites et pages suivants ont démarré par baliser le contenu avec le modèle de classe-value, et ce sont par conséquent de bons endroits pour aller voir des exemples de contenu du vrai monde pour tester les implémentations (par ex. les parseurs). Si vous utiliser le modèle-classe-value dans votre contenu, sentez-vous libre de l'ajouter en haut de cette liste. Une fois que la liste sera trop grosse, nous produirons une page wiki séparée (comme value-class-examples-in-wild).
- Test Harness For Oomph Cette page utilise toute une gamme de différents patterns pour à la fois hCard et hCalendar, en utilisant à la fois value et value-title, la plupart dérivée de l'application ci-dessus.
- Le flux d'activité de George Brocklehurst et son blog utilisent "value-title" pour la propriété
published
de hAtom - La page personnelle de Ben Ward utilise :
- "value-title" pour la propriété
bday
de hCard - "value-title" pour la propriété
updated
de hAtom
- "value-title" pour la propriété
- microformats.org utilise :
- "value-title" pour la propriété
updated
de hAtom dans [microformats.org les billets du blog]] - séparation des values date et time pour la propriété
dtstart
de hCalendar dans la page wiki microformats.org des événements récents et à venir
- "value-title" pour la propriété
Ajoutez vos site/page(s) qui utilisent le modèle-classe-value ici, avec une brève description des fonctionnalités du modèle-classe-value que vous utilisez, avec quel(s) microformat(s) et quelle(s) propriétés.
Implémentations
Cette section est informative.
Les implémentations suivantes ont été développées pour soit générér ou parser les valeurs de propriété du modèle-classe-value. Si vous avez une implémentation du modèle-classe-value, sentez-vous libre de l'ajouter en haut de cette liste. Une fois que la liste sera trop grosse, nous produirons une page wiki séparée (comme value-class-implementations).
- Oomph Version 2 passes Date and time values test cases and is a thorough implementation of the value class pattern.
- X2V v0.9.3 and later:
- implements Date and time values parsing, including am/pm time values
- thus passes Date and time values test cases.
- implements hCalendar implied dtend date
- implements Date and time values parsing, including am/pm time values
- Operator a *quelque* implémentation du modèle-classe-value selon Michael Kaply, mais plus précisément savoir à quel degré c'est implémenté, pour quelles propriétés (types de propriétés) et quels microformats n'est actuellement pas connu.
- Optimus v0.8 and later implements
value-title
as announced by Dmitry Baranovskiy. - ... ajoutez vos implémentations qui parsent ou génèrent le modèle-classe-calue ici, avec les fonctionnalités que vous supportez (nous l'espérons toutes !) et notez toutes les limites s'il y en a.
Articles
Articles and blog posts discussing the value class pattern, most recent first. When this section gets too big, create a separate page like: value-class-pattern-articles
- 2009-08-25 MIX Online: The Value Class Pattern by
- Getting Semantic With Microformats, Part 8: Value Class Pattern -- A very thorough writeup by Emily Lewis on the value class pattern
- 2009-05-17 Adactio: Microformation
- For A Beautiful Web: Value Class Pattern
- 2009-05-12 microformats.org: Value Class Pattern
Pages en Rapport
Cette section est informative.
- value-class-pattern-tests
- value-excerption-pattern-issues
- hCard : Extraction de Valeur
- value-excerption-pattern-brainstorming
- Machine Data in Microformats
Références
Cette section est informative.