OPML (
Outline Processor Markup Language) is an
XML format for outlines (often
blogrolls). Originally developed by
Radio UserLand as a native file format for an
outliner application, it has since been adopted for other uses, the most common being to exchange lists of
web feeds between web feed
aggregators.
The OPML specification defines an outline as a hierarchical, ordered list of arbitrary elements. The specification is fairly open which makes it suitable for many types of list data.
XML format
The XML elements in an OPML document are:
<opml version="1.0"> : This is the root element. It must contain the version attribute and one
head and one
body element.
<head> : Contains
metadata. May include any of these optional elements:
title,
dateCreated,
dateModified,
ownerName,
ownerEmail,
expansionState,
vertScrollState,
windowTop,
windowLeft,
windowBottom,
windowRight. Each element is a simple text element.
dateCreated and
dateModified contents conform to the date-time format specified in
RFC 822.
expansionState contains a comma-separated list of line numbers that should be expanded on display. The
windowXXX elements define the position and size of the display window. An OPML processor may ignore all the
head sub-elements. If the outline is opened inside another outline then the processor must ignore the window elements.
<body> : Contains the content of the outline. Must have at least one
outline element.
<outline> : Represents a line in the outline. May contain any number of arbitrary attributes. Common attributes include
text and
type. The outline element may contain any number of
outline sub-elements.
Shortcomings of OPML
- The RFC 822 date format is considered obsolete, and amongst other things permits the representation of years as two digits. (RFC 822 has been superseded by RFC 2822.) In general, date and time formats should be represented according to RFC 3339.
- Because "expansionState" is recorded independently of the outline elements:
- * The expansion state of the children of collapsed nodes cannot be stored
- * When an outline element is expanded, collapsed, added, deleted or moved, the expansion state of all elements below it must be recalculated
- Due to the arbitrary nature of the "type" attribute, and the acceptance of arbitrary attributes on "outline" elements, interoperability of OPML documents relies almost entirely on the undocumented conventions of content producers.
- MIME types aren't clear; text/xml usually merely identifies the document as having XML content, while text/x-opml does not specify that the document is XML since it lacks the +xml suffix (see XML and MIME).
Validating OPML
Dave Winer has made a request for comments on a and released a beta .
Katy Ginger from DLESE has published for validating OPML 2.0. There is also a .
Example OPML documents
Alternative specifications
Alternative specifications have been proposed, notably these include
OML,
XOXO and
XBEL.
See also
- XOXO - Extensible Open XHTML Outlines
- XBEL - XML Bookmark Exchange Language