OPML (Outline Processor Markup Language) is an XML format for outlines (defined as "a tree, where each node contains a set of named attributes with string values"). Originally developed by UserLand as a native file format for the outliner application in its Radio UserLand product, 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.
Support for OPML is available in Mozilla Thunderbird and many other RSS reader web sites and applications, can both import and export OPML files of subscriptions.
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 then RFC 5322.) In general, date and time formats should be represented according to RFC 3339.
Due to the semantics of the "expansionState" attribute:
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).
Exporting your data from an OPML file to another format can't be done without coding: no free tools are available to convert an OPML file to HTML, and browsers such as Firefox and Internet Explorer cannot display an OPML file.