removeAttribute

removeAttribute

[1]

<!DOCTYPE a [
  <!ATTLIST a ns1:ln CDATA "value">
]>
<a ns1:ln="VALUE" xmlns:ns1="http://test/"/>

で、

document.documentElement.attributes[0].prefix = 'ns2';
とします。この時点では既定属性復活することはありません DOM水準3

では、ここで

document.documentElement.removeAttributeNode 
    (document.documentElement.attributes[0]);
すると、 ns1:ln 属性が復活するということで良いのでしょうか。

もしそうであれば、 属性定義並び宣言既定値宣言されている属性定義すべての中から名前空間URI局所名一致するものを探さなければなりません。 ですが、 DTDXML名前空間に対応していないため、 DTD だけ見ても名前空間URIはわかりません。 ですから、対応する要素lookupNamespaceURI でもして名前空間接頭辞から名前空間URIを引かなければなりません。

[2] あるいは

<!DOCTYPE a [
  <!ATTLIST a ns1:ln CDATA "value">
]>
<a ns1:ln="" ns2:ln=""
    xmlns:ns1="http://test/1" xmlns:ns2="http://test/2"/>

[3] Add support for custom elements · whatwg/dom@7f63535 ( 版) https://github.com/whatwg/dom/commit/7f63535da39a1cbf7f8f68563abc6f05f760990a

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

[5] Editorial: embrace that attributes are objects (annevk, , ) https://github.com/whatwg/dom/commit/0038d097f5cad2a7ffdbe75c234b58960aa320f6