Microformatの処理
そんなに難しくない。
class属性なので
class属性は空白で区切った複数の単語で構成するので
ではなく
@class = 'event'contains( concat( ' ', @class, ' ' ), ' vevent ' )
で判定する。
property指定が重なることも
<xvcd:value-of select="descendant::*[
contains( concat( ' ', @class, ' ' ), ' dtstart ' ) ]/@title"/>
ではなく、
<xvcd:value-of select="descendant-or-self::*[
contains( concat( ' ', @class, ' ' ), ' dtstart ' ) ]/@title"/>
で。
なぜ、重なるの?…
スキーマ
- Microformatは"human readable first"
- これは重要、導入しやすさ、導入されやすさ。
では、こんなのはどうするの?
2つのイベントが1つの日付を共有している:
- 1999年
- 第1回 XML開発者の日
- 一太郎Arkを無料ダウンロード開始
<abbr class="dtstart" title="1999-03-13"></abbr>
<span class="summary">第1回 XML開発者の日</span>
summaryの中に日付が埋め込まれている:
仙台都市圏の人口は,平成22年には,平成7年よりも22万人多い160万2千人に達する。
<li class="vevent">
<span class="summary">仙台都市圏の人口は,
<abbr class="dtstart" title="2010-01-01">平成22</abbr>
には平成7より22万人多い160万2千人に達する。
</span>
</li>
入れ子はどうなのよ?
あるいは、descriptionの構造
「第九回XML開発者の日」のページ
見かけ上、イベントの開始・終了日付が交差している:
- 1987年: ○○製作所入社
- 1989年: OSI接続実験
- 2004年: ○○製作所退社
- 「入社」と「退社」は別のイベントでしょう。
- 一方、「○○製作所勤務」というイベントであれば、見かけ上も交差することはない。
- つまり、この問題は存在しない、…のかもしれない。
REST的にどうよ?
- 「年表」がURLを持つようになること。
- イベントDBから絞込み検索して年表を構成するのとの違い。
日付型
1970年より前のイベントも処理する。
普及
authoring環境がちょっと進化すれば、従来どおりの年表担当者 -- たとえば自治体の総務課 -- だけで対応できるハズ。
- HTMLエディタ
- Blogエディタ、など
- …などなど
このauthoring環境の進化は、簡単なハズ。…上記のスキーマ問題にもかかわらず。
- HTMLエディタ
- 文字列に書式を設定する処理の延長
- 上位にsurrounding elementを探す
- Blogエディタ、など
- イベント(hCalendar)テンプレート
- 様々なウィザード
- 自分史ウィザード
- トレンドウィザード
- 製品計画ウィザード
一方、イベントDBから絞込み検索して年表を構成しようとすると、担当者・運用から変えなくてはならないだろう。
補足
日付型について(2006/12/03)
Syndy Chronicleは、1970年以前も処理することができます。「年月日」を文字列としてソート処理、あるいは「年」の部分だけを取り出して単なる数値としてソート処理することで実現しています。
年表、とくに過去を扱う処理系は、1970年より前のイベントも処理したいところです。このため、時刻を1970年1月1日0時0分0秒からの経過秒数として処理するプログラミング言語の時刻型の値として、イベントの年月日を処理することは不適当です。これは時刻型のサイズとは別の問題です。
スキーマについて(2006/12/03)
Human readable優先とすると、マークアップの仕方に工夫が必要だったり、それを想定してmachine処理にも注意が必要であることを、具体例をあげて紹介しました。
わたしは、コンテンツの構造化を普及させたいと考えているので、コンテンツの作成者への敷居をできるだけ低くしたい。そこで、現在、自治体や企業の年表にみられる表現は尊重し、であれば今回わたしが受け入れたようなマークアップは、microformatsとして許すべきだと考えています。実際、machine側で処理可能であることを示しました。