履歴もしくは日誌
2005 年 8 月の履歴(もしくは日誌)
2005 年 8 月
8 月 20 日
class 属性を再発見
rel 属性を利用すればリンクの関連性を豊かに表現できるという rel 属性の価値の再発見があって XFN では rel 属性を利用しました.識別子を付加したいのであれば class 属性が適切なので,class 属性を使えばよいのではないかと思います.
「SYNの日記 - Re: マークアップする力」を読みました.確かに shckor さんの個体識別子を定義する属性もあるべきだと思う
という主張をぼくはよく分かっていないと思います.
個体識別子が何を意図するのかが良くわかっていません.これは URI が指し示すものが何なのかを URI とは別の方法で識別子を付加したいということですよね? URI から識別するのではなぜだめなのかもぼくにはよくわかりません.その rel 属性での識別子付けのルールは profile で定義し,その profile ではあらかじめ想定されたものだけを定義しておく訳ですね.
最初に定義していなかったものを後から追加したくなったら,別 profile を作るのでしょうか? この問題をどう考えているのかはぜひ教えてほしいです.
もし profile を定義するのでは無いなら,rel 属性に勝手に属性値を定義するのは XHTML の規則に違反するから適切ではないです.独自の属性 relto とかを定義するのも XHTML の規則に反するから適切ではないです.任意の文字列を属性値として持ちたいのであれば title 属性が適切だと思いますが,title 属性に記述するような人間が読んで意味が分かるような文字列を使いたい訳ではなくて,識別子としての文字列を定義したいのであれば class 属性が良いでしょうね.
<a class="hatenab" href="http://b.hatena.ne.jp/onohiroki" title="おのひろきのはてなブックマーク" >bookmark</a>
class 属性値であれば,好き勝手に定義しても XHTML の規則違反にならないので良いと思います.link 要素の場合も id 属性や class 属性を与えることができます.
識別子である URI にさらに識別子を定義したいというのが目的だから,リンクの関連性を示す rel 属性を利用するよりは,識別子を定義するための属性である class 属性を利用するのが適切だと思います.
次に microformats を考えると class 属性値に意味を持たせる為に profile を書くことになるのかな.xoxo とか hCard などは class 属性を使って意味付けして profile で意味付けについて定義していますよね.
class 属性を使って class="hatenab" とか書いてそれを microformats 的に利用するのであれば,なにも問題ないと思います.特にこだわらなければ profile で意味付けしなくても良いと思います.
と,いうわけでもし識別子を付加したいのであれば rel 属性でなく class 属性が良いと思います.これは提案.
それで,識別子を hatenab なんて形で付加するのにどういう意味があるのかはぼくには良くわかりませんが.
ぼくは rel 属性値を定義するのが,そのまま microformats ではないだろうと書きました.XFN で rel 属性を使ったのは rel 属性を利用すればリンクの関連性を豊かに表現できるという rel 属性の価値の再発見があったからでしょう.XFN ではリンクの関連性を表現したくて,適切な属性である rel を利用したのです.もしリンク先の識別子を表現したければ rel 属性を利用しなかったでしょう.
microformats の面白いところは XHTML として適切なマークアップが先にあり,さらに決まった書式であれば,そこからメタデータを抽出できるってところだとぼくは感じています.
shckor さんや yohei さんが言っている事がちゃんと理解できたら title 属性とかぢゃなくて class 属性ってすぐに出てこないとおかしいですよね.いや,未だに shckor さんや yohei さんの主張でよく分からないところがあるけど.
はてなの Account Auto-Discovery の話も,この microformats に付いての話も,ぼくはそれなりに楽しんでます.いろいろ勉強になります.自分でもいろいろ調べないと書けないですね.
Trackback URI http://onohiroki.cycling.jp/tb/tb.cgi/weblog_d20050820n1 TrackBack