[microformats-discuss] Evaulating RSS per the microformats principles.

Stephen Downes stephen at downes.ca
Sun Aug 14 19:08:34 PDT 2005


Hiya,

Just a note to try to clear up some misconceptions. Like this:

> But I can't use that RSS archive for anything. I can't read it (or  
> I'll have to add it to a subscription list to read it just once).  I 
> can't link to it. For it to be usable as an archive format RSS  
> readers will have to reinvent every aspect of the webbrowser -  with 
> an added RSS wrapper. That's more tha a little silly. 

This (and similar comments about what RSS "can't do") is simply false. 
Anything XHTML can do, RSS can do.

RSS is a type of XML (so is Atom, and all my comments apply to both 
equally). Crucially:

   RSS + XSLT = XHTML

And for that matter,

   XHTML + XSLT = RSS

So what's the difference? Specifically: XHTML uses elements (such as 
'p', 'h1', etc) that are interpreted automatically by your browser, 
while RSS uses elements (such as 'item','title', etc) that your browser 
requires XSLT in order to interpret. Today's browsers can all do this; 
they can easily display XML using XSLT (here is an example: 
http://www.downes.ca/news/OLDaily.xml ) but the kicker is, the XSLT 
declaration needs to be contained in the RSS file and the XSLT must be 
located in the same domain as the RSS (for the browser; on the server 
side, any XSLT may be applied without restraint).

*What this means* is that any XHTML definition of 'blog posts' should 
*map* to existing RSS (or Atom) elements.

IMHO, the easiest way to do it is to simply use divs (for channels and 
items) and spans (for internal elements), using either Atom or RSS to 
specify classes Here is an example using RSS:

   <div class="channel">
      <span class="title">My Blog</span>
      <a class="link">http://www.whatever.com</a>

      <div class="item">
         <span class="title">My Blog Post</span>
         <a class="link">http://www.whatever.com/post/1</a>
      </div>

   </div>

Why not use specialized XHTML, such as <h1> to indicate, say, blog post 
titles? Because *many* RSS files contain XHTML embedded in the 
'description' or 'content' elements. It is a virtual certainty that this 
usage conflict with any XHTML specifications for blog posts.

Now I should say, I do not consider the formulation given above to be a 
*micro* format. This is because this is a base into ehich microformats 
can be embedded.

In RSS (and Atom) we can think of microformats as extensions. For 
example, RSS allows a Dublin Core extension. Dublin Core is used to 
specify bibliographic metadata, such as author or publisher. Thus, for 
example, in RSS you can have:

   <item>
      ...
      <dc:publisher>McGraw-Hill</dc:publisher>
   </item>

Again, this should map to XHTML using classes:

      <div class="item">
         ...
         <span class="dc_publisher">My Blog Post</span>
      </div>

The other microformats discussed on microformats.org would be (should 
be) *embedded* in the items (or channels, as approrpiate). They *should* 
map, first, to existing RSS (or Atom) extnsions, and then, ultimately, 
to *proposed* RSS (or Atom) extensions (such both RSS and Atom are not 
as semantically rich as they should be).

For example:

      <div class="item">
         <span class="title">My Blog Post</span>
         <a class="link">http://www.whatever.com/post/1</a>
         <a href="http://technorati.com/tag/tech" rel="tag">tech</a>
      </div>

Another example, of post turned into a calendar item (using syntax as is 
currently at http://microformats.org/wiki/hcalendar ):

      <div class="item">
         <span class="title">My Blog Post</span>
         <a class="link">http://www.whatever.com/post/1</a>
         <span class="vevent">
             <a class="url" href="http://www.web2con.com/">
                  <span class="summary">Web 2.0 Conference</span>:
                  <abbr class="dtstart" title="2005-10-05">October 5</abbr>-
                  <abbr class="dtend" title="2005-10-07">7</abbr>, at 
the <span class="location">Argent Hotel, San Francisco, CA</span>
             </a>
         </span>
      </div>

This, in turn, would map back to RSS (roughly?) as follows:

      <item>
         <title>My Blog Post</title>
         <link>http://www.whatever.com/post/1</link>
         <hcal:hcal>
                  <hcal:dtstart title="2005-10-05">October 5</hcal:dtstart>
                  <hcal:dtend" title="2005-10-07">7</hcal:dtend>
                  <hcal:location>Argent Hotel, San Francisco, 
CA</hcal:location>
         </hcal:hacl>
      </div>

(I left out 'link' and 'simmary' from the hcal RSS example becvause they 
are redundant with the 'item' link and description and title.)

Anyhow, the *main* point here is that the RSS and the XHTML versions are 
fundamentally the same thing. For most systems, *both* are derived (via, 
eg., templating) from database contents. Items from both XHTML and RSS 
can be displayed individually or as a list in a channel. Archives may be 
expresswed as RSS or XHTML, no difference.

And the *secondary* point is that it is best to treat RSS channels and 
items as 'wrappers' into which other microformats are embedded; the 
exact combination of embedded microformats is what makes the item a 
'comment', a 'b log post', an 'event' or whatever.

With all of that said, my thoughts on RSS referencing for discussion 
lists and more, posted to RSS-DEV:
http://www.downes.ca/cgi-bin/website/view.cgi?dbs=Article&key=1122488147&format=full

And the concept and theory behind my remarks, a talk I delivered at a 
national metadata conference last week:
http://www.downes.ca/cgi-bin/website/view.cgi?dbs=Article&key=1123857153


-- Stephen

-- 

Stephen Downes  ~  Research Officer  ~  National Research Council Canada
http://www.downes.ca  ~  stephen at downes.ca         __\|/__ Free Learning

--



More information about the microformats-discuss mailing list