It's worth noting that you can express hierarchies and everything else I've seen suggested for OPML (text outlines, links, images etc) in (X)HTML. I suspect there are more HTML readers/writers than OPML ones!
Unless XHTML can be used to express the expansion state of specific items, I don't see how it could be used as an alternative to OPML for outlines.
OPML's an odd bird, but I've implemented a Java application that uses it as an import format and may eventually release a Java library that reads and writes OPML data.
I agree that developers should think twice before using it as a general-purpose data format -- the unusual extension mechanism makes routine XML validation impossible -- but OPML is easy to read and write and is implemented by a bunch of weblogging and outlining tools. For what I use it for, I haven't seen a need to look elsewhere.