Yesterday my channelroll broke, and began displaying the message: The server returned a SOAP-ENV:Client fault: Can't create item "." because "" is an illegal name. I think I've seen this happen on other sites, but I never got the chance to figure out what it meant until it happened to me. Here's the explanation, and the fix.
The offending URL was:
http://www.voidstar.com/rssify.php?url=http%3A%2F%2Fwebvoice.blogspot.com%2F
Some quirk involving the rssify script and the blogspot.com service was (temporarily, I guess) resulting in an empty channel-level <title> element. You can, it turns out, subscribe to a feed whose channel title is empty. But it breaks the channelroll. I've updated the script with the following bolded changes:
for
adr in (@aggregatorData.services)
{
scratchpad.subsTried = scratchpad.subsTried + 1;
try
{
local(title = adr^.compilation.channeltitle);
local(channelUrl = adr^.compilation.channellink);
local(rssUrl = nameOf(adr^));
local (l);
new (listType, @l);
l[0] = channelUrl;
l[0] = rssUrl;
t[title] = l;
scratchpad.subsGot = scratchpad.subsGot + 1;
}
else
{
scratchpad.subsNotGot = nameOf(adr^) + "," +
scratchpad.subsNotGot;
}
}
The bad URL was, in any case, apparently obselete. The current one is:
www.voidstar.com/module.php?mod=blog&op=feed&name=jbond
It strikes me that with namespace support for RSS, an element might be added that would enable aggregators to redirect in such cases. This was a problem for me when I switched from radio.weblogs.com to weblog.infoworld.com. I was stuck doing this:
<?xml version="1.0" ?>
<rss version="0.92">
<channel>
<title>Jon's Radio</title>
<link>http://weblog.infoworld.com/udell/
</link>
<description>Jon Udell's Radio
Blog</description>
<copyright>Copyright 2002 Jon
Udell</copyright>
<item>
<title>Redirection</title>
<link>http://weblog.infoworld.com/udell/rss.xml
</link>
<description>This feed has moved to
http://weblog.infoworld.com/udell/rss.xml. I've used a client-side
redirect (HTTP-EQUIV="refresh") for the home page, but haven't
figured out how to do the same for the RSS channel. If you see a
way, please clue me in. Otherwise, if you want to keep subscribing
to my feed, you'll have to switch your aggregator to the new link.
Sorry for the inconvenience! - Jon</description>
</item>
</channel>
</rss>
I don't see any proposed modules that address this situation, but I can imagine a mod_redir that would go something like this:
<?xml version="1.0" ?>
<rss version="2.0"
xmlns:redir="http://purl.org/rss/1.0/modules/redir/" >
<channel>
<redir:rssUrl>http://weblog.infoworld.com/udell/rss.xml
</redir:rssUrl>
<redir:link>http://weblog.infoworld.com/udell/
</redir:link>
<title>Jon's Radio</title>
<link>http://radio.weblogs.com/0100887/
</link>
<description>Jon Udell's Radio
Blog</description>
</channel>
</rss>
Former URL: http://weblog.infoworld.com/udell/2002/09/24.html#a424