]]
と書いてもちゃんと [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]]
-- [CITE[12.2.1 Syntax of anchor names]]
...
...more document...
...
]PRE]
[SRC[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つの属性の値は同じでなければなりません。
[SRC[HTML 4.01 12.2.3, A.1.1.8]]
[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]],なし (大文字化),,
,SGML {[CODE(SGML)[NAMECASE GENERAL NO]]},[CODE(SGML)[ID]],あり,,
,XML,[CODE(XML)[ID]],あり,する,
,HTML 4,[CODE(HTMLe)[a]] [CODE(HTMLa)[name]],あり,する,区別をなくすと区別できない名前は使用禁止
,HTML 4,[CODE(HTMLa)[id]],"DTD: なし (大文字化), 本文: あり",する,"[CODE(HTMLe)[a]] [CODE(HTMLa)[name]] と同じ名前空間"
,HTML 4,[CODE(HTMLe)[img]] [CODE(HTMLa)[name]],あり,,
,HTML 4,[CODE(HTMLe)[applet]] [CODE(HTMLa)[name]],あり,,
,HTML 4,[CODE(HTMLe)[map]] [CODE(HTMLa)[name]],なし,する
,HTML 4,[CODE(HTMLe)[frame]] [CODE(HTMLa)[name]],なし
,HTML 4,[CODE(HTMLe)[iframe]] [CODE(HTMLa)[name]],なし
,HTML 4,[CODE(HTMLe)[form]] [CODE(HTMLa)[name]],なし,
,SGML {[CODE(SGML)[NAMECASE GENERAL YES]]},[CODE(SGML)[IDREF]],なし (大文字化),−
,SGML {[CODE(SGML)[NAMECASE GENERAL NO]]},[CODE(SGML)[IDREF]],あり,−
,XML,[CODE(XML)[IDREF]],あり,−
,URI 参照,素片識別子,あり,−
,HTML 4,素片識別子,あり,−
,HTML 4,[CODE(HTMLe)[label]] [CODE(HTMLa)[for]],"DTD: なし (大文字化), 本文: あり",−,
,HTML 4,[CODE(HTMLe)[param]] [CODE(HTMLa)[value]] ([CODE(HTMLa)[datatype]] が [CODE(HTML)[object]]),不明,−,
,HTML 4,[CODE(HTMLe)[meta]] [CODE(HTMLa)[name]],あり,しない,複数要素で同名可
,HTML 4,[CODE(HTMLe)[param]] [CODE(HTMLa)[name]],物体依存,しない,複数要素で同名可
,HTML 4,フォーム制御子 [CODE(HTMLa)[name]],あり,しない,複数要素で同名可なことも
[[#comment]]
* id vs name
[29] [CODE(HTMLa)[id]] と [CODE(HTMLa)[name]]、
どちらを使うべきかについて、 HTML 4
仕様書 (12.2.3 Anchors with the id attribute