a要素でのitemprop属性

Microdataではitemprop属性を指定された要素からどうやって値を選択するか厳密に決められていて、それに外れた書き方はできない。metatimeimg要素の場合はまぁそうなるよねみたいな感じなんだけど、a要素だけがちょっと。

仕様では、a要素でitemprop属性を使った場合その値はhref属性の値を絶対URLに変換したものとなっている。そのため以下のようには書けない。

<address itemscope
  itemtype="http://schema.org/Person">
  Copyright &copy; 2012
  <a href="http://example.com/about/"
    itemprop="name url">
    John Doe
  </a>
</address>

MicroformatshCardのような感覚では書けないということで、以下のようにspan要素(など)を使って別にしないといけない。

<address itemscope
  itemtype="http://schema.org/Person">
  Copyright &copy; 2012
  <a href="http://example.com/about/"
    itemprop="url">
    <span itemprop="name">
      John Doe
    </span>
  </a>
</address>

ボキャブラリーごとに対応しなくても良いようにHTMLの要素側で値の選択法を決定させているのだと思う。ボキャブラリー側でデータ型を決めてそれによって値の選択法を変えるというのだと、処理系でボキャブラリーをちゃんと処理しなければ正確なデータの抽出が行えない。HTML要素で値の選択法が決定されるMicrodataの実装ではデータの抽出自体はボキャブラリーを処理せずに行えることになる。HTMLがマークアップ言語なこともあって理にかなっている実装なんじゃないか(と今は思う)。


このWebサイトはまだ直してない……けど今から直す。