Microdataではitemprop
属性を指定された要素からどうやって値を選択するか厳密に決められていて、それに外れた書き方はできない。meta
やtime
、img
要素の場合はまぁそうなるよねみたいな感じなんだけど、a
要素だけがちょっと。
仕様では、a
要素でitemprop
属性を使った場合その値はhref
属性の値を絶対URLに変換したものとなっている。そのため以下のようには書けない。
<address itemscope
itemtype="http://schema.org/Person">
Copyright © 2012
<a href="http://example.com/about/"
itemprop="name url">
John Doe
</a>
</address>
MicroformatsのhCardのような感覚では書けないということで、以下のようにspan
要素(など)を使って別にしないといけない。
<address itemscope
itemtype="http://schema.org/Person">
Copyright © 2012
<a href="http://example.com/about/"
itemprop="url">
<span itemprop="name">
John Doe
</span>
</a>
</address>
ボキャブラリーごとに対応しなくても良いようにHTMLの要素側で値の選択法を決定させているのだと思う。ボキャブラリー側でデータ型を決めてそれによって値の選択法を変えるというのだと、処理系でボキャブラリーをちゃんと処理しなければ正確なデータの抽出が行えない。HTML要素で値の選択法が決定されるMicrodataの実装ではデータの抽出自体はボキャブラリーを処理せずに行えることになる。HTMLがマークアップ言語なこともあって理にかなっている実装なんじゃないか(と今は思う)。
このWebサイトはまだ直してない……けど今から直す。