Atom 0.3 が出てます。Movable Type のテンプレートもあり。
ということで、'Atom 0.3 snapshot [dive into mark]' に Atom 0.3 working draft などについて色々書いてあります。Movable Type のテンプレートが dive into mark の Mark Pilgrim 氏によって公開されています。このウェブログに突っ込んでみました。
NDO::Weblog の Atom フィード
http://naoya.dyndns.org/~naoya/mt/atom-03.xml
以下、先のテンプレートを使って Atom フィードを出力するための方法です。
まずはテンプレートをダウンロードします。IE などのブラウザから普通にクリックすると、拡張子が xml なファイルに展開されていない MT の特殊タグが埋まっているので not well-formed とか怒られますから、右クリックして対象をファイルに保存とかで落とします。
次に、Movable Type のプラグインを二つほどインストールします。UTCDate Plugin for Movable Type と LastModified Plugin for Movable Type です。Atom フィードの中では時刻表記に Universal Time format を使うのと、エントリの作成日以外にエントリの修正日付も扱います。それらに対応させるためのプラグインとなります。
staggernatiion.com Plugins for Movable Type から UTCDate と LastModified をダウンロードします。展開して MT の plugins ディレクトリに放り込めば OK です。
次に、先にダウンロードしておいた Atom 0.3 テンプレートを編集します。テンプレート内のコメントにもある通り、xml:lang がハードコードされており、
xml:lang="en"
になっているので、日本語を扱うならこれを
xml:lang="ja"
に変更します。(2箇所)
テンプレートをそのまま使うと、フィードに掲載されるエントリの数が 3 つしかないので、増やしたい場合は
<MTEntries lastn="3">
を lastn="15" とかに変更します。(lastn="1" の箇所が他にも幾つかありますが、そこは変更しなくて OK です。)
最後にコメントを削除します。
Movable Type の管理画面にログインし、"Template の編集" から "新しい Index Template を作る" をクリック。Template の名前は任意です。僕は "Atom 0.3" と入力しました。出力ファイル名も任意。"atom-03.xml" としました。Tenmplate の中身に先に編集したものをすべてコピペします。
リビルドして、Atom フィードが問題なく出力できれば完了です。IE などで見て、well-formed かどうか(エラーにならないか)確認します。
ここまででフィードの出力は完了、次は Atom feed autodiscovery のための設定を行います。Atom feed autodiscovery は RSS autodiscovery に同じく、フィードを処理するプログラムが HTML の URL から Atom フィードの URL を発見できるようにする仕組みです。
"Template の編集" で "Main Index" を選択、head タグの中に以下の一行を挿入します。
<link rel="alternate" type="application/atom+xml" title="Atom" href="<$MTBlogURL$>atom-03.xml" />
atom-03.xml の部分は、先に Atom フィードを MT に追加したときにつけた出力ファイル名と同じものを入力します。保存して再構築で完了です。
Mark Pilgrim 氏と Sam Ruby 氏によって運営されている Feed Validator は RSS フィードや Atom フィードを Validate してくれるサービスですが、Atom 0.3 に対応したとのことです。また、Atom autodiscovery にも対応したそうで、先の設定を行った MT のトップページの URL を指定すれば、フィードを正しい記述によって提供できているか、チェックすることができます。
が、僕のサイトの URL を指定したところエラーになってしまいました。EUC-JP で吐いてるのがいけないのかな...。なんかそんな雰囲気。(UTF-8 で出力している RssRolling の RSS は Validation できたので。)
ちなみに Feed Validator のソースコードも dive into mark で公開されています。中身を見てみたら、Python でした。
でまあ、Atom フィードを吐いてみたのですが、Feed Validator ぐらいしかこれを解釈してくれるプログラムを知らないので、他に試しようがありません。フィードの内容は、やはり自分のウェブログから出力される情報に対応させると、このエレメントはこういう用途というのが分かりやすくていいです。プラグインを突っ込めば modified と issued が正確に扱えるというのが分かっただけでも、結構な収穫かも。