[1] [DFN[[RUBYB[[[異体属性]]]@en[variant attribute]]]]は、[[異体説明]]に含まれる[[属性]]です。

* 仕様書

[REFS[
- [2] [CITE@en[RFC 2295 - Transparent Content Negotiation in HTTP]] ([TIME[2014-08-31 19:36:42 +09:00]] 版) <http://tools.ietf.org/html/rfc2295#section-5>
]REFS]

* 構文

[5] [[異体属性]]は、名前と値を [CODE[[[{]]]] と [CODE[[[}]]]] で括ったものです。 [SRC[>>2]]

[6] 仕様書の時代的に構文上[[空白]]が明記されていませんが、名前と値の前後には[[空白]]を挿入できると思われます。

[FIG(railroad)[
= [CODE(HTTP)[[[{]]]]
= [[OWS]]
= 属性名
= [[OWS]]
= 属性値
= [[OWS]]
= [CODE(HTTP)[[[}]]]]
]FIG]

[7] 名前は、[[字句]]です [SRC[>>2]]。

;; [14] 名前の解釈は明記されていませんが、定義されている[[属性]]はすべて構文上[[大文字・小文字不区別]]となっています。

[8] 値は、0個以上の[[字句]]、[[引用文字列]]、[[空白]]といくつかの記号の列です [SRC[>>2]]。

;; [9] [[空白]]は [CODE(ABNF)@en[[[LWS]]]] とされています [SRC[>>2]] が、
現在の [[RFC 723x]] では [[OWS]] または [[RWS]] と解釈するべきでしょう。

[10] 記号は [CODE(ABNF)@en[[[tspecials]]]] から [CODE[[[}]]]] と [CODE[[["]]]]
を除外したものです。現行の [[RFC 723x]] には [CODE(ABNF)@en[[[tspecials]]]]
が既に含まれていませんが、次の[[記号]]が該当します。

[FIG(short list)[
- [CODE(char)[[["]]]]
- [CODE(char)[[[(]]]]
- [CODE(char)[[[)]]]]
- [CODE(char)[[[,]]]]
- [CODE(char)[[[/]]]]
- [CODE(char)[[[:]]]]
- [CODE(char)[[[;]]]]
- [CODE(char)[[[<]]]]
- [CODE(char)[[[=]]]]
- [CODE(char)[[[>]]]]
- [CODE(char)[[[?]]]]
- [CODE(char)[[[@]]]]
- [CODE(char)[[[[]]]]
- [CODE(char)[[[\]]]]
- [CODE(char)[[[]]]]]
- [CODE(char)[[[{]]]]
- [CODE(char)[[[}]]]]
]FIG]

;; [11] この定義を整理すると、値としては、 [CODE[[[}]]]] と[[引用文字列]]以外の [CODE["]] を除くすべての
[[ASCII印字可能文字]]を使えることとなります。
[REFS[
- [12] [CITE@en[Character set "$rfc2068:token-char | $rfc2295:extension-specials"]] ([TIME[2014-11-16 21:07:05 +09:00]] 版) <http://chars.suikawiki.org/set?expr=%24rfc2068%3Atoken-char+%7C+%24rfc2295%3Aextension-specials>
]REFS]

* 文脈

[4] [[異体属性]]は、[[異体説明]]に0個以上指定できます。

[13] 各[[属性]]は[[異体説明]]中で高々1回指定できます [SRC[>>4]]。

[15] [[異体属性]]はすべて省略可能ですが、できるだけ多く指定したほうが折衝の品質が上がり好ましいことがよくあります [SRC[>>2]]。

* 属性の一覧

[3] [[属性]]の名前として次のものがあります。
[FIG(short list)[
- [CODE(HTTP)@en[[[charset]]]]
- [CODE(HTTP)@en[[[description]]]]
- [CODE(HTTP)@en[[[encoding]]]]
- [CODE(HTTP)@en[[[features]]]]
- [CODE(HTTP)@en[[[language]]]]
- [CODE(HTTP)@en[[[length]]]]
- [CODE(HTTP)@en[[[type]]]]
]FIG]

[17] 実験用の[[属性]]は [CODE(HTTP)[[[x-]]]] で始まる名前を使わなければ[['''なりません''']]
[SRC[>>2]]。

[18] [[利用者エージェント]]は認識できない[[属性]]を無視する[['''べきです''']] [SRC[>>2]]。

[19] [[串]]は[[異体リスト]]に未知の[[属性]]があれば[[遠隔異体選択アルゴリズム]]を実行しては[['''なりません''']] [SRC[>>2]]。

[20] [[IANA登録簿]]は無いようです。

* メモ

[16] 属性値とそれに相当する[[HTTPヘッダー]]の値は必ずしも一致していなくても構いません [SRC[>>2]]。