* img 要素・object 要素・input 要素 usemap 属性 (HTML, XHTML 1) [10] [[HTML]] の [CODE(HTMLe)[[[img]]]] 要素および [CODE(HTMLe)[[[object]]]] 要素および [CODE(HTMLe)[input]] 要素の [DFN[[CODE(HTMLa)[usemap]] 属性]]は、 [[画像写像]]を要素に関連付けます。 [11] 仕様書: - [[HTML 4]] -- [[#comment]] ** 属性値 [12] この属性の値は [CODE(SGML)[%[[URI]]]] ([[URI参照]]) です。 HTML 4 仕様書には[Q[値は [CODE(HTMLe)[map]] 要素の [CODE(HTMLa)[[[name]]]] 属性と一致しなければならない]]とか書かれていますが、 無理です。 実際には、 [CODE(HTMLa)[name]] 値を[[素片識別子]]とした URI 参照とします。 [13] この属性は省略可能です。 省略するとクライアント側画像写像と結び付けられていないことになります。 [[#comment]] *** IDREF [15] [[XHTML m12n]] では属性値の型が URI 参照から [CODE(XML)[[[IDREF]]]] 改められました。 (ただし、 >>5 によれば修正することを検討中のようです。) [1] ''XHTML1.1のusemap属性の仕様変更'' [2] [[URI]] と [[IDREF]] ですから、 とりあえず区別は出来ますけど、非互換変更は嬉しくないですねぇ。 同じ[[名前空間]]で非互換変更はねぇ。 [7] >>2 やっぱり区別できないや。相対 URI で [CODE(URI)[foo]] みたいな場合。 もっとも[DEL[ほとんどの場合は]>>16][INS[必ず]>>16][[素片識別子]]付きの URI 参照になるでしょうから、 現実的には問題ないのですが。 [16] [Q[ほとんどの場合は]]と書いていましたが、[Q[必ず]]です。 といいますのは、 [CODE(HTMLa)[usemap]] の参照先は [CODE(HTMLe)[map]] と定義されているからです。仮に [CODE(HTMLe)[map]] を[[文書要素]]としたところで、それは文書全体ではなく文書要素に過ぎないので、 それを参照するためにはやはり素片識別子が必要です。 ですから、[Q[[CODE(HTMLe)[map]] を参照]]という制約の範囲内で素片識別子なしの URI で済ませられる可能性はありません。 ただし、独自拡張で例えば CERN 方式の鯖側画像写像定義ファイルを参照できるとか、 そういうのがある場合はこの限りではありません (が実際にはないと思います)。 [9] >>2 しまった! [CODE(char)[:]] が [CODE(XML)[[[ID]]]] に含まれていたら区別できない! と思いきや、 [[XHTML m12n]] を [[XML名前空間]]無しで使うのは不可能ですから、無問題なのでした。 [4] XHTML 1.1 の 1.0 との差異リストにも載ってないし、気づいてない人も多そう。 [22] [CITE[HTML Working Group Voyager Issue Tracking System - Modularization-abstractions/8502]] ([[名無しさん]]) [24] >>22 によれば、一度は[[URI]]に修正することに決めたものの、 ずっと放置した挙句、やっぱり[CODE(XML)@en[[[IDREF]]]]にしておいて、 [[XHTML 2.0]]ではまた[[URI]]に戻すそうですwwwwwwwww ([[名無しさん]] [sage]) [25] [CITE[[XHTMLMod] usemap="" attribute should be URI, not IDREF from Anne van Kesteren on 2006-08-04 (www-html-editor@w3.org from July to September 2006)]] 早く直せよねぇwww ([[名無しさん]] [WEAK[2006-08-06 05:16:43 +00:00]]) [26] [[XHTML m12n]] の [[DTD]] 内には次のような説明があります。 [PRE(XML code comment)[ ]PRE] ;; 実装されていないからといって、構文を変えてしまったら、 実装が零になってしまうわけですが・・・。 ([[名無しさん]]) [[#comment]] ** UA による利用 [[#comment]] *** object の場合 [17] [CODE(HTMLa)[usemap]] 属性が [CODE(HTMLe)[[[object]]]] 要素に指定されている場合は、その [CODE(HTMLe)[object]] は画像とみなされます。 UA は、その [CODE(HTMLe)[object]] との利用者[RUBYB[対話] [interaction]]を単なるクライアント側画像写像だけで実装して構いません。 音声ブラウザやロボットは [CODE(HTMLe)[object]] を処理せずに対話できます。 UA は物体を取出したり (処理したり) さえしなくても構いません。 著者はすべての UA が物体を取出したり処理したりすることを期待するべきではありません。 [SRC[HTML 4]] [18] ということは、 [CODE(HTMLe)[object]] 自体もその内容もレンダリングせずに、 代わりに結び付けられた画像写像の [CODE(HTMLe)[map]] だけをレンダリングしておいてもよいということでしょうか。 [[#comment]] ** 実装 [14] [CODE(HTMLa)[usemap]] 属性と異なる文書にある [CODE(HTMLe)[map]] 要素を使うのに対応している [[WWWブラウザ]]は多くありません。 [CODE(XML)[[[IDREF]]]] による指定にも対応しているブラウザも少数あります。 (>>5 をみてください。) - [6] ''HTML image map test'' - [5] ''XHTML image map test - results'' [8] 素片識別子に [CODE(URI)[#]] をつけない間違いはクライアント側画像マップができたころからあったみたいです。 てことは当時の実装はそういうエラー処理をしていたんですか。 一方で当時の実装はちゃんと URI として外部参照にも対応していたものがあったという話もあります。 [[#comment]] ** 他との関係 [13] 画像写像は [CODE(HTMLe)[[[map]]]] 要素で定義します。 [[#comment]] ** 例 [19] 簡単な画像写像の例 [SRC[HTML 4、改]] [PRE(HTML)[

navigation bar ]PRE] [[#comment]] ** メモ [21] この属性は [CODE(HTMLe)[input]] 要素でも使えます。 説明がまったく無いのでなんともいえないのですが、おそらくは [CODE(HTMLa)[[[type]]]] が [CODE(HTML)[[[image]]]] の時だけ使えるものだと思われます。 しかし、 [CODE(HTML)[image]] は提出ボタンであり、 それそのものが[[鯖側画像写像]]として機能します。 [CODE(HTMLa)[usemap]] 属性が指定されていると何が起こるのか規定がないのは困ったことです。 [23] HTML 4 DTD の[[注釈]] (参考) には [Q[USEMAP points to a MAP element which may be in this document or an external document, although the latter is not widely supported]] ([CODE(HTMLa)[usemap]] はこの文書または外部文書の [CODE(HTMLe)[map]] 要素を指します。ただし後者はあまり広く実装されていません。) と書かれています。 ([[名無しさん]] [sage]) [[#comment]] * メモ