OPML is a simple, widely used, yet often misunderstood, XML format created by Dave Winer. IMHO, misunderstandings stem from overexposure to traditional ways of using XML. I must admit, I also laughed at OPML when I first looked at it years ago. But when I cocked my head (a technique anyone can learn from their dogs), it began to make a lot of sense.
This is what I saw:
- An OPML document is a collection of objects.
- An object may have properties and contents.
- An object's properties are unordered map of name/value pairs.
- An object's contents are ordered list of objects.
- Objects are encoded as XML elements named 'outline'.
- Properties are encoded as XML attributes.
- Content objects are encoded as child XML elements.
Once you get this picture in your mind, you start to appreciate OPML more. Throw in display and interaction semantics builted into the format along with distributed object linking and embedding Dave often raves about and you got quite a beast of a language.
As to the question of who defines the properties, the answer is everybody does. OPML is a kind of Emergent Markup Language in that common properties are expected to emerge through industry practices rather than standardization through committees.
There are some shortcomings with OPML though which I would like to see addressed.
OPML needs a wiki for OPML developers to interact with each other and to document how each of them are using OPML so that standard or type-specific properties may emerge.
One weakness of XML is that, while elements may be structured, attributes may not. Since properties are encoded as XML attributes in OPML, (semi) structured properties (i.e. HTML fragments) have to be encoded at the cost of readability.
I think the need for a wiki is far more serious than the need for structured property support.