[22] HTML/XML/DOM においては色々な方法で識別子 (ID) を指定できます。
[30] 属性値は通常属性値として指定されます。 DTD などによる識別子の指定は、 識別子として使われる属性値が与えられる属性を指定することによって行われます。
[31] 例外的に、 XML Schema では単純型の属性と要素は同じように扱われることが多く、
識別子 (xs:ID
) である要素も定義できるようになっています。
ただしこれは現実にはなかったことにされる傾向にありますwww
[32] 識別子は、素片識別子の値として、 getElementById
による検索の値として、
ID選択子の値として、 IDREF
属性値としてなどいろいろな場面で文書中の特定の要素を識別するために用いられます。
id
(MathML)[13] MathML における id
は、識別子であって文書中で固有のものです。
XML 1.0 5e の NAME
の構文に従っていなければなりません。
[14] なぜ ID
の定義を参照していないのでしょうね。
DTD 依存になってしまうのを避けるためでしょうか。
[15] ところで XML に「NAME
」はないですね。SGML
時代を惜しんでいるのかw、それとも Name
の間違いなのか。
[5] まあ HTML 4 の ID
型といっても、
SGML の ID
型そのものなのでありますが・・・。
HTML 4 の SGML宣言の状況下では、
なのです。 IW:HTML4:"types.html#type-id" 参照。
大文字・小文字の区別はありません。 SGML の規則により小文字は大文字に変換されます。
噂のID問題も。
ID
型 (XML)[8] XHTML m12n の抽象モジュール定義における属性型
ID
は、 XML 1.0 の定義によっています。
仕様書:
[1] XML名前空間を使って ID
型属性を複数使えるか。例えば XHTML の要素に RDF:ID
属性をつけることが出来るか。
[2] >>1 SGML でも XML でも、1つの要素に2つ以上の ID
属性は禁じている。よって出来ない。名前空間が違っても同じこと。
[3] XPath では、妥当でない文書も扱うわけですが、 そういう文書では同じ識別子を持った要素が複数あることもあります。 そういうときに、 文書順で2番目以降の要素は識別子を持たないこととして処理します。 http://www.w3.org/TR/xpath#unique-id
[4] >>3、簡単なことのように思えますが、 path/to/element1/id() と path/to/element2/id() が同じ値を返しちゃいけないわけです。 だけど常識的に path/to/element1/@id-attr と path/to/element2/@id-attr は同じ値じゃないといけないでしょ? だから構造木を作ったときにでも重複をチェックして、 それを覚えとかないと。 もちろん木を操作して別の要素に識別子を与えたり、 最初の要素の識別子を削除したりしたら、 それに同期してどの属性が有効かも変更しないといけないんです。
[9] >>3-6 元々 XPath のデータ・モデルや XML情報集合的には、 XML 実体の構文解析・妥当性検証の時点で識別子と要素の対応の一覧表を作って、 あとから識別子が必要になったらその表を引くことを想定しているのだと思われ。 (名無しさん [sage])
[10] How should the problem of identifying ID semantics in XML languages be addressed in the absence of a DTD? http://www.w3.org/2001/tag/doc/xmlIDsemantics-32.html
[16] W3C XML Schema Definition Language (XSD) 1.1 Part 2: Datatypes ( ( 版)) http://www.w3.org/TR/2012/REC-xmlschema11-2-20120405/#ID
[17] W3C XML Schema Definition Language (XSD) 1.1 Part 1: Structures ( ( 版)) http://www.w3.org/TR/2012/REC-xmlschema11-1-20120405/#sec-cvc-id
[18] XBL 2.0 ( ( 版)) http://dev.w3.org/2006/xbl2/Overview.html#general-rules
[19] XQuery and XPath Data Model 3.0 ( ( 版)) http://www.w3.org/TR/xpath-datamodel-3/#const-infoset-attribute
[45] RFC 2801 - Internet Open Trading Protocol - IOTP Version 1.0, , https://tools.ietf.org/html/rfc2801#section-3.5
[20] XPath and XQuery Functions and Operators 3.0
( ( 版))
http://www.w3.org/TR/xpath-functions-3/#func-element-with-id
[11] Web Forms 2.0 の反復フォーム制御子モデルでは反復される要素の
id
属性に「[」や「]」のような XML 的に非妥当な文字を使っていますが、
非妥当であることに対する抵抗の声が大きく、名前文字だけで表現する方法も後に追加されました。
[33] SGML:
SGML の ID
型の属性の値は文書内で固有でなければなりません。
この制約が満たされない SGML 文書は、型妥当ではありません
(適合SGML文書ではありません)。
仕様書:
[34] XML:
XML の ID
型の属性の値は文書内で固有でなければなりません
(妥当性制約)。
この制約が満たされない XML 文書は、
整形式かもしれませんが妥当ではありません。
仕様書:
[35] HTML:
HTML の id
属性と
name
属性による識別子は、
同じ名前空間を共有し、文書内で固有でなければなりません。
重複は違法です。
仕様書:
id
and class
attributes
IW:HTML4:"struct/global.html#id-and-class"[36] XML 情報集合:
XML情報集合の属性情報項目
の参照
特性は、
属性型
が IDREF
や
IDREFS
であっても同じ識別子の複数の要素があれば、
値を持ちません。
仕様書:
[37] DOM:
DOM の getElementById
は、同じ識別子の複数の要素がある時の結果は未定義です。
仕様書:
[38] XPath 1.0:
XPath 1.0 のデータ模型では、
重複する固有識別子は文書順で後の方を無視することになっています。
関数 id()
はその固有識別子に基づき判断します。
仕様書:
id()
IW:XPath1:"function-id"[39] DOM水準3 XPath では、 XPath 1.0
の関数である id()
と
DOM のメソッドである getElementById
とで同じ結果が得られなければならないと規定しています。
仕様書:
getElementById
の結果は未定義となっていますから、
XPath 1.0 の規定通りになるとは限りません。現実には、また後の DOM Standard
によれば最初の要素が返されるので、両者の返すものは一致します。[41] XPointer:
XPointer の速記指示子では、
文書順で最初に一致したものが採用されます。
element ()
scheme
も同じ定義を採用しています。
仕様書:
element()
[42] CSS: CSS の ID 選択子はマーク付け言語における文書内の固有な識別子で使われることが想定されています。 重複に関する規定はありません。
仕様書:
[43] Re: Selectors API: Multiple elements with the same ID from Boris Zbarsky on 2007-01-28 (public-webapi@w3.org from January 2007) (Boris Zbarsky (bzbarsky@mit.edu) 著, 版) http://lists.w3.org/Archives/Public/public-webapi/2007Jan/0158
[21] Handle setting id to the empty string https://www.w3.org/Bugs/Public/sho... · 967552c · whatwg/dom ( ( 版)) https://github.com/whatwg/dom/commit/967552c81e1912a6ace72050a3a68a257c1ff672