txqz memo

ジャンル一覧にはてブから取ってきたニュースを並べようとして

なんかジャンル別一覧の右カラムに、そのジャンルと同じタグをつけた私のはてブとかを載せようと思って、はてブが出してるAtomファイルを眺めてみた。

  <entry>
    <title>こめびつの中身 - そろそろ書店POPも痛烈に web2.0 化しておくべきだ。</title>
    <link rel="related" type="text/html" href="http://d.hatena.ne.jp/hachi_gzk/20070320#1174343460" />
    <link rel="alternate" type="text/html" href="http://b.hatena.ne.jp/denken/#bookmark-4259458" />
    <link rel="service.edit" type="application/x.atom+xml" href="http://b.hatena.ne.jp/atom/edit/4259458" title="こめびつの中身 - そろそろ書店POPも痛烈に web2.0 化しておくべきだ。" />
    <issued>2007-03-21T14:13:36+09:00</issued>
    <author>
      <name>denken</name>

    </author>
    <id>tag:hatena.ne.jp,2005:bookmark-denken-4259458</id>
    <summary type="text/plain">なる</summary>

    <dc:subject>Web2.0</dc:subject>

    <dc:subject>ポップ</dc:subject>

    <dc:subject>アイデア</dc:subject>


  </entry>

最初はDOMでやろうと思ったのだけれども、「rel属性の値が"related"であるlink要素のhref属性の値」ってDOMで簡単に書けるのか? と考えあぐねた結果、やっぱ面倒そうなのでXSLTを使った。ていうかXSLTなんてまだこの日記をXMLで書いていたころ(2003年から2004年)以来なので結構さっぱり忘れていた。件の処理はXSLTなら<xsl:value-of select="atom:link[@rel='related']/@href" />でOKなので、そんな感じでスラスラと書いていったのだが、「ポップ」とか「アイデア」とかにリンクを張ろうとしてまた詰まった。XSLTにはURLに使えない文字についてパーセントエンコードするような関数がない。DOMを使っていれば、処理中にどこかでrawurlencode()とかかければ済むのに。どうしよう。

ていうかAtomじゃなくてRSSを使えばよかった。

<item rdf:about="http://d.hatena.ne.jp/gray_feny/20060916/1158376462">
    <title>バイク乗り野郎の独り言α+ - iPodで聴いた曲をLast.fmに送信することが出来るプラグイン</title>
    <link>http://d.hatena.ne.jp/gray_feny/20060916/1158376462</link>
    <description></description>
    <content:encoded>
      <blockquote cite="http://d.hatena.ne.jp/gray_feny/20060916/1158376462" title="バイク乗り野郎の独り言α+ - iPodで聴いた曲をLast.fmに送信することが出来るプラグイン">

        <cite><a href="http://d.hatena.ne.jp/gray_feny/20060916/1158376462">バイク乗り野郎の独り言α+ - iPodで聴いた曲をLast.fmに送信することが出来るプラグイン</a> <a href="http://b.hatena.ne.jp/entry/http://d.hatena.ne.jp/gray_feny/20060916/1158376462"><img src="http://b.hatena.ne.jp/images/entry.gif" title="このエントリーを含むブックマーク" alt="このエントリーを含むブックマーク" border="0"></a></cite>

      </blockquote>

    </content:encoded>
    <dc:date>2007-04-15T23:14:29+09:00</dc:date>
    <dc:creator>denken</dc:creator>

    <dc:subject>last.fm</dc:subject>

    <dc:subject>iPOD</dc:subject>


    <dc:subject>音楽</dc:subject>

    <dc:subject>ソフト</dc:subject>


    <taxo:topics>
      <rdf:Bag>

      <rdf:li resource="http://b.hatena.ne.jp/t/last%2efm" />

      <rdf:li resource="http://b.hatena.ne.jp/t/iPOD" />

      <rdf:li resource="http://b.hatena.ne.jp/t/%e9%9f%b3%e6%a5%bd" />

      <rdf:li resource="http://b.hatena.ne.jp/t/%e3%82%bd%e3%83%95%e3%83%88" />


      </rdf:Bag>
    </taxo:topics>

</item>

なんとご丁寧にエンコード済みのURL情報まであるぞ。じゃあそういうことで。