OPML Outline Processor Markup Language
An XML-based format developed by UserLand Software that allows the import/export (exchange) of a list of feeds (outline structure information).
As defined in the OPML specification, the extension mechanism of OPML is unusual: Implementors may add new attributes to an OUTLINE element simply by giving its TYPE attribute a previously unused value that describes its purpose.
Here are some examples of an OUTLINE element's attributes being used to add new attributes and customize the OPML data for a particular use:
An RSS subscription in OPML (type="rss"):
<outline text="Daring Fireball" description="Macintosh punditry and curmudgeonry." htmlUrl="http://daringfireball.net/" language="unknown" title="Daring Fireball" type="rss" version="RSS" xmlUrl="http://daringfireball.net/index.xml"/>A link in an OPML bookmark directory (type="link"):
<outline text="Rocklopedia Fakebandica" type="link" url="http://www.vgg.com/tp/tp_080700_fakeband.html"/>
A song in OPML (type="remotesong"):
<outline text="Graham Parker - Success" album="The Mona Lisa's Sister" artist="Graham Parker" song="Success" type="remoteSong" whenPlayed="Mon, 03 Feb 2003 23:41:45 GMT"/>TYPE is being used like a namespace, letting OPML consumers know what to look for in the attributes of an OUTLINE element.
Although this extension mechanism makes it impossible to validate OPML, it should be possible to create profiles and DTDs for each of the known types.
[KennethLeFebvre] I agree with changing OPML to make it more consistent with generally accepted conventions of XML. After a brief visit to the OML site, it seems like a reasonable alternative to me.
[DannyAyers] The question is, what do we need it for? For holding blogrolls I'd suggest something more purpose-built, such as a particular kind of Containers or OCS. If we have a good SyntaxExtensionMechanism then the kind of crude containership OPML provides will be redundant.