]]
と書いてもちゃんと [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