[WWW]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=""
language="unknown" title="Daring Fireball" type="rss" version="RSS"
A link in an OPML bookmark directory (type="link"):
<outline text="Rocklopedia Fakebandica" type="link"

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.

See also [WWW]Revisions to OPML by RogersCadenhead, [WWW]Open Content Syndication (OCS).

[RabbleRouser] If we're going to avoid making the mistakes of the past, why not use [WWW]OML, which is to OPML what echo is to RSS?

[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 [WWW]OCS. If we have a good SyntaxExtensionMechanism then the kind of crude containership OPML provides will be redundant.

CategoryTool, CategorySyntax