[1] [[DOM水準3]] の[[メソッド]] [CODE(DOMm)[[[setIdAttributeNS]]]]
などによって[[識別子]]であるとされた[[属性節点]]を[DFN[[RUBYB[利用者決定 ID 属性][user‐determined ID attribute]]]]と言います。

[2] 仕様書:
- [[DOM水準3]]
-- [CODE(DOMa)[[[isId]]]] 属性
<IW:DOM3:"Core/core.html#Attr-isId">
-- [CODE(DOMm)[[[setIdAttribute]]]] メソッド
<IW:DOM3:"Core/core.html#ID-ElSetIdAttr">
-- [CODE(DOMm)[[[setIdAttributeNS]]]] メソッド
<IW:DOM3:"Core/core.html#ID-ElSetIdAttrNS">
-- [CODE(DOMm)[[[setIdAttributeNode]]]] メソッド
<IW:DOM3:"Core/core.html#ID-ElSetIdAttrNode">

[3] '''利用者決定 ID 属性に指定・解除''':
ある[[要素]]の識別子としてその要素のある[[属性]]を使うことを指示するためには、
その要素に対して [CODE(DOMm)[[[setIdAttribute]]]]
系の3つのメソッドのいずれかにその属性の名前またはその[[属性節点]]を渡します。

各メソッドの [CODE(DOMp)[isId]] 引数に [CODE(DOM)[[[true]]]]
を指定すれば利用者決定 ID 属性に指定され、 [CODE(DOM)[[[false]]]]
を指定すれば指定が解除されます。

[4] '''利用者決定 ID 属性か否か判定''':
ある[[属性]]がその所属する[[要素]]の[[識別子]]として使われるか否かは、
その属性の [CODE(DOMa)[[[isId]]]] 属性により判断できます。
但し、[[利用者決定ID]] 属性であるのか [[DTD決定ID]] 
属性等であるのかの区別はできません。

[CODE(DOMm)[setIdAttribute]] 系メソッドで一旦指定を解除して
[CODE(DOMa)[isId]] でなくなるかを見れば利用者決定 ID 属性''以外''であるかどうかは分かりますが、
利用者決定 ID 属性かどうかはわかりません。

[CODE(DOMa)[[[schemaTypeInfo]]]] 属性を辿って調べれば (面倒)、
[[DTD決定ID]] や [[schema決定ID]] かどうかは分かりますが、
利用者決定 ID 属性か外部決定 ID 属性かはわかりません。

2つの方法を組み合わせれば、一応利用者決定 ID 
属性かどうか判断することはできなくはありません。

[[#comment]]

* 他との関係

[5] [[DOM]] の利用者決定 ID 属性は、[[外部決定ID]] 
属性と共に [[XPointer]] 的には[[外部決定ID]] として扱われます。

[6] [[DOM水準3]]では [CODE(DOMm)[[[getElementById]]]]
は [CODE(DOMa)[[[isId]]]] 属性を使います。従って、
利用者決定 ID 属性も [CODE(DOMm)[getElementById]]
の判断材料になります。

[[#comment]]

* メモ
