What is OPML?
XML format from DaveWiner, former CEO of Userland
OPML stands for "Outline Processor Markup Language" and is used in a number of applications, foremost of which are ManilaApp and RadioUserland.
Some links
How is it used?
In ManilaApp, OPML can be used to represent slides and outlines that can be rendered into HTML. For a while, I was editing my Manila sites via RadioUserland, creating my entries as outlines that then get rendered into HTML. I stopped doing that because I sometimes wanted to edit my entries through a browser -- and editing XML through a browser is not usually a fun thing to do.
OPML is getting more interesting because it's being used outside of Userland to present blog subscription lists and BlogRolls. RadioUserland generates a subscription list
List of
Tools that support OPML -- the list doesn't list SharpReader at this point.
Crosswalk work with OPML
Uchida scrapbook in OPML,
rendered in my blog rendered as a "Manila directory"
Problems with OPML
I want to use OPML because it is something understood by the a number of tools including
BlogRolling.com, etc. However, the format has problems. First of all, it's not tightly defined enough to keep people from creating mutually incompatible data they all call OPML but might not be OPML.
MarkPilgrim's
Investigating OPML provides a good critique of OPML:
-
So as far as I can tell, OPML is XML that isn’t really XML, has (but doesn’t use) a DTD that isn’t really a DTD, and can only be properly defined as "whatever Userland’s tools happen to accept at the moment".
Here ends my one and only foray into OPML.
Part of the problem is that there doesn't seem to be an official DTD. Is
OPML DTD an official one? How about
this one (with its
accompanying docs)?
There probably isn't one because if my memory serves me correctly, DaveWiner doesn't believe in DTDs for his XML specifications.
Even if there is a DTD, another problem is that OPML is supposed to allow for arbitrary attribute names in the outline element. As
Megnut shows in
No Extends! , this causes a lot of possible/actual confusion among developers wanting to use OPML.
I'm starting to see this problem. SharpReader inputs and outputs subscription lists as OPML. I exported mine and copied it to my wiki as RyRssSubscriptionList. However, when I try to render the OPML list with
{opmlBlogroll("http://raymondyee.net/wiki/RyRssSubscriptionList?action=raw",cssPrefix:"blogroll",recentlyUpdatedLinkPrefix:"",recentlyUpdatedLinkSuffix:"")}
I get the following Manila error:
[Macro error: Can't get the "version" attribute because the table doesn't an attribute with that name.]
Problem:
Manila's opmlBlogroll macro is expecting a version attribute in the opml element -- but SharpReader doesn't generate one. Who's fault is that? I guess SharpReader's since according to the OPML 1.0 spec, "<opml> is an XML element, with a single required attribute, version; a <head> element and a <body> element, both of which are required."
Another issue is that SharpReader uses a title attribute to list a blog entries -- which seems fine. But if I want to render my subscription list, using
OPML and XSLT and the W3XsltService to get
HTML with no text. If I transform the output from SharpReader to duplicate the text from the title attribute to the text attribute, then I can get the outline rendered. (Alternatively, I can edit the XSLT to get show the title attribute info.)
Furthermore, what is version 1.1 of OPML anyhow? As of 2003.10.07, that spec isn't on the Userland OPML site, as
noted by Rogers Cadenhead.
Another
good analysis of OPML and its problems on the AtomProject wiki
Useful OPML related resources
OPML and XSLT by
Joshua Allen is an incredibly useful resource. (Actually, is Netcrucible gone? I'm using InternetArchive to pull up
old version of documentation on OPML XSLT and
archived version of XSLT
Archiving Joshua Allen's XSLT, etc
Today (2003-10-10 17:15:00), when I tried to reach
OPML and XSLT, the pages were gone. Maybe this is temporary, but I'm going to archive some key pages by using InternetArchive.
-
www.netcrucible.com/xslt/opml_xslt.txt as /NetcrucibleCom/XsltFile
-
www.netcrucible.com/xslt/opml.js as /NetcrucibleCom/JavaScriptFile
-
www.netcrucible.com/xslt/opml.css as /NetcrucibleCom/CssFile
Alternatives
OML: Outline Markup Language (OML)
Why have a specialized language anyways says
Simon Fell
