* isindex 要素型 (HTML, XHTML 1) [2] [[HTML]] の [DFN[[CODE(HTMLe)[isindex]] 要素型]]の要素は、 その[[文書]]の[[資源]]が検索可能な索引であることを示します。 [3] 仕様書: - [[HTML 2.0]]: [[RFC 1866]] 5.2.3. Keyword Index: ISINDEX - [[HTML 4]] -- [CITE[17.8 The [CODE(HTMLe)[ISINDEX]] element]] -- [[移行用DTD]] - [[XHTML 1.0]] -- [CSECTION[C.6. Isindex]] [4] :[[名前空間名]]:[CODE(URI)[[[http://www.w3.org/1999/xhtml]]]] :[[局所名]]:[CODE(HTMLe)[[[isindex]]]] :[[開始タグ]]:必須 :[[終了タグ]]:禁止 (HTML 4), 必須 (XHTML 1) :出現できる文脈:[CODE(HTMLe)[[[head]]]], [CODE(SGML)[%[[block]]]] な文脈 :[[内容模型]]:空 ([[強制空要素]]) :[[属性]]: ,属性名 ,属性値 ,既定値 ,説明 ,状態 ,出典 ,[CODE(HTMLa)[[[action]]]] ,[CODE(SGML)[%[[URI]]]] , ,提出先 , ,[CODE(HTMLa)[[[class]]]] , ,(なし) ,[[級]] ,[HTML 4] %[[coreattrs]] ,[CODE(HTMLa)[[[dir]]]] , , ,[[書字方向]] ,[HTML 4] %[[i18n]] ,[CODE(HTMLa)[[[href]]]] ,[CODE(SGML)[%[[URI]]]] , ,提出先 ,[CODE(HTMLa)[[[id]]]] ,[CODE(SGML)[[[ID]]]] ,(なし) ,[[固有識別子]] ,[HTML 4] %coreattrs ,[CODE(HTMLa)[[[lang]]]] ,[CODE(SGML)[%[[LanguageCode]]]] ,(継承) ,[[自然言語]] ,[HTML 4] %i18n ,[CODE(HTMLa)[[[xml]]:[[lang]]]] ,[CODE(SGML)[%[[LanguageCode]]]] ,(継承) ,[[自然言語]] ,W3C 勧告 ,[XHTML 1] ,[CODE(HTMLa)[[[prompt]]]] ,[CODE(SGML)[%[[Text]]]] , , ,[HTML 4] 非推奨 ,[CODE(HTMLa)[[[style]]]] ,[CODE(SGML)[%[[StyleSheet]]]] ,(なし) ,スタイル指定 ,[HTML 4] %coreattrs ,[CODE(HTMLa)[[[title]]]] ,[CODE(SGML)[%[[Text]]]] ,(なし) ,注釈的題 ,[HTML 4] %coreattrs ,[CODE(HTMLa)@en[[[type]]]],[CODE(HTML)@en[[[khtml_isindex]]]],(なし),,非標準,[[WebKit]] [10] HTML 4 DTD の[[注釈]] (参考) には [Q[single line prompt]] とあります。 [[#comment]] ** 代替 [5] この要素型は非推奨です [SRC[HTML 4]]。 代わりに、 [CODE(HTMLe)[[[form]]]] 要素と [CODE(HTMLe)[[[input]]]] 要素を使って同じようなことが実現できます。 [[#comment]] ** 出現できる文脈 [12] [CODE(HTMLe)[isindex]] 要素型は元々の意味からすると [CODE(HTMLe)[[[head]]]] 内でのみ認められるべきでしたし、 何個あっても意味が変わらないので高々1個だけ認められるべきでした。 しかし、 [CODE(HTMLe)[isindex]] 要素の場所に入力欄を設けるという実装が行われるようになり、 [[文書]]のあらゆる場所に何個でも置けるように[Q[拡張]]されてしまいました。 [13] [[HTML 4]] ではこの要素型を [CODE(SGML)[%[[block]]]] に分類しています。従って、 [CODE(HTMLe)[[[body]]]] 内の[[行内要素]]しか認められない場所''以外''ほとんどどこにでも書けます。 また、 [[DTD]] 内の[[引数実体]] [CODE(SGML)[%head.content]] で高々1回記述できると規定しています。つまり、 [CODE(HTMLe)[[[head]]]] の子供としてどこにでも1回だけ指定できます。 [11] [[XHTML 1.0]] 互換性指針は、 [CODE(HTMLe)[[[head]]]] 内に複数の [CODE(HTMLe)[isindex]] を入れるのは互換性のため好ましくないとしています [SRC[XHTML 1.0 C.6]]。 [[XHTML 1.0]] の [[DTD]] をよく見ると [CODE(HTMLe)[isindex]] が [CODE(XML)[%block;]] に含まれるのはそのままですが、 [CODE(HTMLe)[head]] については [CODE(XML)[%[[head.misc]];]] に移動していることがわかります。 [[XML]] の[[内容模型]]の記述能力の限界により、 簡単のため定義の仕方が変わったようです。 これにより、 [CODE(HTMLe)[isindex]] は [CODE(HTMLe)[head]] 内であっても任意の回数使用できるようになりました。 互換性指針が言っているのはこの変更のことのようです。 [19] >>11 この変更について[[Bjoern Hoehrmann]]が問い質していますが、 [[Steven Pemberton]]は >>11 のような説明をしています。 それに対して[[Bjoern Hoehrmann]]は、[[DTD]]の変更は他にもあるのにどうしてこれだけ取り上げるのだとたずねていますが、 返答はありません。 ;; [CITE[HTML Working Group Voyager Issue Tracking System - XHTML-1.0-SE/8836]] ([[名無しさん]] [sage]) [[#comment]] ** 不思議解釈 [1] [[WebTV]] では「属性なし」で、次のような例が載っています。 [PRE(HTML)[ ]PRE] [WEAK[(出典: [CODE(HTMLe)[isindex]] )]] こんなのは [[SGML]] ではないと思うんですがねぇ。 [[#comment]] ** 歴史 [6] 本来この要素は索引があって検索可能なことを表すだけで、 検索フォームは UA の機能に過ぎなかった [WEAK[(本文領域には表示せず、メニューから検索機能を呼出せるだけの]] UA もあった)]] のに、 いつの間にか文章の適当なところに配置できる簡易フォーム機能となってしまいました。 フォーム提出先 URI まで指定できるようになっています [WEAK[(HTML 4 にはその機能は入りませんでしたが)]]。 HTML 4 に至っては、 > This element creates a single-line text input control. [SRC[HTML 4 17.8]] などと定義しています。 [7] しかも、 [CODE(HTMLe)[[[head]]]] 要素が創設された時にそちらに収納されるはずのものであったにもかかわらず、 いつの間にか本文のどこにあっても良いことになっています。 ここまでして高機能化するほど使い道があるものではありませんし、 [CODE(HTMLe)[[[form]]]] が使いづらいというわけでもないのですが、 どうしてこうも拡張されてしまったのでしょうと思わずにはいられません。 [20] [CITE[Notes on informal HTML-IG meeting 25 July 94]] ([TIME[1994-08-24 02:08:51 +09:00]] 版) > ISINDEX should not be allowed in the body of messages. (This has always been a bug encouraged by Mosaic's handling of if, but it should be done with a small form, and it is messy to allow it in two roles.) ([[名無しさん]]) [[#comment]] ** 例 [8] メッセージつきの例 [SRC[HTML 4 17.8]] [PRE(HTML)[ ]PRE] [CODE(HTMLe)[[[input]]]] を使って書き換えた例 [SRC[HTML 4 17.8、改]] [PRE(HTML)[

]PRE] 但し、フォームと索引では[[提出]]方法が異なるので、 この2つの例は交換可能ではありません。 [18] [[WAIS]]で検索する例: [PRE(HTML obsolete example code)[ ]PRE] ;; 出典: [CITE[Lynx Users Guide v2.7.1]] ([[名無しさん]] [sage]) [[#comment]] ** memo [9] [CODE(HTMLe)[isindex]] の意味がよく規定されているのは[[基底URI]] が [[HTTP]] である場合のみです。また、入力する文字列は [[Latin-1]] に制限されます。 [SRC[HTML 4 17.8]] [14] [[Firefox]] 1.5では、[CODE(HTMLe)@en[[[isindex]]]][[タグ]]およびその中の[[属性指定]]がそのまま[[DOM]]上の[[要素節点]]および[[属性節点]]として反映されます。表示上は [PRE(HTML example code)[
[VAR@en[prompt text]]
]PRE] のようになります ([[XBL]]では''ない''ようです)。 [VAR@en[prompt text]]は[CODE(HTMLa)@en[[[prompt]]]][[属性値]]か、 なければ[[利用者界面]]と同じ[[言語]]の文章になります。 日本語の場合 > これは検索可能なインデックスです。検索キーワードを入力してください: になります。 [CODE(HTMLe)@en[[[isindex]]]]に[[CSS]]を適用することは可能ですが、 [CODE(HTMLe)@en[[[hr]]]]''のようなもの''や[CODE(HTMLe)@en[[[input]]]]''のようなもの''には適用できないみたいです。 ([[名無しさん]]) [15] [CODE(DOMa)@en[[[innerHTML]]]]には[CODE(HTMLe)@en[[[isindex]]]]の[[開始タグ]] (とあれば、[[属性指定]]) だけが現れます。 ([[名無しさん]]) [16] [[Opera]] 8.5および[[Opera]] 9 TP1では、[CODE(HTMLe)@en[[[isindex]]]][[開始タグ]]は[[DOM]][[木]]において[CODE(HTMLe)@en[[[isindex]]]][[要素節点]]になり、その[[子供]]として - [CODE(HTMLe)@en[[[hr]]]][[要素節点]] - [[テキスト節点]]: [CODE(HTMLa)@en[[[prompt]]]][[属性値]]か、 なければ[[利用者界面]]の[[言語]]の文章 ([[英語]]では[Q@en[This is a searchable index]]) - [CODE(HTMLe)@en[[[br]]]][[要素節点]] - [CODE(HTMLe)@en[[[input]]]][[要素節点]] -- [CODE(HTMLa)@en[[[type]]]][[属性節点]]: [CODE(HTML)@en[[[text]]]] -- [CODE(HTMLa)@en[[[size]]]][[属性節点]]: [CODE(HTML)@en[20]] - [CODE(HTMLe)@en[[[hr]]]][[要素節点]] が作られます。 [CODE(HTMLe)@en[[[isindex]]]]には[[CSS]]が適用され、 その[[子供]]も通常の方法で[[CSS]]によって[[レンダリング]]されるようです。 [CODE(DOMa)@en[[[innerHTML]]]]には[CODE(HTMLe)@en[[[isindex]]]]の[[開始タグ]] (とあれば、[[属性指定]]) の''後''に、[[内容]]を[[直列化]]したものが現れます。 ([[終了タグ]]は現れ''ません''。) ([[名無しさん]]) [17] [[WinIE 6]]では、[CODE(HTMLe)@en[[[isindex]]]][[開始タグ]]は[[DOM]][[グラフ]]において[CODE(HTMLe)@en[[[form]]]][[要素節点]]と、 その[[子供]]の[[節点]]列: - [CODE(HTMLe)@en[[[hr]]]][[要素節点]] - [[テキスト節点]]: [CODE(HTMLa)@en[[[prompt]]]][[属性値]]か、 なければ[[利用者界面]]の[[言語]]の文章。 [[日本語]]の場合[Q[この索引は検索が可能です。検索するキーワードを入力してください。]]。 - [CODE(HTMLe)@en[[[input]]]][[要素節点]] -- [CODE(HTMLa)@en[[[name]]]][[属性節点]]: [CODE(HTML)@en[[[isindex]]]] - [CODE(HTMLe)@en[[[hr]]]][[要素節点]] となります。[[属性]]は、 - [CODE(HTMLa)@en[[[action]]]][[属性]]があれば、 [[DOM]]では[CODE(HTMLe)@en[[[form]]]][[要素]]に[[指定]]されます。 - [CODE(HTMLa)@en[[[name]]]][[属性]]や[CODE(HTMLa)@en[[[type]]]][[属性]]があっても、[[DOM]]には現れません。 - [CODE(HTMLa)@en[[[promot]]]][[属性]]は[[テキスト節点]]として現れ、[[属性]]としては[[DOM]]に現れません。 - その他の[[属性]]は[CODE(HTMLe)@en[[[input]]]][[要素節点]]に付されます。 それが[CODE(HTMLe)@en[[[input]]]][[要素]]で有効な[[属性]]であるなら、その効果が現れます。 [[CSS]]による[[レンダリング]]指定は[[DOM]]上の[[要素]]構造に対して適用され、 [CODE(HTMLe)@en[[[isindex]]]][[要素]]への指定は適用されません。 [CODE(DOMa)@en[[[innerHTML]]]]は[[DOM]]上の構造を[[直列化]]したものとなります。 [96] [CODE(DOMm)@en[[[createElement]]]] で作った [CODE(HTMLe)@en[[[isindex]]]] [[要素]]を [[HTML文書]]に挿入した場合、 - [[Firefox]] 3.5 では [CODE(HTMLe)@en[[[isindex]]]] [[要素]]として機能します - [[Chrome]] では [CODE(HTMLe)@en[<[[input]] [[type]]=[[text]]>]] のように[[レンダリング]]されます (動きは未検証) - [[Opera]], [[WinIE]] では何も[[レンダリング]]されません どの[[ブラウザ]]でも [[DOM]] 上は [CODE(HTMLe)@en[[[isindex]]]] [[要素]]のままです。 ;; [TIME[2010-07-24T05:41:57.600Z]] ;; ;; [97] 普通に [CODE(HTMLe)@en[<[[isindex]]>]] [[開始タグ]]を [[HTML文書]]に書くと [[Firefox]] 以外は複数の [[HTML]] [[要素]]に展開した状態で [[DOM]] に現れますから、この結果は頷けます。 * [CODE(HTMLe)@en[isindex]] 要素 [CODE(HTMLa)@en[type]] 属性 [92] [[WebKit]] は、 [CODE(HTMLe)@en[[[isindex]]]] [[開始タグ]]が [[HTML文書]]中に現れると、 代わりに [CODE(HTMLe)@en[[[div]]]] [[要素]]などを [[DOM]] に挿入しますが、その一部として、入力欄の部分には [CODE(HTMLe)@en[[[isindex]]]] [[要素]]が挿入され、その [CODE(HTMLa)@en[[[type]]]] [[属性]]は [CODE(HTML)@en[[[khtml_isindex]]]] となります。 ;; [[DOM]] 上の [CODE(HTMLe)@en[[[isindex]]]] [[要素]]は [CODE(HTMLe)@en[[[input]]]] [CODE(HTMLa)@en[[[type]]]] [CODE(HTML)@en[[[text]]]] のように[[レンダリング]]されます。 少なくてもレンダリングに関しては、 [CODE(HTMLa)@en[[[type]]]] [[属性]]の影響はないみたいです。 ;; なお、 [CODE(HTMLe)@en[[[isindex]]]] [[開始タグ]]中の[[属性]]は [[DOM]] の [CODE(HTMLe)@en[[[isindex]]]] [[要素]]に設定されるのですが、 [CODE(HTMLa)@en[[[type]]]] [[属性]]は [CODE(HTML)@en[[[khtml_isindex]]]] に常になります。 [93] [CITE@en[(X)HTML5 Tracking]] ([TIME[2009-09-29 23:46:06 +09:00]] 版) [94] [CITE[Manual pages]] ([TIME[2010-02-14 12:24:02 +09:00]] 版) [95] [CITE[IRC logs: freenode / #whatwg / 20100311]] ([TIME[2010-03-13 21:41:39 +09:00]] 版)