-
Notifications
You must be signed in to change notification settings - Fork 4
/
382.txt
47 lines (43 loc) · 1.75 KB
/
382.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
[1]
[PRE(XML example code)[
<!DOCTYPE a [
<!ATTLIST a ns1:ln CDATA "value">
]>
<a ns1:ln="VALUE" xmlns:ns1="http://test/"/>
]PRE]
で、
[PRE(JS example code)[
document.documentElement.attributes[0].prefix = 'ns2';
]PRE]
とします。この時点では[[既定属性]]が[Q[復活]]することはありません
[SRC[[[DOM水準3]]]]。
では、ここで
[PRE(JS example code)[
document.documentElement.removeAttributeNode
(document.documentElement.attributes[0]);
]PRE]
すると、 [CODE(XMLa)@en[ns1:ln]] [[属性]]が復活するということで良いのでしょうか。
;; もしそうであれば、
[[属性定義並び宣言]]で[[既定値]]が[[宣言]]されている[[属性定義]]すべての中から[[名前空間URI]]と[[局所名]]が[[一致]]するものを探さなければなりません。
ですが、 [[DTD]] は[[XML名前空間]]に対応していないため、
[[DTD]] だけ見ても[[名前空間URI]]はわかりません。
ですから、対応する[[要素]]で
[CODE(DOMm)@en[[[lookupNamespaceURI]]]]
でもして[[名前空間接頭辞]]から[[名前空間URI]]を引かなければなりません。
[2]
あるいは
[PRE(XML example code)[
<!DOCTYPE a [
<!ATTLIST a ns1:ln CDATA "value">
]>
<a ns1:ln="" ns2:ln=""
xmlns:ns1="http://test/1" xmlns:ns2="http://test/2"/>
]PRE]
で
- [CODE(XMLa)@en[[[xmlns]]:ns1]] を削除してから
[CODE(XMLa)@en[ns1:ln]] を削除したらどうなるのか。
- [CODE(XMLa)@en[[[xmlns]]:ns1]] の値を
[CODE(URI)@en[http://test/2]] に変更してから
[CODE(XMLa)@en[ns1:ln]] を削除したらどうなるのか。
変更の後 [CODE(XMLa)@en[ns2:ln]] を削除してから
[CODE(XMLa)@en[ns1:ln]] を削除した場合はどうか。