Re: Decentralised extensibility idea (ISSUE-41)

On Fri, 15 Jan 2010 00:30:21 +0100, Toby Inkster <> wrote:

> This is a sketch of a proposal for decentralised extensibility (DE) in
> HTML5. If there is interest in it, I'll be happy to write it up as a
> change proposal, but I'd like to see what people think first.

I like the overall goal, because it is exactly like microdata. Comments  

> The class attribute has traditionally been used mostly by authors for
> their own purposes. That doesn't need to conflict with this solution, as
> I will later indicate a mechanism for documents to specify which
> otherspec(s) they are making use of.

Overloading the class attribute (like microformats) isn't a very good  
idea, it *will* clash with existing markup. The world doesn't end, but  
it's best to avoid, and in fact easy to avoid.

> So, how should one add custom attributes to otherspecs. We repurpose the
> data-* attributes:
>  <span class="Car" data-engine-size="1.8L"
>   data-colour="blue">Mazda</span>

What if the original markup were  
<tr><td>Mazda</td><td>1.8L</td><td>blue</td></tr> or any other form where  
the data being marked up is visible in the page?

> Currently the data-* attributes are reserved entirely for the author's
> private use. In this proposal, the definition of those attributes would
> be changed to allow otherspecs to assign particular meaning to data-*
> attributes, but only in the case where document authors have explicitly
> indicated which otherspec(s) they're making use of.

I don't think this is a very good idea, as data-* are always hidden and  
not suitable for marking up content that is visible in the page.

> So, my original XML-style <car/> element could be written as:
>  <span
>   profile=""
>   class="Car"
>   data-engine-size="1.8L"
>   data-colour="blue">Mazda</span>

<span itemscope itemtype="">
<span hidden itemprop="engine-size">1.8L</span>
<span hidden itemprop="colour">blue</span>

Of course your example and mine would be much better if the engine size  
and color were actually part of the page, e.g.

<tr itemscope itemtype="">
   <td itemprop="manufacturer>Mazda</td>
   <td itemprop="engine-size">1.8L</td>
   <td itemprop="colour">blue</td>

> An optional extra would be a DOM method
> getElementsByClassNameWithProfile(classname, profileuri) which return a
> collection of elements matching the provided class, but only if they
> were within the scope of a particular profile URI.

Microdata: document.getItems("")

As a side note, I'm not sure what kind of page one would find at in your example, but what is possibly  
missing from microdata is some formal way of describing the vocabulary to  
automate validation. I think it's premature to standardize anything  
though, experimentation is necessary.

Philip Jägenstedt
Core Developer
Opera Software

Received on Friday, 15 January 2010 09:07:05 UTC