[2] [DFN[[CODE(HTMLa)@en[[[id]]]]]] [[属性]]は、[[要素]]に[[識別子]]を割り当てるものです。

* id 属性 (HTML, XHTML 1)

[9] [CODE(HTMLa)[id]] [[属性]]は、 [[HTML]] のほとんどの[[要素型]]で定義されています。
この属性は、[[要素]]に[[名前]]を割り当てます。
名前は[[文書]]内で固有である必要があります。

仕様書:
- [[HTML 4]]
-- [CODE(HTMLa)[id]] <IW:HTML4:"struct/global.html#adef-id">
-- 12.2.3 Anchors with the id attribute
<IW:HTML4:"struct/links.html#anchors-with-id">
-- 14.2.3 Header style information: the [CODE(HTMLe)[STYLE]] element
<IW:HTML4:"present/styles.html#style-group">

[10] 仕様書 <IW:HTML4:"struct/global.html#id-and-class">
では、この属性の値の役割として、
- [[スタイル・シート]]の[[選択子]]。
- [[スクリプト]]から特定の要素を参照する手段。
- 宣言済み [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 <A href="#SECTION2">Section Two</A>.
...later in the document
<H2 id="SECTION2">Section Two</H2>
...later in the document
<P>Please refer to <A href="#SECTION2">Section Two</A> above
for more details.
]PRE]

[WEAK[(HTML 4 仕様書より、改)]]

[17] 終点アンカーとしたいときで、適切な要素がないときには、
[CODE(HTMLe)[[[a]]]] 要素が使えます。

[PRE(HTML)[
I just returned from vacation! Here's a
<A id="ANCHOR-TWO">photo of my family at the lake.</A>.
]PRE]

[WEAK[(HTML 4 仕様書より、改)]]

[20] [[CSS]] で特定の要素のスタイルを指定する例
[PRE(HTML)[
<HEAD>
 <TITLE>CSS and ID Example</TITLE>
 <STYLE type="text/css">
   #MYID {border-width: 1px; border: solid; text-align: center}
 </STYLE>
</HEAD>
<BODY>
 <H1> This H1 is not affected </H1>
 <H1 id="MYID"> This H1 is affected by style </H1>
 <H1> This H1 is not affected </H1>
</BODY>
]PRE]

[WEAK[(HTML 4 仕様書より、改)]]

[49]
[CITE[ロイター.co.jp | ロイターe調査, 投票, 調査, ビジネス, 海外, 経済, 金融, ニュース]] ([CODE[2008-09-02 09:57:11 +09:00]] 版) <http://polls.reuters.com/jp/1220280342250>
([CODE(MIME)@en[[[text/html]]]])

>
[PRE(HTML bad example code)[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head> 
  <title>ロイター.co.jp | ロイターe調査, 投票, 調査, ビジネス, 海外, 経済, 金融, ニュース</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <meta id="MetaDescription" name="description" content="Reuters.co.jpはニュース速報、ワールドニュース、ビジネス情報、経済ニュース、株式ニュース、外国為替ニュースなどが入手できる重要な情報源です。ロイターは世界中のメディア、金融機関、そして個人投資家にニュースや金融情報、テクノロジーを提供する世界最大の国際通信社です。"></meta>
  <meta id="MetaKeywords" name="keywords" content="ロイター ニュース ロイター通信 国際ビジネスニュース IT・インターネットニュース 海外株式情報 ワールドカップ"></meta>
]PRE]

([[名無しさん]])

[[#comment]]


** メモ

[26] [CITE[HTMLayout]] の [[HTML]] では[[開始タグ]]中に [CODE[id=]] を [CODE[#]]
と書けたらしい。

[18] HTML 4 仕様書には [CODE(HTMLa)[id]] 
属性の[[属性値指定]]で[[文字参照]]が使えないようなことが書かれていますが、
これは誤りで、[[属性値表記]]なら使うことができます。
[[実体参照]]ももちろん使えます。
例: [SAMP(HTML)[<a id="D&Uuml;RST">Martin D&uuml;rst</a>]]

[19]
>>18
id は名前ですから、HTML 4 で &Uuml; などの文字を含むことはできません (例えば id="D&#85;ERST" なら可能ですが)。

なお、XHTML では名前文字の範囲が広がっていますので、id="D&Uuml;RST" も valid です。

[33]
[CITE[2006-07-02 - d:id:quaa]] ([CODE[2007-10-17 02:34:07 +09:00]] 版) <http://d.hatena.ne.jp/quaa/20060702#p3>
([[名無しさん]])

[34]
[CITE[2006-07-02 - d:id:quaa]] ([CODE[2007-10-17 02:34:07 +09:00]] 版) <http://d.hatena.ne.jp/quaa/20060702#p3>
([[名無しさん]])

[35]
[CITE[誤り訂正日記 - d:id:quaa]] ([CODE[2007-11-11 11:17:03 +09:00]] 版) <http://d.hatena.ne.jp/quaa/20071108#p2>
([[名無しさん]])

[36]
[CITE@ja[ID属性値を巡るhCalendarの奇妙な冒険 | hemiolia.com]] ([[kotarok]] 著, [CODE[2008-02-10 00:17:14 +09:00]] 版) <http://hemiolia.com/blog/200802/000142>

* [CODE(XMLa)@en[id]] 属性 (MathML)

[67] [[MathMLの大域属性]]である [DFN[[CODE(XMLa)@en[id]] [[属性]]]]は、
[[リンク]]、[[相互参照]]、[[並列マーク付け]]のための[[固有識別子]]を指定するものです
[SRC[>>68]]。

** 仕様書

- [68] [CITE[MathML Fundamentals]] ([TIME[2010-10-21 05:51:46 +09:00]] 版) <http://www.w3.org/TR/2010/REC-MathML3-20101021/chapter2.html#fund.globatt>

** 構文

[69] [CODE(XMLa)@en[[[id]]]] [[属性値]]の構文は [CODE@en[[[id]]]] です [SRC[>>68]]。

* 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]]]]) が存在します。

この属性は型録的には意味が無く、単に識別のためだけにあります。
省略可能です。
<http://www.oasis-open.org/committees/entity/spec.html#attrib.common>

* HTML 以外

[65] 
[[DTBook]] / [[NCX]] にも [[HTML4]] から移入されました。

** [CODE(XMLa)@en[id]] 属性 (SMIL)

[56] [[SMIL]] のほとんど (すべて?) の[[要素]]の [CODE(XMLa)@en[[[id]]]] [[属性]]は、
[[文書]]中で[[要素]]を特定する[[固有識別子]]です。

:[[要素]]:[[SMIL]] の[[要素]]
:[[属性名]]:[CODE(XMLa)@en[[[id]]]]
:[[データ型]]:[[XML]] [CODE(XML)@en[[[ID]]]]
:[[既定値]]:(なし)

仕様書:
-[[SMIL 1.0]] ([[W3C]] [[勧告]])
--[CSECTION@en[2 The [CODE(XMLe)@en[smil]] Element]]
<http://www.w3.org/TR/1998/REC-smil-19980615/#id>

* [CODE(XMLa)@en[xml:id]] 属性 (XML)

[42] [CODE(XMLa)@en[[[xml:id]]]] を参照。

* 歴史

** HTML3

[27] [CITE@en[draft-ietf-html-style-00]], [TIME[2024-09-28T04:41:08.000Z]] <https://datatracker.ietf.org/doc/html/draft-ietf-html-style-00>

[37] [CITE@en[draft-ietf-html-style-01]], [TIME[2024-09-28T04:41:21.000Z]] <https://datatracker.ietf.org/doc/html/draft-ietf-html-style-01>



**


[3] ''<xsl:key>を使おう(1)'' <http://www.yuragi.jp/playxslt/p003.asp>: [[XPath]] の [CODE(XPathf)[id()]] 関数について。

[23]
[CITE[How to make a good ID in Atom [dive into mark]]] <http://diveintomark.org/archives/2004/05/28/howto-atom-id>

[28]
[CITE[hatena::get_diary<gnarl>::result - Operaとfirefoxでxpathの挙動が違うよ!誰のせい?誰のせい?]] ([CODE[2007-06-04 18:28:13 +09:00]] 版) <http://d.hatena.ne.jp/gnarl/20070602/1180782611>
([[名無しさん]] [WEAK[2007-06-09 14:02:24 +00:00]])

[29]
[CITE[d:id:quaa]] ([CODE[2007-06-07 22:15:24 +09:00]] 版) <http://d.hatena.ne.jp/quaa/20070607#p1>
([[名無しさん]] [WEAK[2007-06-09 14:02:48 +00:00]])

[30]
[CITE[*DRAFT* W3 Forms F2F (Hawthorne) Day 1 June 13, 2007]] ([CODE[2007-06-26 18:29:00 +09:00]] 版) <http://lists.w3.org/Archives/Public/public-forms/2007Jun/att-0034/2007jun13.html#topic15.1>
([[名無しさん]])

[31]
[[DOM]] といい [[XPath]] といい [CODE(XML)@en[[[ID]]]]
[[要素]]は完全になかったことに?
([[名無しさん]])

[32]
[CITE[d:id:quaa]] ([CODE[2007-08-06 19:32:28 +09:00]] 版) <http://d.hatena.ne.jp/quaa/20070806#p1>

[74] [CITE@en[Web Applications 1.0 r6605 move .id and ID processing to DOM Core.]]
( ([TIME[2011-10-01 02:45:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=6604&to=6605>

[75] [CITE[Packaged Web Apps (Widgets) - Packaging and XML Configuration (Second Edition)]]
( ([TIME[2012-11-22 21:22:20 +09:00]] 版))
<http://w3c.github.com/packed-webapps/packaging/#the-id-attribute>

[78] [CITE@en[WOFF File Format 1.0]]
( ([TIME[2012-12-13 00:43:40 +09:00]] 版))
<http://www.w3.org/TR/2012/REC-WOFF-20121213/#Metadata>

[79] [CITE[Document Object Model for MathML]]
( ([TIME[2001-02-20 21:36:10 +09:00]] 版))
<http://www.w3.org/TR/2001/REC-MathML2-20010221/appendixd.html#dom_Element>

[80] [CITE[Document Object Model for MathML]]
( ([TIME[2002-05-23 15:35:03 +09:00]] 版))
<http://www.w3.org/Math/DOM/mathml2/appendixd.html#dom_Element>

[83] [CITE@en-US[XML Binding Language (XBL) 2.0]]
( ([TIME[2007-03-16 22:20:16 +09:00]] 版))
<http://www.w3.org/TR/2007/CR-xbl-20070316/#the-id>

[85] [[OMDoc]] ([TIME[2010-10-13 07:54:48 +09:00]] 版) <http://omdoc.org/pubs/omdoc1.2.pdf#page=106>


[86] [CITE@EN[XPath and XQuery Functions and Operators 3.0]]
( ([TIME[2014-04-08 07:02:07 +09:00]] 版))
<http://www.w3.org/TR/xpath-functions-3/#func-id>


[8] [CITE@en[Editorial: synchronize with the DOM Standard · whatwg/html@21c6ec7]]
([TIME[2016-03-20 18:03:51 +09:00]] 版)
<https://github.com/whatwg/html/commit/21c6ec77594eb89b836d4872222f5916910967fd>

[21] [CITE@en[Shadow: define superglobal slot content attribute · whatwg/dom@e3d8291]]
([TIME[2016-03-24 21:58:35 +09:00]] 版)
<https://github.com/whatwg/dom/commit/e3d82914676ad1e1bf590e1042636e60feddb6ae>

[22] [CITE@en[The DOM Standard defines the class, id, and slot attributes · whatwg/html@36c9938]]
([TIME[2016-03-24 22:00:58 +09:00]] 版)
<https://github.com/whatwg/html/commit/36c9938b102fecadf6029a248f40aae83ea099d2>

[24] [CITE@en[Id attribute: harmonize requirements with HTML, add warning about XML…]]
([[AmeliaBR]]著, [TIME[2016-07-29 05:30:35 +09:00]])
<https://github.com/w3c/svgwg/commit/09a1a0a1f5cc3dd2fa785bf23f309cb906027299>

[FIG(quote)[
[FIGCAPTION[
[25] [CITE@en[AMP HTML Specification – AMP]]
([TIME[2018-02-14 10:04:22 +09:00]])
<https://www.ampproject.org/docs/reference/spec>
]FIGCAPTION]

> Internal AMP IDs prefixed with -amp- and i-amp- are disallowed in AMP HTML.
> Consult AMP documentation for specific extensions before using amp- and AMP IDs to avoid conflict with the features provided by these extensions, such as amp-access.
> All other authored IDs are allowed in AMP HTML markup.

]FIG]
