名前付き節点写像

NamedNodeMap インターフェイス (DOM)

[1] DOM の界面 NamedNodeMap は、名前で識別される節 (Node) の集まりです。

[2] NodeList と異なり、 集まりの要素である各 Node はそれぞれ異なる「名前」を持ちます。また、各 Node の順序は必ずしも保存されません。 (item method で索引番号を指定できますが、 内容の列挙のための便宜上のものだそうです。 (ということは、 (DOM 1 には何も書かれていませんが、) foreach my $i (0〜$NamedNodeMap.length−1) { debug.print "${i}th item:" + $NamedNodeMap.item ($i) } が期待通りに動作する (全項目を1回ずつ出力する。) ことくらいは期待してよいのかな? (本当に全く順序が保証されないのなら、 loop 内で何もしなくても、 $i 番目の項目がどれかが勝手に変わっていく虞がある。))

[3]

methodgetNamedItem名前付き項目取得[DOM1]
methodgetNamedItemNS名前付き項目取得[DOM2]
methodsetNamedItem名前付き項目設定[DOM1]
methodsetNamedItemNS名前付き項目設定[DOM2]
methodremoveNamedItem名前付き項目削除[DOM1]
methodremoveNamedItemNS名前付き項目削除[DOM2]
itemHTMLAttributeCollection (WinIE 4), NamedNodeMap (DOM水準1中核)
lengthHTMLAttributeCollection (WinIE 4), NamedNodeMap (DOM水準1中核)

[4] perl などで実装するなら連想配列にするのがよさげです。

[6] DOM水準2DOM水準3によると、 同じ nodeName で異なる namespaceURIAttr 節点が複数1つの NamedNodeMap に含まれる可能性があります。その場合、 DOM水準1メソッドでどれが返されるかは実装依存です。ですが、常に同じものが返されなければなりません。

利用箇所

[7] NamedNodeMap は次の箇所で使われています。

[10] attributes 以外は非標準です。 attributesAttrExodus によって Node から Element に移動され、NamedNodeMap ではなく Attr [] (read only array) に変更されています。

名前付き特性

[8] DOM3 では索引付き特性にしか言及がありませんが、実際には名前付き特性によってもアクセスできるようです。

[9] Chrome で実装されていました。

[11] Not worth it to rename NamedNodeMap · 64a93e8 · whatwg/dom ( ( 版)) <https://github.com/whatwg/dom/commit/64a93e85fa7a7284b068d1926eaeb3a0f9fd16d9>

[12] Introduce NamedNodeMap for attributes. Clean up algorithms around attrib... · 8af4826 · whatwg/dom ( ( 版)) <https://github.com/whatwg/dom/commit/8af48267390b971a2ac02c7005ba42c08264b7e1>

[13] Fix #141: NamedNodeMap's supported property names should not contain … · whatwg/dom@5dbefd1 ( 版) <https://github.com/whatwg/dom/commit/5dbefd1035c5528e236a8b13dabcbd6c649e2d3e>

[14] Fix #141 (again): omit non-lowercase property names from NamedNodeMap… · whatwg/dom@8898ac5 ( 版) <https://github.com/whatwg/dom/commit/8898ac57e5d9ea9b5592f5e61d42fc5e420c870b>

[15] Fix #141 (again): omit non-lowercase property names from NamedNodeMap… · whatwg/dom@8898ac5 ( 版) <https://github.com/whatwg/dom/commit/8898ac57e5d9ea9b5592f5e61d42fc5e420c870b>

[16] Add [CEReactions] annotations to mutating methods · whatwg/dom@3cd02d1 ( 版) <https://github.com/whatwg/dom/commit/3cd02d139c159a31fbb400e03932652c72fc7812>

[17] Editorial: define attribute list in terms of Infra's list (annevk著, ) <https://github.com/whatwg/dom/commit/f88c7a087268f5a9cf55b92c40754107e696d705>