]]
と書いてもちゃんと [SAMP(CSS)[p[lang|="ja"] ]]
と一致するようになっているわけだ。
でも XHTML じゃなくて何か UA が知らないマーク付け言語だとこうはならない。
[WEAK[悲劇的ですらある CSS の非互換問題の中ではこんなのどうでもいいことかもだけど。]]
[19] [[Namazu]] は素片識別子になる [CODE(HTMLa)[[[name]]]]
属性を勝手に小文字にしちゃうようだ ([CODE(HTMLa)[id]] にはそもそも未対応)。
おかげで対策した文書の検索結果の素片識別子が役に立たない。
[[#comment]]
* アンカー名の構文
[20] アンカー名 ([CODE(HTMLa)[name]] または [CODE(HTMLa)[id]])
は、文書内で固有でなければなりません。すなわち、
文書内の他の [CODE(HTMLa)[name]] や [CODE(HTMLa)[id]]
と同じ名前ではいけません。
しかも、大文字・小文字の違いだけの別の名前を使うこともできません。
仕様書: [[HTML 4]] 12.2.1 Syntax of anchor names
...
]PRE]
[WEAK[(HTML 4 仕様書より)]]
は違法です。
[25] HTML 4 仕様書によれば、アンカー名は [[ASCII]] 文字に制限するべきです。
[[#comment]]
* アンカー名の一致
[22] アンカー名と[[素片識別子]]の一致の検査は、
大文字・小文字を'''区別して'''行わなければなりません。
仕様書: [[HTML 4]]
- 12.2.1 Syntax of anchor names
...
...more document...
...
]PRE]
[WEAK[(HTML 4 仕様書より)]]
一部の UA は (不正に) 一致するものとみなしてしまいますが、
そうでない UA もあります。
[24] >>23 [Q[不正に]]って注記が入っているあたり、
[Q[未定義]]とはいえないような... どうよ? > HTML 4 の中の人
[26] [CODE(HTMLe)[[[a]]]], [CODE(HTMLe)[[[form]]]],
[CODE(HTMLe)[[[img]]]], [CODE(HTMLe)[[[map]]]], [CODE(HTMLe)[[[applet]]]],
[CODE(HTMLe)[[[frame]]]], [CODE(HTMLe)[[[iframe]]]]
では、固有識別子を指定するために [CODE(HTMLa)[[[name]]]]
と [CODE(HTMLa)[id]] の両方を指定することが認められます。
ただし、同じ要素の2つの属性の値は同じでなければなりません。
[28] 合法な例:
[PRE(HTML)[
...
]PRE]
[WEAK[(HTML 4 仕様書より、改)]]
[27] '''違法'''な例:
[PRE(HTML)[
...
...
...pages and pages...
]PRE]
[WEAK[(HTML 4 仕様書より、改)]]
[[#comment]]
* 大文字と小文字の区別のまとめ
[31]
,規格,識別子,区別,メモ
,SGML {[CODE(SGML)[NAMECASE GENERAL YES]]},[CODE(SGML)[ID]],なし (大文字化)
,XML,[CODE(XML)[ID]],あり
,URI 参照,素片識別子,あり
,HTML 4,[CODE(HTMLe)[a]] [CODE(HTMLa)[name]],あり,区別をなくすと区別できない名前は使用禁止
,HTML 4,[CODE(HTMLa)[id]],なし (大文字化),[CODE(HTMLe)[a]] [CODE(HTMLa)[name]] と同じ名前空間
,HTML 4,[CODE(HTMLe)[img]] [CODE(HTMLa)[name]],あり
,HTML 4,[CODE(HTMLe)[applet]] [CODE(HTMLa)[name]],あり
,HTML 4,素片識別子,あり
[[#comment]]
* id vs name
[29] [CODE(HTMLa)[id]] と [CODE(HTMLa)[name]]、
どちらを使うべきかについて、 HTML 4
仕様書 (12.2.3 Anchors with the id attribute