Jon Udell talks about the difficulties in dealing with XML namespaces:
My task was simple: parse the feed, use XPath queries to carve out items, and unpack the elements contained within those items.
This proved surprisingly hard to do with my regular XML parser and toolkit, libxml2, which deals strictly with namespaces. I then repeated the exercise using three other toolkits -- Python's minidom module, E4X (ECMAScript for XML) implemented using Rhino, and Mark Logic's XQuery-based Content Interaction Server. Each made the task simpler, though perhaps not laudably so in the case of minidom and E4X, neither of which requires namespace prefixes to resolve to Universal Resource Identifiers. But what's most striking when you point a variety of XML toolkits at documents that use namespaces is how differently each of them approaches the problem.
The root of this (particular) problem is the namespace Apple defined for iTunes, and the way they built their tools to deal with it. What they allowed was case insensitive namespaces, which is kind of a problem for most XML parsers. To deal with this in BottomFeeder, I had to jump through a few hoops in my checking of namespaces - basically, I scan through all the namespaces in a feed, and look at the implemented modules to see if I care. I had to munge the pattern match for the newest module in order to deal with the case insensitivity.
Ultimately, I think this is going to go in the ugliest direction possible - the same bad place that HTML went. With big firms like Apple (and Disney, one of the iTunes users that uses a variant on the iTunes namespace) breaking things, it's going to get worse before it gets better.