[1] [DFN[[RUBYB[互換性無case一致]@en[compatibility caseless matching]]]]とは、
[[互換分解]]をも等しいとみなした上で[[大文字]]と[[小文字]]を無視した[[比較]]です。

* 仕様書

[REFS[
- [5] <http://www.unicode.org/versions/Unicode6.2.0/ch03.pdf#page=67>
- [2] [[HTML Standard]] <http://www.whatwg.org/specs/web-apps/current-work/complete.html#compatibility-caseless>
]REFS]

* 定義

[6] [DFN[[RUBYB[互換性無case一致]@en[compatibility caseless matching]]]]とは、2つの[[文字列]]に対する[[比較]]演算であり、
両者にそれぞれ [[NFD]]、 [CODE@en[[[toCasefold]]]]、[[NFKD]]、[CODE@en[[[toCasefold]]]]、
[[NFKD]] をこの順に適用した結果が等しいことをいいます [SRC[>>5]]。

[7] [DFN[[RUBYB[互換性無case]@en[compatibility caseless]]]]な形で[[比較]]するとは、
[[互換性無case一致]]を、[[言語]]依存の[[仕立て]]なしで適用することをいいます [SRC[>>2]]。

;; [8] [[Unicode Standard]] の >>6 の定義が[[言語]]依存の[[仕立て]]を認めているかは曖昧で、
認めていると解釈できなくもありませんが、 [[HTML Standard]] は禁止しています。

* 歴史

** HTML

[3] [[HTML]] で[[互換性大文字・小文字不区別]]な比較が使われるのは、
[FIG(list)[
- [CODE(HTMLa)@en[[[usemap]]]] [[属性]]と [CODE(HTMLe)@en[[[map]]]] [[要素]]の [CODE(HTMLa)@en[[[name]]]] [[属性]]との比較
- [CODE(HTML)@en[[[<input type=radio>]]]] な[[フォーム制御子]]でひとまとまりとして扱うべき対象の特定のための [CODE(HTMLa)@en[[[name]]]] [[属性]]の比較
]FIG]
... の2箇所だけで、他はすべて[[ASCII大文字・小文字比較]]を使っています。

[4] この2箇所でだけ[[互換性大文字・小文字不区別]]が使われているのは、既存の実装および[[文書]]との互換性を保つために必要と判断されたからです。ただし、[[WinIE]] 等の既存の実装による[[大文字]]と[[小文字]]の同一視は必ずしも[[互換性大文字・小文字不区別]]と一緒ではありません。
ただ、新たに [[WinIE]] の挙動をリバースエンジニアリングして新しい仕様を作る必要が認められるほどには互換性の問題は深刻ではなく、[[Unicode]] が規定する一致演算で十分としているようです。

[10] [TIME[2016年10月][2016-10]]、実態を調査した結果不要であることが判明したとして、
[[大文字と小文字を区別]]する[[比較]]に改められました。

[REFS[
- [9] [CITE@en[Remove "compatibility caseless" matching]]
([[domenic]]著, [TIME[2016-10-21 04:41:46 +09:00]])
<https://github.com/whatwg/html/commit/6acdb2122298d2bb7bb839c0a61b4e1f9b0f9bc9>
]REFS]
