[whatwg] Microdata

Philip Jägenstedt philipj at opera.com
Mon Aug 24 12:37:13 PDT 2009

On Sat, 22 Aug 2009 23:51:48 +0200, Ian Hickson <ian at hixie.ch> wrote:

> Based on some of the feedback on Microdata recently, e.g.:
>    http://www.jenitennison.com/blog/node/124
> ...and a number of e-mails sent to this list and the W3C lists, I am  
> going
> to try some tweaks to the Microdata syntax. Google has kindly offered to
> provide usability testing resources so that we can try a variety of
> different syntaxes and see which one is easiest for authors to  
> understand.
> If anyone has any concrete syntax ideas that they would like me to
> consider, please let me know. There's a (pretty low) limit to how many
> syntaxes we can perform usability tests on, though, so I won't be able to
> test every idea.

I've found two related things that are a bit problematic. First, because  
itemprops are only associated with ancestor item elements or via the  
subject attribute, it's always necessary to find or create a separate  
element for the item. This leads to more convoluted markup for small  
items, so it would be nice if the first item and itemprop could be on the  
same element when it makes sense:

<p item="vevent" itemprop="description">
   Concert at <span itemprop="dtstart">19:00</span> at <span  
itemprop="location">the beach</span>.

rather than

<p item="vevent">
   <span itemprop="description">
     Concert at <span itemprop="dtstart">19:00</span> at <span  
itemprop="location">the beach</span>.

Second, because composite items can only be made by adding item and  
itemprop to the same element, the embedded item has to know that it has a  
parent and what itemprop it should use to describe itself. James gave the  
example of "something like planet where each article could be a  
com.example.blog item and within each article there could be any arbitrary  
author-supplied microdata" [1]. I also feel that the item+itemprop syntax  
for composite items is one of the least intuitive parts of the current  
spec. It's easy to get confused about what the type of the item vs the  
itemprop should be and which item the itemprop actually belongs to.

Given that flat items like vcard/vevent are likely to be the most common  
use case I think we should optimize for that. Child items can be created  
by using a predefined item property: itemprop="com.example.childtype  
item". The value of that property would then be the first item in  
tree-order (or all items in the subtree, not sure). This way, items would  
have better copy-paste resilience as the whole item element could be made  
into a top-level item simply by moving it, without meddling with the  
itemprop. If the parent-item (com.example.blog) doesn't know what the  
child-items are, it would simply use itemprop="item".


<p item="vcard" itemprop="n item">
   My name is <span itemprop="given-name">Philip</span>
   <span itemprop="family-name">Jägenstedt</span>.

I'll admit that my examples are a bit simple, but the main point in my  
opinion is to make item+itemprop less confusing. There are basically only  
3 options:

1. for compositing items (like now)
2. as shorthand on the top-level item (my suggestion)
3. disallow

I'd primarily like for 1 and 2 to be tested, but 3 is a real option too.

[1] http://krijnhoetmer.nl/irc-logs/whatwg/20090824#l-375

Philip Jägenstedt
Opera Software

More information about the whatwg mailing list