
* [CODE(HTMLe)@en[form]] 要素、 [CODE(HTMLa)@en[input]] 要素 [CODE(HTMLa)@en[accept]] 属性 (HTML)

[1] [[HTML]] の [CODE(HTMLe)[[[form]]]] 要素・
[CODE(HTMLe)[[[input]]]] 要素の
[DFN[[CODE(HTMLa)[accept]] 属性]]は、
[[フォーム処理エージェント]]が正しく扱うことのできる[[媒体型]]を指定します。

[21] 
:状態:[[W3C]] [[勧告]]、[[WHATWG]] [[WD]]
:[[要素型]]:[CODE(HTMLe)@en[[QN[[[form]]] [http://www.w3.org/1999/xhtml]]]]、
[CODE(HTMLe)@en[[QN[[[input]]] [http://www.w3.org/1999/xhtml]]]]
:[CODE(DOMa)@en[[[type]]]]:[CODE(HTML)@en[[[file]]]]、
([CODE(HTMLe)@en[[[form]]]])
:[[属性名]]:[CODE(HTMLa)@en[[[accept]]]]
([Q@en[accept]] ([Q[承認]]) より、
[[HTTP]] の [CODE(HTTP)@en[[[Accept]]:]] [[頭欄]]と同じ)
:[[属性値]]:[[媒体型]]の[[読点]][[区切り]]の[[並び]] (>>2)
:[[既定値]]:すべて (>>4)

[5] 仕様書:
- [[HTML 4]] ([[Web Forms 1.0]])
-- [CODE(HTMLe)[form]] 要素 [CODE(HTMLa)[accept]] 属性
<IW:HTML4:"interact/forms.html#adef-accept">
-- [CITE[HTML 4 Changes]]
<IW:HTML4:"appendix/changes.html#h-A.1.1.12">
- [[Web Forms 2.0]]
-- [CSECTION@en[2.15. Extensions to file upload controls]]
<IW:WF2:"#upload">
-- [CSECTION@en[2.18. Handling unexpected elements and values]]
<IW:WF2:"#handling">
-- <http://www.whatwg.org/specs/web-forms/current-work/#accept1>

[10]
HTML 4 DTD [[注釈]] (参考) には
[Q[list of MIME types for file upload]]
(ファイルうp用 MIME 型の並び)
と説明があります。


** 属性値

[2] この属性の値は [CODE(SGML)[%[[ContentTypes]]]] です。
[CODE(SGML)[%[[ContentType]]]] を[[読点]]で分離して複数指定できます。
[[SGML]] 的には [CODE(SGML)[[[CDATA]]]] です。 [SRC[HTML 4 17.3]]
例によって、実際には、読点の前後に[[空白]]を挿入できます。

[21] [[Web Forms 2.0]] では、[[属性値]]の[[構文]]は、
次のように定義されています [SRC@en[WF2 2.15]]:

>
- accept  := space* range [ space* "," space* range]* space*
- range   := "*/*" | type "/*" | type "/" subtype
- space   := U+0020 | U+000A
- type    := defined in RFC2045 [RFC2045]
- subtype := defined in RFC2045 [RFC2045]

- [22] 最初と最後や[[読点]]の前後に[[空白]]を挿入可能なことが明確化されていますが、
[[空白]]は [[HTML 4]] の[[空白]]ではなく、
[CODE(charname)@en[[[SPACE]]]] と
[CODE(charname)@en[[[LINE FEED]]]] だけのようです。
- [23] [[HTML 4]] で認められていた純粋な[[媒体型]]だけではなく、
[CODE(MIME)@en[[[*/*]]]] や [CODE(MIME)@en[[[text/*]]]]
のような[[媒体型]]の[[範囲]]で指定[['''して構いません''']]。
[SRC@en[WF2 2.15]]
- [24] [[媒体型]]に[[引数]]を指定できるかは [[HTML 4]]
では曖昧でしたが、 [[Web Forms 2.0]]
では指定[['''してはなりません''']]。
[SRC@en[WF2 2.15]]

[4] この属性は省略可能です。
[SRC@en[HTML 4]]

[28] '''継承'''

- [CODE(HTMLe)@en[[[form]]]] [[要素]]の
[CODE(HTMLa)@en[[[accept]]]] [[属性]]は、
その[[フォーム]]に属するすべての [CODE(HTML)@en[[[file]]]]
[[制御子]]の[[既定値]]となります。
- [CODE(HTML)@en[[[file]]]] の
[CODE(HTMLa)@en[[[accept]]]] [[属性]]が与えられていれば、
その[[制御子]]の属する[[フォーム]]の
[CODE(HTMLa)@en[[[accept]]]] [[属性]]は無視されます。
- [CODE(HTML)@en[[[file]]]] の
[CODE(HTMLa)@en[[[accept]]]] [[属性]]が与えれれていても、
[[非妥当]]なら、 [CODE(MIME)@en[[[*/*]]]]
が指定されたものとみなします。

[SRC@en[WF2 2.15]]

[[#comment]]


** レンダリング

[6] UA は、 [CODE(HTMLa)[accept]] 情報を利用して、
ファイル選択[[制御子]] ([CODE(HTMLe)[[[input]]]] [CODE(HTMLa)[[[type]]]]
[CODE(HTML)[[[file]]]]) で選択できる[[ファイル]]の種類を限定しても構いません
[SRC[HTML 4 17.3]]。

[25] '''ファイル一覧'''

[[利用者エージェント]]は、[[利用者]]に[[ファイル]]を[[一覧]]から選ぶ手段を提供していて、
[[ファイル]]の種類による[[濾過]]を行っているなら、
その構築のために [CODE(HTMLa)@en[[[accept]]]]
[[属性]]の情報を利用[['''するべきです''']]。
[SRC@en[WF2 2.15]]

[26] '''ファイル作成'''

[[利用者エージェント]]は、[[利用者]]が[[ファイル]]を作成し、
その[[ファイル]]を[[うp]]する手段を提供しているなら、
その[[ファイル]]を作成するために使用する[[応用]]を選択するために
[CODE(HTMLa)@en[[[accept]]]] [[属性]]の情報を利用[['''するべきです''']]。
[SRC@en[WF2 2.15]]

;; これは、[[ファイル・システム]]がなく、
その場で[[ファイル]]を作成するしかない小さな[[装置]]上の
[[Webブラウザ]]で特に有用と考えられています。
[SRC@en[WF2 2.15]]

[[#comment]]


** フォーム

[27] 
少なくても1つの[[ファイル]]が [CODE(HTMLa)@en[[[accept]]]]
で指定された条件を満足しないなら、
[CODE(DOM)@en[[[typeMismatch]]]] [[旗]]が使われます。
[[利用者エージェント]]は、
[[ファイル]]が誤った[[媒体型]]として[[札付け]]されているときに、
これを[[上書き]]する手段を[[利用者]]に提供[['''して構いません''']]。
[SRC@en[WF2 2.15]]

[32] '''誤り処理'''

[[非妥当]]な値が与えられていた場合、 [[DOM]] 
ではそのままの値を使用[['''しなければなりません''']]が、
[[比較]]時 (>>25 や[[提出]]時など) には
[CODE(MIME)@en[[[*/*]]]] として処理[['''しなければなりません''']]。
[SRC@en[WF2 2.18]]

[[#comment]]


** 関連

[3] この属性の値は働きとしては [[HTTP]] の 
[CODE(HTTP)[[[Accept]]:]] 頭欄とよく似ていますが、
[CODE(HTTP)[[[q]]]] 値を指定することはできません。

[7] フォームの[[提出]]に使う媒体型の指定は、 [CODE(HTMLa)[accept]]
属性ではなく [CODE(HTMLa)[[[enctype]]]] 属性により行います。

[CODE(HTMLa)[[[accept-charset]]]] 属性は名前や HTTP の頭欄から類推すると
[CODE(HTMLa)[accept]] 属性とセットのように思えますが、
実際には [CODE(HTMLa)[enctype]] 属性と組になっています。

[8] HTML 4 では [CODE(HTMLe)[form]] 要素と [CODE(HTMLe)[input]]
要素に指定できますが、両方に指定した場合の相互作用については規定がありません。

[[#comment]]


** 歴史

[9] [CODE(HTMLe)[form]] 要素の [CODE(HTMLa)[accept]] 属性は、
[[HTML 4]] で追加されました。 [[HTML 4.0]] では仕様書本文内の [[DTD]]
素片や各種 [[DTD]] 本体で [CODE(HTMLa)[accept]] 属性の[[属性定義]]が欠落しており、
仕様書本文の規定だけが存在していました。 [[HTML 4.01]]
で DTD に追加されました [SRC[HTML 4 A.1.1.12]]。

[31]
[[Web Forms 2.0]] で、
[[属性値]]の[[構文]]が拡張され、更に
[CODE(MIME)@en[[[*]]]] が使えるようになりました。

[[#comment]]


** 例

[29] [SRC@en[WF2 2.15]]
[PRE(HTML example code)[
<input type="file" name="avatar"
    accept="image/*"/>
]PRE]

この例では、 [CODE(MIME)@en[[[image/png]]]] ([[PNG]])、
[CODE(MIME)@en[[[image/jpeg]]]] ([[JPEG]] [[JFIF]])、
[CODE(MIME)@en[[[image/svg+xml]]]] ([[SVG]])
などを[[うp]]できます。

[30] '''音声日記の執筆フォームの例''' [SRC@en[WF2 2.15]]
[PRE(HTML example code)[
<form action="/weblog/submit" method="post" enctype="multipart/form-data">
<label>
Attach your audio-blog sound file:
<input type="file" name="blog" accept="audio/*"/>
</label>
<input type="submit" value="Blog!"/>
</form>
]PRE]

[[利用者エージェント]]は、[[ファイル]]を選択するための[Q[[[参照]]]]ボタンの代わりに、
または一緒に、
[Q[[[録音]]]]ボタンを提供することができます。
[Q[[[録音]]]]ボタンを押すと、
[[録音]]のための[[応用]]が起動します。

[[#comment]]


** メモ

[33]
[CITE@en['''['''WF2''']''' HTMLFormElement.accept vs. function accept(){}]] ([[Simon Pieters]] 著, [TIME[2008-02-21 02:07:17 +09:00]] 版) <http://lists.w3.org/Archives/Public/public-html/2008Feb/0315.html>
([[名無しさん]])


[[#comment]]


* [CODE(HTMLe)@en[textarea]] 要素 [CODE(HTMLa)@en[accept]] 属性 (HTML)

[11] [[HTML]] の [CODE(HTMLe)@en[[[textarea]]]] [[要素]]の
[DFN[[CODE(HTMLa)@en[accept]] [[属性]]]]は、
期待される内容の[[媒体型]]を示します。

[12]
:状態:[[WHATWG]] [[WD]]
:[[要素型]]:[CODE(HTMLe)@en[[QN[[[textarea]]] [http://www.w3.org/1999/xhtml]]]]
:[[属性名]]:[CODE(HTMLa)@en[[[accept]]]]
([Q@en[accept]] ([Q[承認]]) より、 [CODE(HTMLe)@en[[[form]]]]
[[要素]]の [CODE(HTMLa)@en[[[accept]]]] [[属性]]や
[[HTTP]] の [CODE(HTTP)@en[[[Accept]]:]] [[頭欄]]とおなじ)
:[[属性値]]:
:[[既定値]]:

[13] 仕様書:
- [[Web Forms 2.0]]
-- [CSECTION@en[12.14. Extensions to the [CODE(HTMLe)@en[[[textarea]]]] element]]
<IW:WF2:"#extensions">


** 属性値

[15] '''属性値'''
[[属性値]]は、[[テキスト]]系[[媒体型]]名と[['''しなければなりません''']]。
[[引数]]があっても構いません。
[SRC@en[WF2 2.14]]

[16] '''既定値'''

この[[属性]]が省略された場合や[[利用者エージェント]]が認識できない値の場合の[[既定値]]は、
[CODE(MIME)@en[[[text/plain]]]] と[['''しなければなりません''']]。
[SRC@en[WF2 2.14]]

[[#comment]]


** レンダリング

[14]
[[利用者エージェント]]は、
この[[属性]]を、より適切な[[編集器]]、
[[構文]]着色、[[綴り検査器]]等を提供するために使用[['''して構いません''']]。
[SRC@en[WF2 2.14]]

[[#comment]]


** 関連

[17]
[CODE(HTMLe)@en[[[form]]]] [[要素]]や
[CODE(HTMLe)@en[[[input]]]] [[要素]]の同名の
[CODE(HTMLa)@en[[[accept]]]] [[属性]]は、
[[ファイル・アップロード制御子]]のためのもので、
[[意味]]も[[構文]]も異なっています。
[SRC@en[WF2 2.14]]

[[#comment]]


** 例

[18] [SRC@en[WF2 2.14]]
[PRE(HTML example code)[
accept="text/plain"
]PRE]

[19] [SRC@en[WF2 2.14]]
[PRE(HTML obsolete example code)[
accept="message/news"
]PRE]

[20] [SRC@en[WF2 2.14]]
[PRE(HTML example code)[
accept="image/svg+xml"
]PRE]

[[#comment]]


** メモ

[[#comment]]

* [CODE(XMLe)@en[app:accept]] 要素

[34] [[AtomPub]] の [DFN[[CODE(XMLe)@en[app:[[accept]]]] [[要素]]]]は、
[[集成]]に [CODE(HTTP)@en[[[POST]]]] することができる[[表現]]の[[媒体範囲]]を表します
[SRC@en[[[AtomPub]]]]。

:[[局所名]]:[CODE(XMLe)@en[[[accept]]]]
:文脈:[CODE(XMLe)@en[app:[[collection]]]] の[[子要素]]として
:[[内容モデル]]:[[媒体範囲]]
:[[属性]]:

仕様書:
[CITE@en[RFC 5023 - The Atom Publishing Protocol]] ([TIME[2008-11-20 18:52:14 +09:00]] 版) <http://tools.ietf.org/html/rfc5023#[41] [42] section-8.3.4>

** 内容

[35] この[[要素]]の値は [[RFC 2616]] で定義されている[[媒体範囲]]です。
この[[要素]]は [[HTTP]] の [CODE(HTTP)@en[[[Accept]]:]] [[頭欄]]と似ています。
[[媒体型引数]]を指定することもできます。しかし、
優先度はなく、 [[RFC 2616]] で規定されている [CODE(ABNF)@en[[[accept-params]]]]
([CODE(HTTP)@en[[[q]]]] [[引数]]など) は意味を持ちません。
[SRC@en[[[AtomPub]]]]

;; [40] ということは、 [CODE(HTTP)@en[[[q]]=0]] は正反対の意味を持つことになります。

[36] [[媒体範囲]]の周りには [[XMLの空白]]を含めることができますが、
意味を持たず、無視しなければ[['''なりません''']] [SRC@en[[[AtomPub]]]]。

[37] [[媒体範囲]]には [CODE(MIME)@en[[[application/atom+xml;type=entry]]]] 
を含めることができます。この値は [[Atomエントリー文書]]を表します。
[SRC@en[[[AtomPub]]]]

[39] この[[要素]]が[[空]]の場合、[[クライアント]]は[[集成]]が新しい[[エントリー]]の作成に対応していないものと考える[['''べきです''']]。

;; [43] この[[要素]]は複数使えますが、その場合どうなるのでしょう?

** 既定値

[38] この[[要素]]が指定されなかった場合、クライアントは
[CODE(MIME)@en[[[application/atom+xml;type=entry]]]] が指定されたのと[[等価]]に扱う[['''べきです''']]。

* メモ

[44] [CITE@en[Web Applications 1.0 r7057     Introduce extensions in accept=''.]]
( ([TIME[2012-04-19 08:22:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7056&to=7057>

[45] [CITE[Issue 3311016: Support accept attribute for an <input type=file> element.... - Code Review]]
([TIME[2015-09-02 11:01:05 +09:00]] 版)
<https://codereview.chromium.org/3311016>

[46] [CITE[Release Notes for Safari Technology Preview 38 | WebKit]]
([TIME[2017-08-24 12:11:35 +09:00]])
<https://webkit.org/blog/7877/release-notes-for-safari-technology-preview-38/>

[47] [CITE@en[Editorial: update usage of the MIME Sniffing Standard]]
([[domenic]]著, [TIME[2018-02-17 03:42:58 +09:00]])
<https://github.com/whatwg/html/commit/fc82f4f8774a2e7e80f6c9477bd881f6c783b186>

[48] [CITE@en[Editorial: update usage of the MIME Sniffing Standard by domenic · Pull Request #3455 · whatwg/html]]
([TIME[2018-02-17 18:45:36 +09:00]])
<https://github.com/whatwg/html/pull/3455>

[49] [CITE@en[Make <input type="file"> reject dropped file(s) that don't match "accept" attribute · Issue #4216 · whatwg/html · GitHub]]
([TIME[2019-01-08 10:41:18 +09:00]])
<https://github.com/whatwg/html/issues/4216>