では、この属性の値の役割として、
- [[スタイル・シート]]の[[選択子]]。
- [[スクリプト]]から特定の要素を参照する手段。
- 宣言済み [CODE(HTMLe)[[[object]]]] 要素の名前。
- [[UA]] の一般目的処理のため。たとえば、次の時の欄の識別。
-- HTML から [[DB]] にデータを取り出すとき
-- 他の書式に HTML 文書を翻訳するとき
- [[リンク]]の[[終点アンカー]]の識別子
を挙げています。
[[#comment]]
** 属性値
[13]
この属性は、 HTML 4 的には [CODE[[[name]]]] 型、
[[SGML]]/[[XML]] 的には [CODE(SGML)[[[ID]]]] 型です。
[4] [[HTML]] の [CODE(HTMLa)[id]] 属性値の取りうる値:
- draft [[HTML 3.0]]: [CODE(regex)[ [A-Za-z][A-Za-z0-9.-]*]]
-- IETF [[HTML 2.x]]: [CODE(regex)[ [A-Za-z][A-Za-z0-9.-]*]]
- W3C HTML 4: [CODE(regex)[ [A-Za-z][A-Za-z0-9._:-]*]]
- W3C [[XHTML 1]]: [CODE(regex)[\{名前開始文字}\{名前文字}*]]
詳しくは[[噂のID問題]]をご覧下さい。
[14] この属性の値の名前空間は [CODE(HTMLe)[[[a]]]] 要素の [CODE(HTMLa)[[[name]]]]
属性と共有しています。
[15] この属性は省略可能です。省略時は [CODE(SGML)[ID]] なしになります。
[[#comment]]
** 大文字と小文字
[DEL[
[11] (HTML は、大文字・小文字を区別しない(たぶん)。)
([[XHTML]] は、大文字・小文字を区別する。)
[1] >>11 HTML でも大文字・小文字が区別されるという話がありますが、どうなんでしょう?
[5] >>1 IETF/W3C HTML の [[SGML宣言]]によれば、
[[名前]]の大文字と小文字は区別されません。 (大文字に正規化されます。) 実装には区別するものもきっとあるんでしょうが。。。
]DEL]
[12] >>11,>>1,>>5 この問題 (通称[[噂のID問題]])
は非常に難しい状態にあることがわかっています。
詳しくは[[噂のID問題]]の頁をごらんください。
[[#comment]]
** 実装
[7] [[NC]] は (少なくても 4.01 は) [CODE(HTMLa)[id]] 属性に対応していません。
[[#comment]]
** 例
[16] 終点アンカーとしての使用例
[PRE(HTML)[
You may read more about this in Section Two.
...later in the document
Section Two
...later in the document
Please refer to Section Two above
for more details.
]PRE]
[WEAK[(HTML 4 仕様書より、改)]]
[17] 終点アンカーとしたいときで、適切な要素がないときには、
[CODE(HTMLe)[[[a]]]] 要素が使えます。
[PRE(HTML)[
I just returned from vacation! Here's a
photo of my family at the lake..
]PRE]
[WEAK[(HTML 4 仕様書より、改)]]
[[#comment]]
** メモ
[18] HTML 4 仕様書には [CODE(HTMLa)[id]]
属性の[[属性値指定]]で[[文字参照]]が使えないようなことが書かれていますが、
これは誤りで、[[属性値表記]]なら使うことができます。
[[実体参照]]ももちろん使えます。
例: [SAMP(HTML)[Martin Dürst]]
[19]
>>18
id は名前ですから、HTML 4 で Ü などの文字を含むことはできません (例えば id="DURST" なら可能ですが)。
なお、XHTML では名前文字の範囲が広がっていますので、id="DÜRST" も valid です。
([[名無しさん]])
[[#comment]]
* id 属性 (XML 型録)
[6] [[XML]] [[型録]]の要素型
([[名前空間名]]が
[CODE(URI)[[[urn:oasis:names:tc:entity:xmlns:xml:catalog]]]]
及び
[CODE(URI)[[[urn:oasis:names:tc:entity:xmlns:tr9401:catalog]]]]
の全ての要素型) には [CODE(XML)[id]] 属性
(型 = [CODE(XML)[[[ID]]]]) が存在します。
この属性は型録的には意味が無く、単に識別のためだけにあります。
省略可能です。
[[#comment]]
* メモ
- [2] しっかし、なんで [[XML]] つくる時に [CODE[xml:id]] 属性つくんなかったんかなあ。
- [8] >>2 そのうち出来る。はず。多分。てゆかさっさと出来てくれ。
- [3] ''を使おう(1)'' : [[XPath]] の [CODE(XPath)[[id()]] 関数について。