イベントカレンダーについて公開している情報
イベントカレンダーでは,Mac OS X の iCal に入力したデータから,XHTML のページや iCalendar, RDF Calendar, RSS 1.0 などを一括生成して公開しています.その手法などについて一部を公開します.
再利用できるイベントデータ
iCalendar ファイルや RDF/XML ファイルとしてイベントカレンダーのメタデータを配布します.iCalendar ファイルは,iCal や Mozilla Calendar,Outlook などで取り込む事ができます.
- iCalendar
- iCal で管理している公開できる自転車関連のイベント情報
- RDFical
- iCal で管理している公開できる自転車関連のイベント情報の RDF/XML 版
- RSS
- 7 月からのイベント情報を RSS 1.0 形式にしたもの.
データ変換の流れ
およそ以下の流れで,iCal からデータを変換して,Web ページなどを生成しています.
- iCal でイベントの入力/編集
- iCal によって iCalendar ファイルが自動生成される
- ical2rdf.pl によって iCalendar ファイルが RDFical に変換される
- XSLT で,毎月のイベントや数日間のイベントなどを,1 日ごとに展開した RDF に変換
- XSLT で,1 日ごとに展開した RDF から RSS 1.0 を生成
- XSLT で,1 日ごとに展開した RDF から XHTML を生成
変換に用いているスクリプトファイルと XSLT
ぼくが書いた XSLT は,勝手に利用し,改変して配布してくださってかまいません.もっと良い書き方があれば教えてください.
ちょっと古い内容で,実際に使っている XSLT スタイルシートはもう少し改良しています.
- ical2rdf.pl
- iCalendar ファイルを RDF Calendar に変換する Perl スクリプト.CGI としても動くらしいです.神崎さんの Web サイトの「RDFicalをiCalendarに変換」からダウンロードできます.
- rical2rical.xsl
- RDF Calendar のイベントで,毎月のイベントとか数日間のイベントなどは後で扱いづらいので,1 日単位のイベントに展開してしまいます.RDF Calendar のファイルを 1 日単位のイベントからなる RDF Calendar のファイルに変換します.毎週のイベントってのは,対応していません.
- rical2rss.xsl
- RSS リーダでイベント情報が扱えるのも便利かなっておもったので,RDF Calendar のファイルを RSS 1.0 に変換する XSLT を用意してみました.もともとのイベントは foaf:topic として rss:item に埋め込みました.規格では uid はオプションだそうですが,変換時に uid に依存しているので,元データに uid がないとうまく動かないです.
- rical2htmln1.xsl
- RDF Calendar のファイルを変換して XHTML ファイルを生成します.カレンダーを table 要素で作りました.規格では uid はオプションだそうですが,変換時に uid に依存しているので,元データに uid がないとうまく動かないです.rical2html.xsl をインポートしています.
XSLT には xsltproc を利用しています.Xalan-Java でも大丈夫だと思います.EXSLT の Dates and Times を利用しているので,XSLT の処理系によっては,うまくいかないはずです.また,一般的な RDFical が変換できるのではなくて,iCal の iCalendar を ical2rdf.pl によって変換したものに対して有効です.例えば UID に依存した処理があるので,元の iCalendar に UID が無かったら,うまく処理できません.iCalendar の規格では UID は必須ではないそうです.
目的が iCal を利用して iCalendar や RDFical のファイルを配布すること,カレンダーの Web ページを生成することなので,あまり汎用的ではないです.
変換のためのシェルスクリプトの例
実際とは違うけど,こんな感じです.
#!/bin/sh ./ical2rdf.pl ‾/Library/Calendars/cycling-event.ics > cycling-event-cal.rdf xsltproc rical2rical.xsl cycling-event-cal.rdf > current-cycling-event-cal.rdf xsltproc rical2rss.xsl current-cycling-event-cal.rdf > current-cycling-event-rss.rdf xsltproc rical2htmln1.xsl current-cycling-event-cal.rdf > calendar.html
ics2hevent の公開
2008-02-14 追記.
実際に使っているものを整理して公開しました.
説明は 2008 年 2 月 14 日付けの履歴もしくは日誌に書きました.
javascript による貼付け
どこかにイベント情報を貼付けられるように javascript を用意しました.
<script type="text/javascript" src="http://onohiroki.cycling.jp/calendar/current-cycling-event.js"></script>
上記の様に,どこかの Web ページに書き込むと,イベント情報のリストが javascript によって表示できます.
current-cycling-event.js の文字コードは UTF-8 ですが,他の漢字コードのものも用意しました.
- current-cycling-event.js.euc
- EUC-JP,いわゆる EUC です.
- current-cycling-event.js.jis
- ISO-2022-JP,いわゆる JIS コードです.
- current-cycling-event.js.sjis
Shif_Jis,いわゆるシフト JIS です.