では、この属性の値の役割として、
- [[スタイル・シート]]の[[選択子]]。
- [[スクリプト]]から特定の要素を参照する手段。
- 宣言済み [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 仕様書より、改)]]
[20] [[CSS]] で特定の要素のスタイルを指定する例
[PRE(HTML)[
CSS and ID Example
This H1 is not affected
This H1 is affected by style
This H1 is not affected
]PRE]
[WEAK[(HTML 4 仕様書より、改)]]
[49]
[CITE[ロイター.co.jp | ロイターe調査, 投票, 調査, ビジネス, 海外, 経済, 金融, ニュース]] ([CODE[2008-09-02 09:57:11 +09:00]] 版)
([CODE(MIME)@en[[[text/html]]]])
>
[PRE(HTML bad example code)[
ロイター.co.jp | ロイターe調査, 投票, 調査, ビジネス, 海外, 経済, 金融, ニュース
]PRE]
([[名無しさん]])
[[#comment]]
** メモ
[18] HTML 4 仕様書には [CODE(HTMLa)[id]]
属性の[[属性値指定]]で[[文字参照]]が使えないようなことが書かれていますが、
これは誤りで、[[属性値表記]]なら使うことができます。
[[実体参照]]ももちろん使えます。
例: [SAMP(HTML)[Martin Dürst]]
[19]
>>18
id は名前ですから、HTML 4 で Ü などの文字を含むことはできません (例えば id="DUERST" なら可能ですが)。
なお、XHTML では名前文字の範囲が広がっていますので、id="DÜRST" も valid です。
[33]
[CITE[2006-07-02 - d:id:quaa]] ([CODE[2007-10-17 02:34:07 +09:00]] 版)
([[名無しさん]])
[34]
[CITE[2006-07-02 - d:id:quaa]] ([CODE[2007-10-17 02:34:07 +09:00]] 版)
([[名無しさん]])
[35]
[CITE[誤り訂正日記 - d:id:quaa]] ([CODE[2007-11-11 11:17:03 +09:00]] 版)
([[名無しさん]])
[36]
[CITE@ja[ID属性値を巡るhCalendarの奇妙な冒険 | hemiolia.com]] ([[kotarok]] 著, [CODE[2008-02-10 00:17:14 +09:00]] 版)
* [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]] 版)
** 構文
[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]]]]) が存在します。
この属性は型録的には意味が無く、単に識別のためだけにあります。
省略可能です。
[[#comment]]
* [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]]
* [CODE(XMLa)@en[xml:id]] 属性 (XML)
[81] [DFN[[CODE(XMLa)@en[[[xml:id]]]]]] [[属性]]は [[XML]] の共通の [[ID]]
属性として定義されましたが、標準化されたのが遅く、ごく一部で利用されるにとどまっています。
[82] [[Webブラウザー]]においては [[Opera]] ([[Presto]]) とごく一時期の [[Gecko]] が実装していたのみで、
現在の [[Gecko]] と [[WebKit]]/[[Blink]] も、 [[IE]] も実装していません。 [CODE(XMLa)@en[[[xml:id]]]]
[[属性]]は既に [[Webプラットフォーム]]の一部とは考えられていません。
* メモ
[2] しっかし、なんで [[XML]] つくる時に [CODE(XMLa)[xml:id]]
属性つくんなかったんかなあ。
[8] >>2 そのうち出来る。はず。多分。てゆかさっさと出来てくれ。
[3] ''を使おう(1)'' : [[XPath]] の [CODE(XPathf)[id()]] 関数について。
[21]
[CITE[xml:id Version 1.0]]
([[名無しさん]] [WEAK[2005-09-09 21:59:09 +00:00]])
[22]
[CITE@en[Initial comments on XBL (12 November 2005 draft)]]
で始まる[[スレ]]で、 [[XBL 2.0]] の[[識別子属性]]を現在の案の通り
[CODE(XMLa)@en[[[id]]]] ([[[CODE@en[null]]名前空間]])
にするべきか、 [CODE(XMLa)@en[[[xml]]:[[id]]]]
を採用するべきかが議論されています。
[[Ian Hickson]] は、[[名前空間URI]] の分扱いが面倒になること、
[[HTML]] や [[SVG]] が既に [CODE(XMLa)@en[[[id]]]]
([[[CODE@en[null]]名前空間]]) を使用していること、
任意の [[XML]] [[言語]]を処理する[[処理器]]なら知識不要の
[CODE(XMLa)@en[[[xml]]:[[id]]]] でも良いかもしれないが、
[[XBL]] を処理する [[Webブラウザ]]はそういう状況の実装ではないことを挙げて、
[CODE(XMLa)@en[[[id]]]] ([[[CODE@en[null]]名前空間]])
が良いと言っています。
これに対して [[Anne van Kesteren]] らは、
[[SVG 1.2]] などが [CODE(XMLa)@en[[[xml]]:[[id]]]]
を採用することや、 [CODE(XMLa)@en[[[xml]]:[[base]]]]
属性が存在することなどを指摘しています。
([[名無しさん]] [WEAK[2005-11-18 12:21:01 +00:00]])
[23]
[CITE[How to make a good ID in Atom [dive into mark]]]
([[名無しさん]])
[24]
[[SVG Tiny 1.2]] ([[WD]]) は、 [CODE(XMLa)@en[[[id]]]]
と [CODE(XMLa)@en[[[xml]]:[[id]]]] の両方が使えるけど同じ値に汁、将来は [CODE(XMLa)@en[[[id]]]] を[[非推奨]]にするからよろしく、とかいってる。
[[XHTML 2.0]] ([[WD]]) は、両方一緒に使うなといってる。
[[HTML 5]] と [[XBL 2.0]] は (というか [[Ian Hickson]] は)、
[CODE(XMLa)@en[[[xml]]:[[id]]]] とかうざいから [CODE(XMLa)@en[[[id]]]] を使う、 [CODE(XMLa)@en[[[xml]]:[[id]]]] は別仕様なんだから使いたければ好きに使っても全然構わないよ、とかいう立場。
([[名無しさん]] [WEAK[2006-07-27 11:54:45 +00:00]])
[25]
[[XFrames]] は [CODE(XMLa)@en[[[xml]]:[[id]]]] だけ。
([[名無しさん]] [WEAK[2006-08-09 03:01:42 +00:00]])
[26]
[CITE[Bug 275196 - xml:id support]]
([[名無しさん]])
[27]
[CITE@en[Web Services Security: SOAP Message Security 1.1 (WS-Security 2004)]]
は、
- [CODE(XMLa)@en[[QN[wsu:[[Id]]] [http://docs.oasis-open.org/wss/2004/01/oasis-]]]]
200401-wss-wssecurity-utility-1.0.xsd]]]] を使うべき
- [CODE(XMLa)@en[[[xml]]:[[id]]]] を使って構わないが、
[[正準XML]] の問題があるので注意汁
- 使用している[[語彙]]の一部は[[大域属性]]を認めていないから[[局所属性]]の
[CODE(XML)@en[[[ID]]]] を使う
としています (4章)。
([[名無しさん]])
[28]
[CITE[hatena::get_diary::result - Operaとfirefoxでxpathの挙動が違うよ!誰のせい?誰のせい?]] ([CODE[2007-06-04 18:28:13 +09:00]] 版)
([[名無しさん]] [WEAK[2007-06-09 14:02:24 +00:00]])
[29]
[CITE[d:id:quaa]] ([CODE[2007-06-07 22:15:24 +09:00]] 版)
([[名無しさん]] [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]] 版)
([[名無しさん]])
[31]
[[DOM]] といい [[XPath]] といい [CODE(XML)@en[[[ID]]]]
[[要素]]は完全になかったことに?
([[名無しさん]])
[32]
[CITE[d:id:quaa]] ([CODE[2007-08-06 19:32:28 +09:00]] 版)
([[名無しさん]])
[37]
[CITE[Bug 16505 - getElementById fails to find xml:id identified elements (xml:id support)]] ([CODE[2008-03-30 19:37:36 +09:00]] 版)
([[名無しさん]])
[53]
[CITE@en[Re: RELAX NG and xml:id]] ([[Daniel Veillard]] 著, [CODE[2008-08-13 22:22:26 +09:00]] 版)
([[名無しさん]])
[54]
[CITE@en[RE: RELAX NG and xml:id]] ([[Grosso, Paul]] 著, [CODE[2008-08-14 01:49:27 +09:00]] 版)
([[名無しさん]])
[55]
[CITE[Pronunciation Lexicon Specification (PLS) Version 1.0]] ([TIME[2008-10-13 23:03:02 +09:00]] 版)
[57] [CITE[SMIL 3.0 Structure Module]] ([TIME[2008-12-02 00:45:09 +09:00]] 版)
[58] [CITE[Document Structure – SVG Tiny 1.2]] ([TIME[2008-12-20 02:31:29 +09:00]] 版)
[59] [CITE[James Clark's Random Thoughts: RELAX NG and xml:id]] ([TIME[2009-01-29 12:28:57 +09:00]] 版)
[60] [CITE[IRC logs: freenode / #whatwg / 20090331]] ([TIME[2009-06-07 11:12:08 +09:00]] 版)
>[15:35] MikeSmith: what's expected? ;-) Opera assigns IDness to xml:id. Gecko and WebKit don't.
>[15:36] MikeSmith: moreover, xml:id support has been explicitly rejected from both Gecko and WebKit but for different reasons
>[15:36] the Gecko rejection was due to perf issue
>[15:36] and, IIRC, the WebKit rejection was in order to avoid stuff that isn't needed
>[15:36] wasn't it implemented in gecko at some point?
>[15:37] zcorpan: my understanding is that it was on the trunk for a short while
[61] [CITE@EN[XForms 1.1]]
([TIME[2009-10-20 22:51:54 +09:00]] 版)
[62] [CITE@EN[XForms 1.1]]
([TIME[2009-10-20 22:51:54 +09:00]] 版)
[63] [CITE[XProc: An XML Pipeline Language]]
([TIME[2010-05-11 22:38:07 +09:00]] 版)
[64] [CITE@en[Speech Synthesis Markup Language (SSML) Version 1.1]] ([TIME[2010-09-08 00:26:19 +09:00]] 版)
[65] [CITE[IRC logs: freenode / #whatwg / 20101109]]
( ([TIME[2010-11-19 22:17:48 +09:00]] 版))
[66] [CITE[IRC logs: freenode / #whatwg / 20101110]]
( ([TIME[2010-11-19 22:40:27 +09:00]] 版))
[70] [CITE@en[XFrames]]
( ([TIME[2010-12-17 00:45:08 +09:00]] 版))
[71] [CITE@en[XFrames]]
( ([TIME[2010-12-17 00:45:08 +09:00]] 版))
[72] [CITE[Document Structure – SVG 1.1 (Second Edition)]]
( ([TIME[2011-08-10 12:35:27 +09:00]] 版))
[73] [CITE[Ink Markup Language (InkML)]]
( ([TIME[2011-09-20 17:16:49 +09:00]] 版))
[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]] 版))
[75] [CITE[Packaged Web Apps (Widgets) - Packaging and XML Configuration (Second Edition)]]
( ([TIME[2012-11-22 21:22:20 +09:00]] 版))
[76] [CITE[Bug 16505 – getElementById fails to find xml:id identified elements (xml:id support)]]
( ([TIME[2012-12-05 22:36:16 +09:00]] 版))
[77] [CITE@en[Re: xml:id]]
( ([[Timur Mehrvarz]] 著, [TIME[2008-01-04 04:35:21 +09:00]] 版))
[78] [CITE@en[WOFF File Format 1.0]]
( ([TIME[2012-12-13 00:43:40 +09:00]] 版))
[79] [CITE[Document Object Model for MathML]]
( ([TIME[2001-02-20 21:36:10 +09:00]] 版))
[80] [CITE[Document Object Model for MathML]]
( ([TIME[2002-05-23 15:35:03 +09:00]] 版))
[83] [CITE@en-US[XML Binding Language (XBL) 2.0]]
( ([TIME[2007-03-16 22:20:16 +09:00]] 版))
[84] [CITE[SVG2 Requirements Input - SVG]]
( ([TIME[2013-06-13 12:01:58 +09:00]] 版))
[85] [[OMDoc]] ([TIME[2010-10-13 07:54:48 +09:00]] 版)