It's great to see that Dave Winer is working on an OPML Validator - this is a big help to aggregator developers who wish to ensure OPML import/export compatibility with each other, so my thanks to Dave for investing his time in this.
I have to confess that validating FeedDemon's OPML export has been an eye-opener. Although FeedDemon's OPML can be imported by every aggregator I've tested with, it still contained a few problems (all of which will be corrected in the next build).
I also tested FeedDemon's OPML import with the OPML exported by a wide array of other aggregators, and here are the most common problems I've found (some of which FeedDemon is also guilty of):
- Using the
textattribute for folder
<outline>nodes (see first observation below)
- Failing to include a
- Unescaped ampersands (
&) in the
- Failing to include
type="rss"on subscription list
xmlurl(lowercase 'u') instead of
- Likewise for
- Several aggregators expect
textas the identifying attribute on
<outline>nodes. For this reason, aggregators may wish to include both of these attributes in their OPML export for compatibility, even though doing so would cause the OPML to fail validation.
- The OPML Validator accepts XML that contains unescaped ampersands (test case).
- The OPML Validator accepts
<outline>nodes that come after a closed
<body/>element (test case).
- The OPML Validator treats unknown attributes as an error, but I believe they should be permitted if they're correctly namespaced. It would be nice to see namespaces "officially" supported, since an aggregator may wish to include per-feed information in its OPML export which isn't part of the spec but may be of use to other aggregators (ex: number of times the feed has been visited, the update frequency, unique ID in a service such as NewsGator or Bloglines, name and version of the aggregator which exported the OPML, etc.)
Update: The OPML validation guidelines have been updated to accommodate the observation about duplicating text/title.