microformats は、オブジェクトを説明するいくつかの標準的なメンバを伴った、標準化された構造形式を用いることで、JavaScript によって記述できます。
microformat 定義形式
microformat の定義には以下の項目が含まれていなくてはなりません。
mfVersion
- 定義の記述に利用される microformat API のバージョン番号を指定します。Firefox 3 では 0.8 と指定します。
mfObject
- microformat を実装する JavaScript オブジェクト。
className
- HTML 内で参照されている microformat のクラス名を指定する文字列。
required
- 指定が必須とされるプロトタイプ名を示す配列。すべてのプロパティがオプションの場合、これは省略しても構いません。
properties
- microformat のプロパティを記述した構造体。
プロパティの仕様
properties
構造体の各プロパティは、その名前によって指定され、そのプロパティが必要とする場合には追加の属性が含まれる場合もあります。標準の属性は以下の通りです。
plural
- 真偽値。
true
の場合、プロパティは複数の値を持つことができます。プロパティが複数の場合、配列として返されます。 virtual
- 真偽値。プロパティが仮想かどうかを示します。仮想の場合、
virtualGetter()
メソッドが呼ばれると、そのプロパティが存在しない場合は新規作成を試みます。 virtualGetter
- 仮想プロパティの値を取得するために呼び出される関数。これは
virtual
がtrue
の場合のみ利用されます。 value
- プロパティのデフォルト値。
subproperties
- プロパティには、それ自身に複数のプロパティを持たせることができます。その場合は、プロパティ内部の
subproperties
構造体に、それらのプロパティを追加します。 dataType
- プロパティによって指定されているデータの形式。取り得る値は、
dateTime
- ISO 形式の日付
anyURI
- URI
email
- メールアドレス
tel
- 電話番号
HTML
- タグを含む HTML
float
- 浮動小数点数
microformat
- microformat
microformat_property
microformat
によって指定された microformat 内の特定のプロパティcustom
- 独自データ
シンプルな例
連絡先情報を定義するための hCard microformat では、住所の定義に adr
microformat を利用します。adr
microformat は以下のように定義されます。
var adr_definition = { mfVersion: 0.8, mfObject: adr, className: "adr", properties: { "type" : { plural: true, types: ["work", "home", "pref", "postal", "dom", "intl", "parcel"] }, "post-office-box" : { }, "street-address" : { plural: true }, "extended-address" : { }, "locality" : { }, "region" : { }, "postal-code" : { }, "country-name" : { } } };
ここでのプロパティは至って単純です。type
プロパティは、オブジェクト (職場や自宅など) によって表される住所の形式を示します。plural
プロパティが true
になっていることから、複数の形式を指定できます。これにより、例えば、小鼓の受け取り先として職場の住所を指定することができます。
street-address
プロパティもまた plural
となっています。これにより、street-address
配列内に複数行の住所情報を含めることができます。
microformat は、以下のように Microformats.add()
を呼び出すことで、microformat API に登録できます。
Microformats.add("adr", adr_definition);
註: なお、
adr
microformat は Firefox 3 以降には標準で含まれていますので、利用したい場合に、わざわざ自分で追加する必要はありません。関連記事
Using microformats, Parsing microformats in JavaScript