坂本さんが w3m 0.2.1 + inu-1.4a3 用に、不明な URI の場合に local-CGI を呼び出す為の patch を作られましたので、この機能を利用して URN をリダイレクトする為のスクリプトを書くことにしました。

この URN → URL 変換リダイレクタは、http://www.alib.jp/cgi-bin/urn.cgi に置きますので、坂本さんの作られた patch を当てた w3m を使われる方は、起動時に w3m -o uri_cmd=http://www.alib.jp/cgi-bin/urn.cgi <file> とすることで、自動的にこの URN リダイレクタを利用できます。なお、手元に無いと不便だ、という方は urn.pl として置いておきますので、よろしかったらご利用下さい。

機能

単に、URN を QUERY_STRING で受け取り、対応した URN の場合は該当のリソースへ Location で飛ばします。非対応の URN の場合はエラーを出力します。

特に w3m に特化していませんので、掲示板などで URN が埋め込まれた場合に、http://www.alib.jp/cgi-bin/urn.cgi?urn:ietf:rfc:1855 というハイパーリンクを埋め込んで利用することもできます。

対応した URN

Perl 的正規表現で書いてあります。

  • urn:ietf:rfc:\d+
  • urn:ietf:id:[A-Za-z\d\-]+ (同じディレクトリに urn-ietf-drafts.dat が必要)
  • urn:ietf:std:\d+ (同じディレクトリに urn-ietf-std.dat が必要)
  • urn:ietf:fyi:\d+ (同じディレクトリに urn-ietf-fyi.dat が必要)
  • urn:issn:\d{4}-\d{3}[\dX]
  • urn:isbn:\d-\d+-\d+-\d