From Microformats Wiki
Jump to navigation Jump to search


Ce document est destiné à conserver trace des réactions concernant le hListing, l'un des nombreux microformats.


SVP, utilisez ce format (copiez et collez ceci à la fin de la liste pour ajouter vos problématiques ; remplacez ~~~ par un lien externe si vous préférez) pour rendre compte des problématiques ou réactions :

<div class="vevent">
* {{OpenIssue-fr}} <span class="summary vcard"><span class="dtstart">AAAA-MM-JJ</span> soulevée par <span class="fn">~~~</span></span>
<div class="description">
*# Voici la première problématique/réaction que je rencontre.
*# Voici la seconde problématique/réaction que je rencontre.

Problématiques du Schéma


  • est-ce que class="item" fait partie de la spec ? Ce n'est pas clair dans la proposition.
  • si ce l'est, est-ce optionnel (comme dans le schéma) ou requis (comme sous-entendu par la section de l'item item métadonnées). Mon sentiment est que cela devrait être requis

-- DavidJanes 2006-11-18

Listing Action

  • "listing action" is another one that confuses me, is that two words, one word "listing-action" or just a tag with some of the recommended values... it is required, but i don't see it in action on edgeio.com or Dealtagger

-- BrianSuda 2006-11-18

  • I think the listing action semantics are all wrong. Actions should not be hidden in class attributes. These are not classes of data. The class of data is "listing-action". The action itself is content. I think <span class="offer rent">for rent</span> should be more like <abbr title="offer" class="listing-action">for</abbr> <span class="listing-aciton">rent</span> ScottReynen 20:52, 17 Apr 2007 (PDT)
  • I'm not convinced that this should be a tag; how many of the sites used as evidence have a link on the word "sale" or "wanted"? Whether or not it is a tag, the default value, if none is stated, should be "sale". Andy Mabbett 08:52, 8 Jan 2008 (PST)

Faire que les champs Info/Photo soient Optionnels

WordPress a un éditeur WYSIWYG génial qui vous laisse glisser et déposer des images. Mais la seule identification sémantique qu'il utilise est l'élément HTML <img>. Ainsi comment obtenons-nous qu'une photo soit identifiée à partir de toutes les images dans la description ?

1. éditer manuellement le HTML que WordPress crée et ajouter la classe. 2. Ajouter une autre IU doublant celle déjà utilisée par WordPress, sans drag & drop, strictement pour les images désignées comme des photos. 3. Taguer chaque image unique sous photo. 4. Faire que le crawler interprète chaque image unique comme une photo.

Je ne suis pas sûr que nous voulions pousser la complexité à la frontière, c'est comme demander aux gens de ne créer que des pages XHTML valides et ne pas restituer tout ce qui refuse de valider. Ceci est d'abord pour les humains, en second pour les machines. Si la complexité a besoin d'exister, ce ne devrait pas l'être dans les blogs, mais dans les crawlers.

-- Assaf Arkin


There should be no "MUST" rel attributes for permalink, since pages should not, for accessisbility and usability reasons, link to themselves (do those in the evidence do this?), and it may be desirable to wrap the relevant URL in a span, rather than an anchor. Andy Mabbett 09:33, 8 Jan 2008 (PST)


  • To allow for auctions, a "minimum price (i.e., the next permissible bid) and/ or "current-bid" is needed.
  • What about solicitations for an "offer"?

Info item

This should be called "location", taking a string or an hCard, as in hCalendar. Andy Mabbett 09:54, 8 Jan 2008 (PST)

Action par Défaut

je pense que c'est un bon format d'avoir un par défaut pour chaque champ obligatoire, parce quelqu'un là va laisser tomber n'importe quel champ donné obligatoire dans le champ des microformats. Dans cet esprit, la valeur par défaut pour l'annonce classée est l'offre, parce que les annonces "voulu" sont bien << 10% dans le vrai monde. Ce que je ne sais pas est ce que devrait être l'action par défaut ; la plus neutre d'entre elles est announce, ce que j'utilise dans mon parseur.

-- Rohit


Vendre et Louer sont des verbes assez évidents ; que veux dire Trade néanmoins, et Barter. Que penser des dons, comme les donations ou "libre pour recyclage" ? Devrions-nous remplacer Trade et offrir Donate à sa place ?

-- Rohit

Désir d'Hériter du Contexte

Quand cela vient au billet de blog, j'aimerais nous avoir adresser ce qui suit :

1. Less is more. Or in reverse, people are lazy, and the less fields they need to fill in order to sell a couch or find a date, the more they'll use the plugin. So I'm trying to visualize how this plays in with the user interface and how we can keep it as simple as possible.

2. DRY. We want to capture as much information as possible from what is already available in the blog post. We already have summary (title), listing date/time (post date/time), permalink, author information, tags/categories.

3. Keep it simple. And here I'm talking about setup and being able to extend your blog's functionality without too much fuss. This one is a bit more tricky, so I'll go into details.

WordPress uses templates to render the blog post. The template then calls the WordPress API to render the title, a second call to render the content, and another call to render any additional metadata (e.g. publish date, categories, author). These separate calls allow people to play with the formatting and apply any styling they like.

The way uPress works, is by processing the blog post before it goes back to the filter, creating the hEvent (to be: hListing) element around it, and adding any relevant fields into the blog post. So what you fill in the form, finds its way to the post content. As a result, setting up the plugin requires two steps: drop it to the plugins directory, and activate.

Unfortunately, I only get to process the content of the post. I can't easily include the title inside the hListing element, or any other metadata about the post, even though I have access to it. If I duplicate that information, the post stops being readable. And to wrap the entire post (not just body) inside a microformat element, I need to tweak the template. Except people use different templates, and I can't tweak all of them.

So the more context we use, the better the plugin becomes.

-- Assaf Arkin

Sur hReview

This draft was heavily influenced by hReview. That's a good thing. We don’t want to duplicate efforts; are learning from the mistakes of others; and converging on a cohesive set of specifications. I want to eventually add hReview and hCard to my plugin. So this strategy of borrowing from existing microformats helps me get it done quicker. It took me all of five minutes to leverage address formatting from hEvent.

But we also need to recognize that hReview could also be more blogging friendly. The specification is great, but the implementations are lacking. I think the reason is that hReview was designed for greenfield applications that specifically deal with emitting reviews. The design did not take into consideration applications that already deal with content, but want to supplement it with reviews, listings, etc. There's no mention of such consideration in the spec.

We want to appeal to the wide populace of bloggers who just want to get stuff done. Rather than put the burden on millions of bloggers out there, we should place the burden on the few companies developing crawlers.

What would Tantek say? I think he'd ask us to focus on use cases, real examples. I'm presenting one such example. The use case involves a blogger who just wants to sell something on their blog, with the minimum amount of effort and cognitive friction. They want the listing to be discovered, aggregated and searched by others.

-- Assaf Arkin

Nom Voisinage

With the exception of housing, most classified listings don’t contain a specific address (e.g., if I’m selling my couch, you don’t need to know where I live in the listing). Some location information, however, is important. In most suburban areas, the name of the town is sufficient. In cities, however, neighborhood is important and more contextually relevant than zipcode (simply a region defined by the post office).

This is a tough problem that needs to be solved but outside the context of this discussion. We think there are other cases the could benefit from it, including hReview and hEvent. We recommend that this debate be surface in the adr microformation discussion (e.g., perhaps extend the locality field (city) to optionally include a neighborhood)

-- Craig Donato & Assaf Arkin

Listing Action, Listing Type, Item Type

We heavily debated how to classify a listing. Search engines or marketplaces typically need to understand what type of listing it is (e.g., personal ad, house for sale, music) to effectively reference or index a listing.

We initially considered proposing a single category field that contained tags (in addition to the tags field). Not only did this seem duplicative, it also seemed like too much of a good thing. In a previous project, Assaf managed to successfully overload everything into tags (including dates and locations), and run time-based and location-based searches, and ended up concluding it's a bad idea.

We eventually decided to propose the use three parametric field that when used together could define any type of listing independent of the words use to describe. These ended up being: listing-type (are you offering something or looking for something; listing-action (are you trying to sell, rent, or announce something); and item type (what item is referenced by the action such as a job opening, product, housing). By making small modifications to this vocabulary, users can specify an extremely wide range of potential transactions. This seemed more feasible given that the UI used to produce the hListing could abstract some of this from the user (as Assaf demonstrated in his demo plugin).

For example:

Desired Transaction Listing Type Listing Action Item Type
Merchandise For Sale Offer Sell Product
Looking to Buy Merchandise Wanted Sell Product
Selling Tickets Offer Sell Event
Apartment For Rent Offer Rent Housing
Looking for Apartment Wanted Rent Housing
Room for Rent (Roommate) Offer Rent Housing
Looking for a Date Offer Wanted Announce, Meet
Job Opening Offer Announce Opening
Looking for a Job (Resume) Wanted Announce Opening
Music Lessons Offer Service Business
Trade Couch for TV Offer Trade Product
Pet for Adoption Offer Announce Animal?

-- Craig Donato

Eliminate Item Type

Can we eliminate item type and simply use tags? Or perhaps inferred item type from the item info?


There are meanings of "listing" that wouldn't fit this format.. might not hClassified be a more descriptive name? It's not overconstraining... 'classifieds' being very broad in practice and the meaning very informally/functionally defined. Or has the 'listing' train left the station?

Que penser de la vente au détail ?

Retail is out of scope for hListing, sure -- but what microformat should a retail seller of (e.g. mass-produced) goods use? hForSale? hProduct?


Funnily enough, hProduct is always something that I've thought about.

I'd be bold enough to say that it will be one of the main uses of microformats in the future. Imagine the amount of shops, price comparison, product review and many more type of sites. It doesn't have to be for profit, it could just be someones product, on their site, that they are displaying.

I'd be willing to help and continue development of a spec for 'hProduct'.

Adam Craven

Classe Thumbnail

Hello. I'm not sure I understand everything correctly, but from reading the hListing proposal it seems that one should put pictures of the listed subject into the "photo" class. I'm wondering if also we may wish to have a "thumnail" class or perhaps something like "photo-thumbnail" to denote thumbnail images. -Andrew


Perhaps to foster development of this type, someone (who knows a lot more about microformats than I) should put a validator type page out there. I realize that microformats, by their nature are a loose specification (it's not as strict as validating say an XML rss feed). But having something that I can use to at least verify that what I'm coding is actually recognized as an hListing by someone other than myself would be very helpful. -Andrew

Blogmatrix have added hListing to their microformats parser here -d4rr3ll

Extraction of hProduct

I think it would be wise to extract product information into hProduct and simply maintain the listing for listing-specific data (such as actual price/suggested price, location, timeframe, etc.).

Also, regarding price, I think going with the currency microformat makes sense, but I also think there should be specifics around the type of price being shown. For instance, there is a MSRP which is tied to the product (and should be in hProduct), then there is the asking price (or in the case of cars, the dealer invoice, sticker price, etc.). Perhaps going the route of

<p class="price actual money">
  <abbr class="currency" title="USD">$</abbr>3.00

would make more sense? - Aaron Gustafson

Use for Microphilanthropy and Volunteer listings

Adding 'Donate', as Rohit suggested, would open up hListing for use by microphilanthropy sites like www.Kiva.org or www.DonorsChoose.org (I work there.) See here for an example of one of our listings:


So an organization seeking a donation would format it Listing Type: Wanted, Listing Action: Donate, Listing Item: Cash

Someone looking to donate an old PC would format it Listing Type: Offer, Listing Action: Donate, Listing Item: Product

An organization trying to find a volunteer would have Listing Type: Wanted, Listing Action: Donate, Listing Item: Service

Note that some organizations (like Kiva) are doing microloans, instead of microphilanthropy. So in addition to Sell, Rent, Trade, Meet, Announce, and Donate, "Loan" would be useful as a Listing Action. (Could also be useful for facilitating borrowing relationships of items.)

One other addition to hListing that might be useful in this context is Cost. In a commercial setting (say, you're trying to sell a used item on eBay), Cost would represent what you paid for the item. So Price - Cost would get you the markup (or markdown). In a philanthropic context, Cost would represent the cost to make a project happen. If the project were already partially funded, then Price < Cost, and Price / Cost would give you the % remaining to completely fund that project. (Many microphilanthropy sites bundle lots of donations to make up one project.)

-- Mike Everett-Lane