{
  "attachments": [],
  "comments_archived": true,
  "date": "2005-12-01T13:06:07.000Z",
  "layout": "post",
  "tags": [
    "asides"
  ],
  "title": "Feedrolls in XOXO from OPML via XSLT and URL-line Magic",
  "wordpress_id": 787,
  "wordpress_slug": "feedrolls-in-xoxo-from-opml-via-xslt-and-url-line-magic",
  "wordpress_url": "http://decafbad.com/blog/?p=787",
  "year": "2005",
  "month": "12",
  "day": "01",
  "isDir": false,
  "slug": "feedrolls-in-xoxo-from-opml-via-xslt-and-url-line-magic",
  "type": "entry",
  "postName": "2005-12-01-feedrolls-in-xoxo-from-opml-via-xslt-and-url-line-magic",
  "html": "<p>I haven't really gotten around to making <a href=\"http://decafbad.com/blog/2005/11/27/subscriptions-are-attention-but-what-about-blogrolls\">that blogroll I was promising</a>.  But, for the hell of it, I tried cleaning up an OPML export from my aggregator to remove my private feeds and for-pay feeds—which, incidentally and unfortunately were some of my most interesting feeds.</p>\n<p>But, that said,  here's <a href=\"http://decafbad.com/2005/11/gopher-ng/feedroll.html\">my feedroll</a>.  It's the result of some more <a href=\"http://207.22.26.166/bytecols/2001-08-15.html\">URL-line magic</a>:</p>\n<ul>\n<li>Take one OPML file: <a href=\"http://decafbad.com/2005/11/gopher-ng/feedroll.opml\">feedroll.opml</a></li>\n<li>Grab this XSLT: <a href=\"http://decafbad.com/2005/11/gopher-ng/opml-to-hblogroll.xsl\">opml-to-hblogroll.xsl</a></li>\n<li>Run them both through the <a href=\"http://www.w3.org/2001/05/xslt\">W3C XSLT Service</a> to get this: <a href=\"http://www.w3.org/2000/06/webdata/xslt?xslfile=http%3A%2F%2Fdecafbad.com%2F2005%2F11%2Fgopher-ng%2Fopml-to-hblogroll.xsl&amp;xmlfile=http%3A%2F%2Fdecafbad.com%2F2005%2F11%2Fgopher-ng%2Ffeedroll.opml&amp;transform=Submit\">feedroll.xhtml</a></li>\n<li>Got some OPML on the web?  Paste your URL here and hit return:<form action=\"http://www.w3.org/2000/06/webdata/xslt\"><input type=\"hidden\" name=\"xslfile\" value=\"http://decafbad.com/2005/11/gopher-ng/opml-to-hblogroll.xsl\"><input type=\"text\" name=\"xmlfile\" size=\"45\" value=\"http://www.opmlmanager.com/opml/alexbarnett.opml\"><input type=\"hidden\" name=\"transform\" value=\"Submit\"></form><small>Note: Doesn't like OPML that's invalid XML.</small></li>\n</ul>\n<p>If I were less lazy, I'd've included some unobtrusive JavaScript to give this thing expand/collapse handles.  And, I'd also like to work on making it less of a cluttered and raw mess.  So, it's not quite yet what I'd like to share as a proper blogroll.</p>\n<p>But, for what it's worth, view source on that feedroll.  I came up with a tentative \"hBlogroll\" microformat for it, based on XOXO and some OPML semantics.  I haven't written the code for it yet, but I imagine that this should be pretty easily parsed.</p>\n<div id=\"comments\" class=\"comments archived-comments\"><h3>Archived Comments</h3>\n<ul class=\"comments\">\n<li class=\"comment\" id=\"comment-221085280\">\n<div class=\"meta\">\n<div class=\"author\">\n<a class=\"avatar image\" rel=\"nofollow\" href=\"http://epeus.bogspot.com\"><img src=\"http://www.gravatar.com/avatar.php?gravatar_id=e1b4d65a6a4b7901f078d5c8c198e9f3&amp;size=32&amp;default=http://mediacdn.disqus.com/1320279820/images/noavatar32.png\" width=\"\" height=\"\"></a>\n<a class=\"avatar name\" rel=\"nofollow\" href=\"http://epeus.bogspot.com\">Kevin Marks</a>\n</div>\n\n\n<p><a href=\"#comment-221085280\" class=\"permalink\"><time datetime=\"2005-12-02T00:44:07\">2005-12-02T00:44:07</time></a></p>\n</div>\n\n\n<div class=\"content\"><p>It's being served with\nContent-Type: application/xml\nand an &lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt; heading.</p>\n<p>If you make doctype header that should persuade firefox and safari to show it as html.</p></div>\n\n\n</li>\n<li class=\"comment\" id=\"comment-221085281\">\n<div class=\"meta\">\n<div class=\"author\">\n<a class=\"avatar image\" rel=\"nofollow\" href=\"http://www.decafbad.com\"><img src=\"http://www.gravatar.com/avatar.php?gravatar_id=2377f34a68801b861c3e54e1301f0dce&amp;size=32&amp;default=http://mediacdn.disqus.com/1320279820/images/noavatar32.png\" width=\"\" height=\"\"></a>\n<a class=\"avatar name\" rel=\"nofollow\" href=\"http://www.decafbad.com\">l.m.orchard</a>\n</div>\n\n\n<p><a href=\"#comment-221085281\" class=\"permalink\"><time datetime=\"2005-12-02T01:57:36\">2005-12-02T01:57:36</time></a></p>\n</div>\n\n\n<div class=\"content\"><p>@Kevin:  D'oh.  It's the little things I always forget.  That, and the big things.  Thanks for the reminder!</p></div>\n\n\n</li>\n</ul>\n\n\n</div>\n\n\n",
  "body": "I haven't really gotten around to making [that blogroll I was promising][blogroll].  But, for the hell of it, I tried cleaning up an OPML export from my aggregator to remove my private feeds and for-pay feeds—which, incidentally and unfortunately were some of my most interesting feeds.\r\n\r\nBut, that said,  here's [my feedroll][fh].  It's the result of some more [URL-line magic][ul]:\r\n\r\n* Take one OPML file: [feedroll.opml][opml]\r\n* Grab this XSLT: [opml-to-hblogroll.xsl][hblog]\r\n* Run them both through the [W3C XSLT Service][xsl] to get this: [feedroll.xhtml][run]\r\n* Got some OPML on the web?  Paste your URL here and hit return:\r\n  <form action=\"http://www.w3.org/2000/06/webdata/xslt\" action=\"GET\"><input type=\"hidden\" name=\"xslfile\" value=\"http://decafbad.com/2005/11/gopher-ng/opml-to-hblogroll.xsl\" /><input type=\"text\" name=\"xmlfile\" size=\"45\" value=\"http://www.opmlmanager.com/opml/alexbarnett.opml\" /><input type=\"hidden\" name=\"transform\" value=\"Submit\" /></form><small>Note: Doesn't like OPML that's invalid XML.</small>\r\n\r\nIf I were less lazy, I'd've included some unobtrusive JavaScript to give this thing expand/collapse handles.  And, I'd also like to work on making it less of a cluttered and raw mess.  So, it's not quite yet what I'd like to share as a proper blogroll.\r\n\r\nBut, for what it's worth, view source on that feedroll.  I came up with a tentative \"hBlogroll\" microformat for it, based on XOXO and some OPML semantics.  I haven't written the code for it yet, but I imagine that this should be pretty easily parsed.\r\n\r\n[fh]: http://decafbad.com/2005/11/gopher-ng/feedroll.html\r\n[css]: http://decafbad.com/2005/11/gopher-ng/hblogroll.css\r\n[xsl]: http://www.w3.org/2001/05/xslt\r\n[run]: http://www.w3.org/2000/06/webdata/xslt?xslfile=http%3A%2F%2Fdecafbad.com%2F2005%2F11%2Fgopher-ng%2Fopml-to-hblogroll.xsl&xmlfile=http%3A%2F%2Fdecafbad.com%2F2005%2F11%2Fgopher-ng%2Ffeedroll.opml&transform=Submit\r\n[hblog]: http://decafbad.com/2005/11/gopher-ng/opml-to-hblogroll.xsl\r\n[opml]: http://decafbad.com/2005/11/gopher-ng/feedroll.opml\r\n[ul]: http://207.22.26.166/bytecols/2001-08-15.html\r\n[blogroll]: http://decafbad.com/blog/2005/11/27/subscriptions-are-attention-but-what-about-blogrolls\r\n\r\n<div id=\"comments\" class=\"comments archived-comments\">\r\n            <h3>Archived Comments</h3>\r\n            \r\n        <ul class=\"comments\">\r\n            \r\n        <li class=\"comment\" id=\"comment-221085280\">\r\n            <div class=\"meta\">\r\n                <div class=\"author\">\r\n                    <a class=\"avatar image\" rel=\"nofollow\" \r\n                       href=\"http://epeus.bogspot.com\"><img src=\"http://www.gravatar.com/avatar.php?gravatar_id=e1b4d65a6a4b7901f078d5c8c198e9f3&amp;size=32&amp;default=http://mediacdn.disqus.com/1320279820/images/noavatar32.png\"/></a>\r\n                    <a class=\"avatar name\" rel=\"nofollow\" \r\n                       href=\"http://epeus.bogspot.com\">Kevin Marks</a>\r\n                </div>\r\n                <a href=\"#comment-221085280\" class=\"permalink\"><time datetime=\"2005-12-02T00:44:07\">2005-12-02T00:44:07</time></a>\r\n            </div>\r\n            <div class=\"content\"><p>It's being served with\r\nContent-Type: application/xml\r\nand an &lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt; heading.</p>\r\n\r\n<p>If you make doctype header that should persuade firefox and safari to show it as html.</p></div>\r\n            \r\n        </li>\r\n    \r\n        <li class=\"comment\" id=\"comment-221085281\">\r\n            <div class=\"meta\">\r\n                <div class=\"author\">\r\n                    <a class=\"avatar image\" rel=\"nofollow\" \r\n                       href=\"http://www.decafbad.com\"><img src=\"http://www.gravatar.com/avatar.php?gravatar_id=2377f34a68801b861c3e54e1301f0dce&amp;size=32&amp;default=http://mediacdn.disqus.com/1320279820/images/noavatar32.png\"/></a>\r\n                    <a class=\"avatar name\" rel=\"nofollow\" \r\n                       href=\"http://www.decafbad.com\">l.m.orchard</a>\r\n                </div>\r\n                <a href=\"#comment-221085281\" class=\"permalink\"><time datetime=\"2005-12-02T01:57:36\">2005-12-02T01:57:36</time></a>\r\n            </div>\r\n            <div class=\"content\"><p>@Kevin:  D'oh.  It's the little things I always forget.  That, and the big things.  Thanks for the reminder!</p></div>\r\n            \r\n        </li>\r\n    \r\n        </ul>\r\n    \r\n        </div>\r\n    ",
  "parentPath": "./content/posts/archives/2005",
  "path": "2005/12/01/feedrolls-in-xoxo-from-opml-via-xslt-and-url-line-magic",
  "needsBuild": true,
  "prevPostPath": "2005/11/30/unify-your-ui-but-be-careful-with-the-chrome",
  "prevPostTitle": "Unify your UI, but be careful with the chrome",
  "nextPostPath": "2005/12/01/blogrolls-grow-up-to-become-feedrolls",
  "nextPostTitle": "Blogrolls grow up to become feedrolls?"
}