/[suikacvs]/markup/xml/domdtdef/domdtdef-work.en.html
Suika

Contents of /markup/xml/domdtdef/domdtdef-work.en.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.21 - (show annotations) (download) (as text)
Sat Dec 8 07:01:08 2007 UTC (16 years, 5 months ago) by wakaba
Branch: MAIN
Changes since 1.20: +115 -39 lines
File MIME type: text/html
Remaining ElementTypeDefinition and AttributeDefinition members are added

1 <!DOCTYPE html>
2 <html lang="en" class="formal-specification status-work-in-progress">
3 <head>
4 <title>DOM Document Type Definition Module</title>
5 <link rel="stylesheet" href="http://suika.fam.cx/www/style/html/spec">
6 <link rel="stylesheet" href="http://suika.fam.cx/www/style/def/dom">
7 <link rel="license" href="http://suika.fam.cx/c/gnu/fdl">
8 </head>
9 <body class="has-abstract">
10
11 <div class="header">
12 <h1>DOM Document Type Definition Module</h1>
13 <h2>Working Draft <time datetime=2007-12-08>8 December 2007</time></h2>
14
15 <dl class="versions-uri">
16 <dt>This Version</dt>
17 <dd><code class="URI">&lt;<a href="http://suika.fam.cx/www/markup/xml/domdtdef/domdtdef-work"
18 >http://suika.fam.cx/www/markup/xml/domdtdef/domdtdef-work</a>&gt;</code></dd>
19 <dt>Latest Version</dt>
20 <dd><code class="URI">&lt;<a href="http://suika.fam.cx/www/markup/xml/domdtdef/domdtdef"
21 >http://suika.fam.cx/www/markup/xml/domdtdef/domdtdef</a>&gt;</code></dd>
22 <dt>Latest Working Draft</dt>
23 <dd><code class="URI">&lt;<a href="http://suika.fam.cx/www/markup/xml/domdtdef/domdtdef-work"
24 >http://suika.fam.cx/www/markup/xml/domdtdef/domdtdef-work</a>&gt;</code></dd>
25 <!-- <dt>Previous Version</dt> -->
26 <dt>Version History</dt>
27 <dd><code class=URI>&lt;<a href="http://suika.fam.cx/gate/cvs/markup/xml/domdtdef/domdtdef-work.en.html">http://suika.fam.cx/gate/cvs/markup/xml/domdtdef/domdtdef-work.en.html</a>&gt;</code></dd>
28 <dt id=author>Author</dt>
29 <dd><a href="http://suika.fam.cx/~wakaba/who?" rel="author"
30 lang=ja>Wakaba</a>
31 <code class="mail">&lt;<a href="mailto:w@suika.fam.cx" rel="author"
32 >w@suika.fam.cx</a>&gt;</code></dd>
33 </dl>
34
35 <p class="copyright" lang="en">&#xA9; <time>2007</time> <a
36 href="http://suika.fam.cx/~wakaba/who?" rel="author">Wakaba</a>.
37 Permission is granted to copy, distribute and/or modify this document
38 under the terms of the <a rel="license"
39 href="http://www.gnu.org/copyleft/fdl.html">GNU Free Documentation License</a>,
40 Version 1.2
41 or any later version published by the <a
42 href="http://www.fsf.org/">Free Software Foundation</a>;
43 with no Invariant Sections, no Front$B!>(BCover Texts, and no Back$B!>(BCover
44 Texts. A copy of the license is
45 available at <code class="URI">&lt;<a
46 href="http://www.gnu.org/copyleft/fdl.html"
47 rel="license">http://www.gnu.org/copyleft/fdl.html</a>&gt;</code>.</p>
48 </div>
49
50 <div id="abstract" class="section">
51 <h2>Abstract</h2>
52
53 <div class="ed issue">...</div>
54
55 </div>
56
57 <div id="status" class="section">
58 <h2>Status of This Document</h2>
59
60 <p class=section-info><em>This section describes the status of this document
61 at the time of its publication. Other documents
62 might supersede this document.</em></p>
63
64 <p>This document is a working draft, produced as part of the
65 <a href="http://suika.fam.cx/www/manakai-core/doc/web/">manakai</a>
66 project. It might be updated, replaced, or obsoleted by
67 other documents at any time. It is inappropriate to
68 cite this document as other than <q>work in progress</q>.</p>
69
70 <p>Comments on this document are welcome and
71 may be sent to the <a href="#author">author</a>.</p>
72
73 <p>Translations of thie document might be available.
74 The English version of the document is the only
75 normative version.</p>
76 </div>
77
78 <div id="introduction" class="section">
79 <h2>Introduction</h2>
80
81 <p class=section-info>This section is <em>non$B!>(Bnormative</em>.</p>
82
83 <div class="issue ed">
84 <p>This is a work-in-progress specification for DOM Document Type
85 Definition module, as implemented by manakai and
86 <a href="http://suika.fam.cx/gate/2005/sw/DOM%20XML%20Document%20Type%20Definition">partially documented in the SuikaWiki</a>.</p>
87 </div>
88
89 <p>The <dfn id=term-dom-dtdef><abbr>DOM</abbr> Document Type Definition</dfn>
90 module is a set of <abbr>DOM</abbr> interfaces, including both new
91 interfaces and modifications to existing <abbr>DOM</abbr> interfaces,
92 over which <abbr>DOM</abbr> applications are able to access to the
93 definitions of the document type.</p>
94
95 <p>Interfaces defined in this specification are partially modeled from
96 early drafts of <abbr>DOM</abbr> level 1 <span class=ed>@@ ref</span>,
97 <abbr>DOM</abbr> Abstract Schema level 3 <span class=ed>@@ ref</span>, and
98 <abbr>XML</abbr> Schema <abbr>API</abbr>, but are not compatible with
99 any of them as a whole.</p>
100 </div>
101
102 <div class="section" id="terminology">
103 <h2>Terminology</h2>
104
105 <p>The key words <q><em class="rfc2119">MUST</em></q>,
106 <q><em class="rfc2119">MUST NOT</em></q>,
107 <q><em class="rfc2119">SHOULD</em></q>,
108 <q><em class="rfc2119">SHOULD NOT</em></q>, and
109 <q><em class=rfc2119>MAY</em></q> in this
110 document are to be interpreted as described in
111 <a href="urn:ietf:rfc:2119"><abbr title="Request for Comments">RFC</abbr>
112 2119</a>
113 <cite class="bibref normative">[<a href="#ref-KEYWORDS">KEYWORDS</a>]</cite>.</p>
114
115 <!-- Strictly speaking the paragraph below is not part of terminology. -->
116 <p>All examples and notes in this specification are non$B!>(Bnormative,
117 as are all sections explicitly marked non$B!>(Bnormative. Everything
118 else in this specification is normative.</p>
119
120 <p><span class=ed>Algorithm is normative but non-normative</span>.
121 In addition, the order in which <a href="#errors">errors</a> are
122 raised is undefined.</p>
123
124 <p class=ed><var>A</var> object is an object implementing <var>A</var>
125 interface.</p>
126
127 <p class=ed>@@ ref to DOM Binding Spec</p>
128
129 <p>If the <code>strictErrorChecking</code> attribute of the
130 <code>Document</code> node is <code>false</code>, the methods are
131 not required to raise exceptions <span class=ed>[DOM3]</span>.</p>
132
133 <div class=ed>
134 <p>Conformant product classes: implementation, XML parser (XML document ->
135 DOM converter), XML serializer (DOM -> XML document covnerter).
136 XML Infoset -> DOM converter, and DOM -> XML Infoset converter.</p>
137 </div>
138 </div>
139
140 <div class=section id=dom-dtdef>
141 <h2><abbr>DOM</abbr> Document Type Definition Module</h2>
142
143 <p>The <abbr>DOM</abbr> Document Type Definition module, version 3.0,
144 introduces four interfaces:
145 <a href="#DocumentXDoctype"><code>DocumentXDoctype</code></a>,
146 <a href="#DocumentTypeDefinition"><code>DocumentTypeDefinition</code></a>,
147 <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>,
148 and <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>.
149 In addition, it modifies existing interfaces
150 <a href="#Node"><code>Node</code></a>,
151 <a href="#Document"><code>Document</code></a>,
152 <a href="#DocumentType"><code>DocumentType</code></a>,
153 <a href="#Entity"><code>Entity</code></a>, and
154 <a href="#Notation"><code>Notation</code></a>.</p>
155
156 <div class=section id=features>
157 <h3>Feature Name</h3>
158
159 <p>In a <abbr>DOM</abbr> implementation that supports the version 3.0 of
160 the <abbr>DOM</abbr> Document Type Definition module, the
161 <code>hasFeature</code> method of a <code>DOMImplementation</code> object
162 <em class=rfc2119>MUST</em> return <code>true</code> when the parameters are
163 set to
164 <dfn id=feature-XDoctype><code>http://suika.fam.cx/www/2006/feature/XDoctype</code></dfn>
165 and <dfn id=feature-XDoctype-3.0><code>3.0</code></dfn> respectively.</p>
166
167 <p>In such an implementation, the <code>getFeature</code> method of a
168 <code>Document</code> object <em class=rfc2119>MUST</em> return the (at least
169 conceptually) same object implementing the
170 <a href="#DocumentXDoctype"><code>DocumentXDoctype</code></a> interface when
171 the parameters are set to
172 <a href="#feature-XDoctype"><code>http://suika.fam.cx/www/2006/feature/XDoctype</code></a>
173 and <a href="#feature-XDoctype-3.0"><code>3.0</code></a> respectively.
174 Likewise, any method that takes one or more feature names with or without
175 version number, including the methods <code>hasFeature</code> and
176 <code>getFeature</code>, <em class=rfc2119>MUST</em> behave in a manner
177 consistent with the aforementioned cases.</p>
178 </div>
179
180 <div class=section id=section-node>
181 <h3>Modifications to the <code id=Node>Node</code> Interface</h3>
182
183 <p>The implementation of the
184 <a href="#Node"><code>Node</code></a> interface
185 <em class=rfc2119>MUST</em> be modified as following:</p>
186 <pre class=idl><code>// Additions to the Node interface
187
188 // Additions to the NodeType definition group
189 const unsigned short <a href="#ELEMENT_TYPE_DEFINITION_NODE">ELEMENT_TYPE_DEFINITION_NODE</a> = 81001;
190 const unsigned short <a href="#ATTRIBUTE_DEFINITION_NODE">ATTRIBUTE_DEFINITION_NODE</a> = 81002;
191 </pre>
192
193 <p>This specification adds two new types (subinterfaces) of
194 <a href="#Node"><code>Node</code></a>: element type definition (node type
195 <a href="#ELEMENT_TYPE_DEFINITION_NODE"><code>ELEMENT_TYPE_DEFINITION_NODE</code></a>,
196 interface
197 <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>) and
198 attribute definition (node type
199 <a href="#ATTRIBUTE_DEFINITION_NODE"><code>ATTRIBUTE_DEFINITION_NODE</code></a>,
200 interface
201 <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>). For
202 these kinds of nodes, methods and attributes in the
203 <a href="#Node"><code>Node</code></a> interface must behave as following:</p>
204
205 <dl>
206 <dt><code id=attributes>attributes</code></dt>
207 <dd>
208 <p>On getting, the attribute <em class=rfc2119>MUST</em> return
209 <code>null</code>.</p>
210 </dd>
211 <dt><code id=baseURI>baseURI</code></dt>
212 <dd>
213 <p>On getting, the attribute <em class=rfc2119>MUST</em> return the
214 value of the <a href="#baseURI"><code>baseURI</code></a> attribute
215 of the node in the <code>ownerDocument</code> attribute of the node.
216 Note that the value might be <code>null</code>.</p>
217 </dd>
218 <dt><code id=cloneNode>cloneNode</code></dt>
219 <dd class=ed>@@</dd>
220 <dd class=ed>@@ If Attr and AttributeDefinition is inconsistent, then ...</dd>
221 <dt><code id=compareDocumentPosition>compareDocumentPosition</code></dt>
222 <dd class=ed>@@</dd>
223 <dt><code id=isDefaultNamespace>isDefaultNamespace</code></dt>
224 <dd><p>When invoked, the method <em class=rfc2119>MUST</em> return
225 <code>false</code>.</p></dd>
226 <dt><code id=isEqualNode>isEqualNode</code></dt>
227 <dd><p>For the <a href="#isEqualNode"><code>isEqualNode</code></a> method,
228 following items are added to the list of conditions for equality:</p>
229
230 <ul>
231 <li>
232 <p>If the nodes are <a href="#DocumentType"><code>DocumentType</code></a>
233 and at least one of them has the support for the feature
234 <a href="#feature-XDoctype"><code>http://suika.fam.cx/www/2006/feature/XDoctype</code></a>:</p>
235 <ul>
236 <li>they are equal according to <abbr>DOM</abbr> level 3 definition
237 <span class=ed>@@ ref</span>, and
238 <li>either:
239 <ul><!--
240 <li>both of them does not support the feature
241 <a href="#feature-XDoctype"><code>http://suika.fam.cx/www/2006/feature/XDoctype</code></a>,</li>-->
242 <li>exactly one of them support the feature
243 <a href="#feature-XDoctype"><code>http://suika.fam.cx/www/2006/feature/XDoctype</code></a>
244 and the <code>length</code> attribute of the <code>NamedNodeMap</code>
245 object in the <a href="#elementTypes"><code>elementTypes</code></a>
246 attribute of it is equal to <code>0</code>, or</li>
247 <li>both of them support the feature
248 <a href="#feature-XDoctype"><code>http://suika.fam.cx/www/2006/feature/XDoctype</code></a>
249 and the values of the
250 <a href="#elementTypes"><code>elementTypes</code></a> attributes are
251 equal (equality of the
252 <a href="#elementTypes"><code>elementTypes</code></a> attribute is same
253 as that for the <code>attributes</code> attribute).</li>
254 </ul>
255 </li>
256 </ul>
257 </li>
258
259 <li><p>If the nodes are
260 <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>,
261 the values of the
262 <a href="#attributeDefinitions"><code>attributeDefinitions</code></a>
263 attributes are equal (equality of the
264 <a href="#attributeDefinitions"><code>attributeDefinitions</code></a>
265 attribute is same as that for the <code>attributes</code> attribute).</p></li>
266
267 <li><p>If the nodes are
268 <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>,
269 the values of the <a href="#declaredType"><code>declaredType</code></a> and
270 the <a href="#defaultType"><code>defaultType</code></a> attributes are
271 equal respectively.</p></li>
272
273 <li><p>If the nodes are
274 <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>,
275 the values of the <code>DOMStringList</code> objects in the
276 <a href="#allowedTokens"><code>allowedTokens</code></a> attributes
277 are equal, i.e. their <code>length</code> attribute values are equal and
278 each string exists in a list is contained in another list (their indeces
279 may be different), with an additional constraint that the number of the
280 items that are equal to a string in a list is equal to the number
281 of the items equal to the string in another list.</p></li>
282 </ul></dd>
283 <dt><code id=lookupNamespaceURI>lookupNamespaceURI</code> and
284 <code id=lookupPrefix>lookupPrefix</code></dt>
285 <dd><p>When invoked, the methods <em class=rfc2119>MUST</em> return
286 <code>null</code>.</p></dd>
287 <dt><code id=nodeName>nodeName</code></dt>
288 <dd>
289 <p>If the node is an
290 <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>:
291 On getting, the attribute <em class=rfc2119>MUST</em> return the
292 name of the element type definition represented by the node.</p>
293
294 <p>If the node is an
295 <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>:
296 On getting, the attribute <em class=rfc2119>MUST</em> return the
297 name of the attribute definition represented by the node.</p>
298 </dd>
299 <dt><code id=nodeType>nodeType</code></dt>
300 <dd>
301 <p>On getting, the attribute <em class=rfc2119>MUST</em> return
302 <a href="#ELEMENT_TYPE_DEFINITION_NODE"><code>ELEMENT_TYPE_DEFINITION_NODE</code></a>
303 (if the node is an
304 <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>) or
305 <a href="#ATTRIBUTE_DEFINITION_NODE"><code>ATTRIBUTE_DEFINITION_NODE</code></a>
306 (if the node is an
307 <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>).</p>
308
309 <!-- NodeType -->
310 <p>Two constants are added to the <code id=NodeType>NodeType</code>
311 definition group of the <a href="#Node"><code>Node</code></a> interface as
312 following:</p>
313 <table>
314 <thead>
315 <tr><th scope=col>Name<th scope=col>Value<th scope=col>Description</tr>
316 </thead>
317 <tbody>
318 <tr>
319 <th scope=row><dfn id=ELEMENT_TYPE_DEFINITION_NODE class=dom-const><code>ELEMENT_TYPE_DEFINITION_NODE</code></dfn>
320 <td><code>81001</code><td>The node is an
321 <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>.</tr>
322 <tr>
323 <th scope=row><dfn id=ATTRIBUTE_DEFINITION_NODE class=dom-const><code>ATTRIBUTE_DEFINITION_NODE</code></dfn>
324 <td><code>81002</code><td>The node is an
325 <a href="#ElementTypeDefinition"><code>AttributeDefinition</code></a>.</tr>
326 </tbody>
327 </table>
328 </dd>
329 <dt><code id=nodeValue>nodeValue</code> and
330 <code id=textContent>textContent</code></dt>
331 <dd>
332 <p>If the node is an
333 <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>:
334 On getting, the attributes <em class=rfc2119>MUST</em> return
335 <code>null</code>.</p>
336
337 <div class="note memo">
338 <p>Thus, on setting the attributes does nothing
339 <span class=ed>[DOM3]</span>.</p>
340 </div>
341
342 <p>On setting, the <a href="#textContent"><code>textContent</code></a>
343 attribute <em class=rfc2119>MUST NOT</em> raise a
344 <code>NO_MODIFICATION_ALLOWED_ERR</code> <span class=ed>@@ ref</span>.
345 <span class=ed>@@ I forgot why this requirement is necessary.</span></p>
346
347 <p>If the node is an
348 <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>:
349 The attribute <em class=rfc2119>MUST</em> behave as if the node
350 were <code>Attr</code> <span class=ed>[DOM3]</span>.</p></dd>
351 <dt><code id=normalize>normalize</code></dt>
352 <dd><p>When a <a href="#DocumentType"><code>DocumentType</code></a> is
353 normalized, any nodes in the <code>NamedNodeMap</code> object in the
354 <a href="#elementTypes"><code>elementTypes</code></a> attribute
355 <em class=rfc2119>MUST</em> be normalized as well.</p>
356
357 <p>When an
358 <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> node
359 is normalized, any nodes in the <code>NamedNodeMap</code> object in the
360 <a href="#attributeDefinitions"><code>attributeDefinitions</code></a>
361 attribute <em class=rfc2119>MUST</em> be normalized as well.</p></dd>
362 <dt class=ed>@@ ...</dt>
363 </dl>
364
365 </div>
366
367 <div class=section id=section-document>
368 <h3>Modifications to the <code id=Document>Document</code> Interface</h3>
369
370 <p>If an attempt is made to adopt an
371 <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> or
372 <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node,
373 the <code id=adoptNode>adoptNode</code> method <em class=rfc2119>MUST</em>
374 raise a <code>NOT_SUPPORTED_ERR</code> exception <span class=ed>@@
375 ref</span>.</p>
376 </div>
377
378 <div class=section id=section-documentxdoctype>
379 <h3>The <code>DocumentXDoctype</code> Interface</h3>
380
381 <p>The <a href="#DocumentXDoctype"><code>DocumentXDoctype</code></a> interface
382 <em class=rfc2119>MUST</em> be implemented as following:</p>
383 <pre class=idl><code>interface <dfn id=DocumentXDoctype><code>DocumentXDoctype</code></dfn> {
384 DocumentType <a href="#createDocumentTypeDefinition">createDocumentTypeDefinition</a>
385 (in DOMString <a href="#createDocumentTypeDefinition-name"><var>name</var></a>)
386 raises (DOMException);
387 <a href="#ElementTypeDefinition">ElementTypeDefinition</a> <a href="#createElementTypeDefinition">createElementTypeDefinition</a>
388 (in DOMString <a href="#createElementTypeDefinition-name"><var>name</var></a>)
389 raises (DOMException);
390 <a href="#AttributeDefinition">AttributeDefinition</a> <a href="#createAttributeDefinition">createAttributeDefinition</a>
391 (in DOMString <a href="#createAttributeDefinition-name"><var>name</var></a>)
392 raises (DOMException);
393 <a href="#Entity">Entity</a> <a href="#createGeneralEntity">createGeneralEntityDefinition</a>
394 (in DOMString <a href="#createGeneralEntity-name"><var>name</var></a>)
395 raises (DOMException);
396 <a href="#Notation">Notation</a> <a href="#createNotation">createNotation</a>
397 (in DOMString <a href="#createNotation-name"><var>name</var></a>)
398 raises (DOMException);
399 }</code></pre>
400
401 <div class=ed>@@ cast definition</div>
402
403 <dl>
404 <dt><dfn id=createDocumentTypeDefinition class=dom-method><code>createDocumentTypeDefinition</code></dfn>,
405 method</dt>
406 <dd>
407 <p>This method creates a <code>DocumentType</code> node with the specified
408 name, belonging to the document.</p>
409 <p>The <dfn id=createDocumentTypeDefinition-name class=dom-param><var>name</var></dfn>
410 parameter is the name of the document type.</p>
411
412 <p>When invoked, the method <em class=rfc2119>MUST</em> create and
413 return a <code>DocumentType</code> node with the following attributes:</p>
414 <dl>
415 <dt><code>attributes</code>, <code>parentNode</code></dt>
416 <dd><code>null</code>.</dd>
417 <dt><code>elementTypes</code>, <code>generalEntities</code>, and
418 <code>notations</code></dt>
419 <dd>Empty <code>NamedNodeMap</code> objects.</dd>
420 <dt><code>entities</code></dt>
421 <dd>The same value as the <code>generalEntities</code> attribute.</dd>
422 <dt><code>childNodes</code></dt>
423 <dd>An empty <code>NodeList</code> object.</dd>
424 <dt><code>internalSubset</code>, <code>publicId</code>, and
425 <code>systemId</code></dt>
426 <dd>Empty strings.</dd>
427 <dt><code>manakaiReadOnly</code> <span class=ed>[manakai]</span></dt>
428 <dd><code>false</code>.</dd>
429 <dt><code>nodeName</code></dt>
430 <dd><a href="#createDocumentTypeDefinition-name"><var>name</var></a>.</dd>
431 <dt><code>ownerDocument</code></dt>
432 <dd>The <code>Document</code> over which the method is invoked.</dd>
433 </dl>
434 <p>In addition, the method <em class=rfc2119>MUST</em> be marked as
435 containing five general entity declarations: <code>amp</code>,
436 <code>lt</code>, <code>gt</code>, <code>quot</code>, and
437 <code>apos</code>.</p>
438 </dd>
439 <dt><dfn id=createElementTypeDefinition class=dom-method><code>createElementTypeDefinition</code></dfn>,
440 method</dt>
441 <dd>
442 <p>This method creates a <code>ElementTypeDefinition</code> node with the
443 specified name, belonging to the document.</p>
444 <p>The <dfn id=createElementTypeDefinition-name class=dom-param><var>name</var></dfn>
445 parameter is the name of the element type defined by the element
446 type definition.</p>
447
448 <p>When invoked, the method <em class=rfc2119>MUST</em> create and
449 return an
450 <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>
451 node with the following attributes:</p>
452 <dl>
453 <dt><a href="#attributeDefinitions"><code>attributeDefinitions</code></a></dt>
454 <dd>An empty <code>NamedNodeMap</code> object.</dd>
455 <dt><code>attributes</code>, <code>parentNode</code></dt>
456 <dd><code>null</code>.</dd>
457 <dt><code>childNodes</code></dt>
458 <dd>An empty <code>NodeList</code> object.</dd>
459 <dt><code>manakaiReadOnly</code> <span class=ed>[manakai]</span></dt>
460 <dd><code>false</code>.</dd>
461 <dt><code>nodeName</code></dt>
462 <dd><a href="#createElementTypeDefinition-name"><var>name</var></a>.</dd>
463 <dt><code>ownerDocument</code></dt>
464 <dd>The <code>Document</code> node over which the method is invoked.</dd>
465 <dt><a href="#ownerDocumentTypeDefinition"><code>ownerDocumentTypeDefinition</code></a></dt>
466 <dd><code>null</code>.</dd>
467 <dt class=ed>@@ Ensure all attributes are defined</dt>
468 </dl>
469 </dd>
470 <dt><dfn id=createAttributeDefinition class=dom-method><code>createAttributeDefinition</code></dfn>,
471 method</dt>
472 <dd>
473 <p>This method creates a <code>AttributeDefinition</code> node with the
474 specified name, belonging to the document.</p>
475 <p>The <dfn id=createAttributeDefinition-name class=dom-param><var>name</var></dfn>
476 parameter is the name of the attribute defined by the attribute
477 definition.</p>
478
479 <p>When invoked, the method <em class=rfc2119>MUST</em> create and
480 return an
481 <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>
482 node with the following attributes:</p>
483 <dl>
484 <dt><code>allowedTokens</code></dt>
485 <dd>An empty <code>DOMStringList</code> object.</dd>
486 <dt><code>attributes</code>,
487 <a href="#ownerElementTypeDefinition"><code>ownerElementTypeDefinition</code></a>,
488 and <code>parentNode</code></dt>
489 <dd><code>null</code>.</dd>
490 <dt><code>childNodes</code></dt>
491 <dd>An empty <code>NodeList</code> object.</dd>
492 <dt><code>declaredType</code></dt>
493 <dd><a href="#NO_TYPE_ATTR"><code>NO_TYPE_ATTR</code></a>.</dd>
494 <dt><code>defaultType</code></dt>
495 <dd><a href="#UNKNOWN_DEFAULT"><code>UNKNOWN_DEFAULT</code></a>.</dd>
496 <dt><code>manakaiReadOnly</code> <span class=ed>[manakai]</span></dt>
497 <dd><code>false</code>.</dd>
498 <dt><code>nodeName</code></dt>
499 <dd><a href="#createAttributeDefinition-name"><var>name</var></a>.</dd>
500 <dt><code>ownerDocument</code></dt>
501 <dd>The <code>Document</code> node over which the method is invoked.</dd>
502 <dt class=ed>@@ Ensure all attributes are defined</dt>
503 </dl>
504
505 <div class=ed>
506 <p>@@ Should we keep these statements?:
507 However, if the &lt;cfg::cfg|xml-id> configuration
508 parameter is set to <code>true</code> and the <var>name</var>
509 is <code>xml:id</code>, then the [CODE(DOMa)@en[[[declaredType]]]]
510 attribute is set to <code>ID_ATTR</code>.
511 [CODE(DOMa)@en[[[defaultType]]]]?</p>
512 </div>
513 </dd>
514 <dt><dfn id=createGeneralEntity class=dom-method><code>createGeneralEntity</code></dfn>,
515 method</dt>
516 <dd>
517 <p>This method creates a <a href="#Entity"><code>Entity</code></a> node
518 with the specified name, which represents a general entity, belonging to
519 the document.</p>
520 <p>The <dfn id=createGeneralEntity-name class=dom-param><var>name</var></dfn>
521 parameter is the name of the general entity.</p>
522
523 <p>When invoked, the method <em class=rfc2119>MUST</em> create and return
524 an <a href="#Entity"><code>Entity</code></a> node with the following
525 attributes:</p>
526 <dl>
527 <dt><code>attributes</code>, <code>notationName</code>,
528 <a href="#ownerDocumentTypeDefinition"><code>ownerDocumentTypeDefinition</code></a>,
529 and <code>parentNode</code></dt>
530 <dd><code>null</code>.</dd>
531 <dt><code>childNodes</code></dt>
532 <dd>An empty <code>NodeList</code> object.</dd>
533 <dt><code>manakaiDeclarationBaseURI</code>,
534 <code>manakaiEntityBaseURI</code>, and
535 <code>manakaiEntityURI</code> <span class=ed>@@ ref</span></dt>
536 <dd>No explicit value is set.</dd>
537 <dt><a href="#hasReplacementTree"><code>hasReplacementTree</code></a> and
538 <code>manakaiReadOnly</code> <span class=ed>[manakai]</span></dt>
539 <dd><code>false</code>.</dd>
540 <dt><code>nodeName</code></dt>
541 <dd><a href="#createGeneralEntity-name"><var>name</var></a>.</dd>
542 <dd>
543 <div class="note memo">
544 <p>It is not an error for
545 <a href="#createGeneralEntity-name"><var>name</var></a> matching
546 to the name of one of predefined general parsed entities in
547 <abbr>XML</abbr> or <abbr>HTML</abbr>. For example,
548 <a href="#createGeneralEntity-name"><var>name</var></a> might be
549 <code>amp</code>, resulting in an
550 <a href="#Entity"><code>Entity</code></a> node
551 with its <code>nodeName</code> attribute set to <code>amp</code>.</p>
552 </div>
553 </dd>
554 <dt><code>ownerDocument</code></dt>
555 <dd>The <code>Document</code> node over which the method is invoked.</dd>
556 <dt><code>publicId</code>, and <code>systemId</code></dt>
557 <dd><code>null</code>.</dd>
558 <dd class=ed>@@ publicId and systemId should be empty string?</dd>
559 <dt class=ed>@@ Ensure all attributes are defined</dd>
560 </dl>
561 </dd>
562 <dt><dfn id=createNotation class=dom-method><code>createNotation</code></dfn>,
563 method</dt>
564 <dd>
565 <p>This method creates a <code>Notation</code> node with the
566 specified name, belonging to the document.</p>
567 <p>The <dfn id=createNotation-name class=dom-param><var>name</var></dfn>
568 parameter is the name of the notation.</p>
569
570 <p>When invoked, the method <em class=rfc2119>MUST</em> create and return
571 a <code>Notation</code> node with the following attributes:</p>
572 <dl>
573 <dt><code>attributes</code>,
574 <a href="#ownerDocumentTypeDefinition"><code>ownerDocumentTypeDefinition</code></a>,
575 and <code>parentNode</code></dt>
576 <dd><code>null</code>.</dd>
577 <dt><code>childNodes</code></dt>
578 <dd>An empty <code>NodeList</code> object.</dd>
579 <dt><code>manakaiDeclarationBaseURI</code></dt>
580 <dd>No explicit value is set.</dd>
581 <dt><code>manakaiReadOnly</code> <span class=ed>[manakai]</span></dt>
582 <dd><code>false</code>.</dd>
583 <dt><code>nodeName</code></dt>
584 <dd><a href="#createNotation-name"><var>name</var></a>.</dd>
585 <dt><code>ownerDocument</code></dt>
586 <dd>The <code>Document</code> node over which the method is invoked.</dd>
587 <dt><code>publicId</code> and <code>systemId</code></dt>
588 <dd><code>null</code>.</dd>
589 <dd class=ed>@@ publicId and systemId should be empty string?</dd>
590 <dt class=ed>@@ Ensure all attributes are defined</dt>
591 </dl>
592 </dd>
593 </dl>
594
595 <p>These methods <em class=rfc2119>MUST</em> raise an
596 <code>INVALID_CHARACTER_ERR</code> exception <span class=ed>@@ ref</span>
597 if <var>name</var> is <em>not</em> a legal <code>Name</code> according to
598 the <abbr>XML</abbr> version in use, as specified in the
599 <code>xmlVersion</code> attribute of the <code>Document</code> node.</p>
600
601 <div class="note memo">
602 <p>Non$B!>(B<abbr>XML</abbr> case is intentionally left unspecified for now,
603 since <abbr>DOM3</abbr> specification <span class=ed>@@ ref</span> does not
604 define it for <code>Document</code> methods.</p>
605
606 <p><var>name</var> does not have to be a namespace qualified name.</p>
607 </div>
608
609 </div>
610
611
612 <div class=section id=section-documenttype>
613 <h3>Modifications to the <code id=DocumentType>DocumentType</code>
614 Interface</h3>
615
616 <p>A <a href="#DocumentType"><code>DocumentType</code></a> interface
617 <em class=rfc2119>MAY</em> contain zero or more
618 <a href="#ProcessingInstruction"><code>ProcessingInstruction</code></a>
619 nodes in the <code>NodeList</code> object contained in the
620 <code>childNodes</code> attribute of the
621 <a href="#DocumentType"><code>DocumentType</code></a> node.</p>
622
623 <p>If the <a href="#DocumentType"><code>DocumentType</code></a> node is created
624 during the process to create a <abbr>DOM</abbr> from an <abbr>XML</abbr>
625 document, the <code>NodeList</code> object in the <code>childNodes</code>
626 object <em class=rfc2119>MUST</em> contains the
627 <a href="#ProcessingInstruction"><code>ProcessingInstruction</code></a>
628 nodes representing the processing instructions in the document type
629 definition of the document processed <span class=ed>@@ ref</span> by
630 the <abbr>XML</abbr> processor. If the
631 <a href="#DocumentType"><code>DocumentType</code></a> node is marked
632 as read$B!>(Bonly, then all the child nodes <em class=rfc2119>MUST</em>
633 also be marked as read$B!>(Bonly.</p>
634
635 <p>If a <a href="#DocumentType"><code>DocumentType</code></a> node is created
636 from a document type declaration information item <span class=ed>@@ ref</span>,
637 the <code>NodeList</code> object in the <code>childNodes</code> attribute
638 of the node <em class=rfc2119>MUST</em> contain the
639 <a href="#ProcessingInstruction"><code>ProcessingInstruction</code></a> nodes
640 created from the processing instruction information items in the list in the
641 [children] property of the document type declaration item in the same
642 order.</p>
643
644 <p>If a <a href="#DocumentType"><code>DocumentType</code></a> node is mapped to
645 a document type declaration information item, the list in the [children]
646 property <em class=rfc2119>MUST</em> contain the processng instruction
647 information items created from the
648 <a href="#ProcessingInstruction"><code>ProcessingInstruction</code></a> nodes
649 in the <code>NodeList</code> object in the <code>childNodes</code> attribute
650 of the <a href="#DocumentType"><code>DocumentType</code></a> node.</p>
651
652 <p>The implementation of the
653 <a href="#DocumentType"><code>DocumentType</code></a> interface
654 <em class=rfc2119>MUST</em> be modified as following:</p>
655 <pre class=idl><code>// Modifications to the DocumentType interface
656 attribute DOMString <a href="#publicId">publicId</a>;
657 attribute DOMString <a href="#systemId">systemId</a>;
658
659 attribute DOMString <a href="#internalSubset">internalSubset</a>;
660 </code></pre>
661
662 <p>The <code id=publicId>publicId</code> attribute and the
663 <code id=systemId>systemId</code> attribute of
664 <a href="#DocumentType"><code>DocumentType</code></a>,
665 <a href="#Entity"><code>Entity</code></a>, and
666 <a href="#Notation"><code>Notation</code></a> interfaces are no longer
667 read$B!>(Bonly.</p>
668
669 <p>On setting, the attribute <em class=rfc2119>MUST</em> raise a
670 <code>NO_MODIFICATION_ALLOWED_ERR</code> <span class=ed>@@ ref</span>
671 exception if the node is read$B!>(Bonly <span class=ed>@@ ref</span>.
672 Otherwise, it <em class=rfc2119>MUST</em> set the specified value as the value
673 associated to the attribute. No normalization, relative reference resolution,
674 or lexical validation is performed. <span class=ed>@@ If the new
675 value is <code>null</code>, ...</span></p>
676
677 <div class="note memo">
678 <p>Setting an invalid identifier might make the node unserializable.
679 Setting a public identifier while leaveing system identifier unspecified
680 would also make the <a href="#DocumentType"><code>DocumentType</code></a>
681 or <a href="#Entity"><code>Entity</code></a> node unserializable.</p>
682 </div>
683
684 <div class=ed>
685 <p>ISSUE: In HTML5, Firefox 1.5, and Opera 9, not specifying public or system identifier results in empty strings.</p>
686 </div>
687
688 <p>The <code id=internalSubset>internalSubset</code> attribute of the
689 <a href="#DocumentType"><code>DocumentType</code></a> interface is no longer
690 read$B!>(Bonly.</p>
691
692 <p>On setting, the attribute <em class=rfc2119>MUST</em> raise a
693 <code>NO_MODIFICATION_ALLOWED_ERR</code> <span class=ed>@@ ref</span>
694 exception if the node is read$B!>(Bonly <span class=ed>@@ ref</span>.
695 Otherwise, it <em class=rfc2119>MUST</em> set the specified value as the value
696 associated to the attribute. No normalization, or lexical validation is
697 performed. <span class=ed>@@ If the new value is <code>null</code>,
698 ...</span></p>
699
700 </div>
701
702 <div class=section id=section-documenttypedefinition>
703 <h3>The <code>DocumentTypeDefinition</code> Interface</h3>
704
705 <div class="note memo">
706 <p>This interface is a separated interface from the
707 <a href="#DocumentType"><code>DocumentType</code></a>, not a set of extensions
708 to the <a href="#DocumentType"><code>DocumentType</code></a>,
709 for the historical reason.</p>
710 </div>
711
712 <p>The
713 <a href="#DocumentTypeDefinition"><code>DocumentTypeDefinition</code></a>
714 interface <em class=rfc2119>MUST</em> be implemented as following:</p>
715 <pre class=idl><code>interface <dfn id=DocumentTypeDefinition><code>DocumentTypeDefinition</code></dfn> {
716 readonly attribute NamedNodeMap <a href="#elementTypes">elementTypes</a>;
717 readonly attribute NamedNodeMap <a href="#generalEntities">generalEntities</a>;
718 readonly attribute NamedNodeMap <a href="#notations">notations</a>;
719
720 <a href="#ElementTypeDefinition">ElementTypeDefinition</a> <a href="#getElementTypeDefinitionNode">getElementTypeDefinitionNode</a>
721 (in DOMString <a href="#getElementTypeDefinitionNode-name"><var>name</var></a>);
722 <a href="#Entity">Entity</a> <a href="#getGeneralEntityNode">getGeneralEntityNode</a>
723 (in DOMString <a href="#getGeneralEntityNode-name"><var>name</var></a>);
724 <a href="#Notation">Notation</a> <a href="#getNotationNode">getNotationNode</a>
725 (in DOMString <a href="#getNotationNode-name"><var>name</var></a>);
726
727 void <a href="#setElementTypeDefinitionNode">setElementTypeDefinitionNode</a>
728 (in DOMString <a href="#setElementTypeDefinitionNode-node"><var>node</var></a>)
729 raises (DOMException);
730 void <a href="#setGeneralEntityNode">setGeneralEntityNode</a>
731 (in DOMString <a href="#setGeneralEntityNode-node"><var>node</var></a>)
732 raises (DOMException);
733 void <a href="#setNotationNode">setNotationNode</a>
734 (in DOMString <a href="#setNotationNode-node"><var>node</var></a>)
735 raises (DOMException);
736 }</code></pre>
737
738 <pre class=ed>
739 [1] In an implementation that supports the
740 [CODE(URI)@en[[[http://suika.fam.cx/www/2006/feature/XDoctype]]]]
741 feature, a [CODE(DOMi)@en[[[DocumentType]]]] node
742 must implement the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]]
743 interface. See [[DOM XML Document Type Definition]>>3] for
744 details.
745 </pre>
746
747 <dl>
748 <dt><dfn id=elementTypes class=dom-attr><code>elementTypes</code></dfn> of
749 type <code>NamedNodeMap</code>, read$B!>(Bonly</dt>
750 <dd><p>A live <code>NamedNodeMap</code> object that contains all the element
751 type definitions belonging to the <code>DocumentType</code> node.</p>
752
753 <p>On getting, the attribute <em class=rfc2119>MUST</em> return the
754 <code>NamedNodeMap</code> object that contains all the
755 <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>
756 nodes belonging to the <code>DocumentType</code> node. The
757 <code>NamedNodeMap</code> object <em class=rfc2119>MUST</em> be read$B!>(Bonly
758 if and only if the node is read$B!>(Bonly. The <code>NamedNodeMap</code>
759 object <em class=rfc2119>MUST</em> be live and the same object
760 <em class=rfc2119>MUST</em> be returned for any invocation.</p>
761
762 <p>If the <code>DocumentType</code> node is created during the process
763 to create a <abbr>DOM</abbr> from an <abbr>XML</abbr> document, the following
764 requirements are applied: The <code>NamedNodeMap</code> object in the
765 <a href="#elementTypes"><code>elementType</code></a> attribute
766 <em class=rfc2119>MUST</em> be so transformed that the object contains
767 the <code>ElementTypeDefinition</code> nodes for the element types
768 whose name is presented as the <code>Name</code> of the element type or
769 attribute definition list declarations processed by the <abbr>XML</abbr>
770 processor. If there are more than one element type declarations for an
771 element type, then the declarations other than the first one
772 <em class=rfc2119>MUST</em> be ignored for the purpose of constructing the
773 <code>NamedNodeMap</code> object.</p></dd>
774 <dt><dfn id=generalEntities class=dom-attr><code>generalEntities</code></dfn>
775 of type <code>NamedNodeMap</code>, read$B!>(Bonly</dt>
776 <dd><p>A live <code>NamedNodeMap</code> object that contains all the general
777 entities belonging to the <code>DocumentType</code> node.</p>
778
779 <p>On getting, the attribute <em class=rfc2119>MUST</em> return the
780 same value as the <code>entities</code> attribute (defined in the
781 <code>DocumentType</code> interface) of the same node.</p>
782
783 <div class="note memo">
784 <p>This attribute is part of the interface for historical reason.</p>
785 </div></dd>
786 <!--
787 All entities declared in the document type definition
788 contained in or referenced from the document entity
789 might not be exposed through this collection, depending
790 on the information provided by the XML processor for
791 the DOM implementation. In particular, it might not
792 contain any entity if entity references are expanded
793 at the parse time. An implementation [['''MUST NOT''']]
794 expose an [CODE(DOMi)@en[[[Entity]]]] node whose [CODE(DOMa)@en[[[nodeName]]]]
795 is equal to the name of one of five predefined general entities in
796 XML through the collection as the result of parsing of an XML
797 document that has no error. Duplicate entity declarations are also discarded.
798
799 The attribute [['''MUST''']] return the [CODE(DOMi)@en[[[NamedNodeMap]]]]
800 object that contains all the [CODE(DOMi)@en[[[Entity]]]] nodes
801 representing general entities belong to the node. The returned
802 [CODE(DOMi)@en[[[NamedNodeMap]]]] object [['''MUST''']] be read-only if and only if
803 the node is read-only. Note that the [CODE(DOMi)@en[[[NamedNodeMap]]]] object is live
804 and therefore any change of read-only flag on the node is immediately
805 reflected by that of the object.
806 -->
807 <dt><dfn id=notations class=dom-attr><code>notations</code></dfn> of type
808 <code>notations</code>, read$B!>(Bonly</code>
809 <dd><p>A live <code>NamedNodeMap</code> object that contains all the
810 notations belonging to the <code>DocumentType</code> node.</p>
811
812 <p>On getting, the attribute <em class=rfc2119>MUST</em> return the
813 same value as the <code>notations</code> attribute (defined in the
814 <code>DocumentType</code> interface) of the same node.</p>
815
816 <div class="note memo">
817 <p>This attribute is part of the interface for historical reason.</p>
818 <p>Implementations are not required to implement the
819 <code>notations</code> attribute twice (for <code>DocumentType</code>
820 and <code>DocumentTypeDefinition</code> interfaces); they share exactly
821 same definition.</p>
822 </div></dd>
823 <!--
824 If the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]] node is
825 created from an XML document, duplicate notation declarations, if any, in DTD
826 [['''MUST NOT''']] result in a node in the [CODE(DOMi)@en[[[NamedNodeMap]]]]
827 object and only the first declaration [['''MUST''']] be
828 made available as a [CODE(DOMi)@en[[[Notation]]]] node.
829
830 ;; This definition is based on one for the
831 [CODE(DOMa)@en[[[notations]]]] attribute of the
832 [CODE(DOMi)@en[[[DocumentType]]]] interface in DOM XML module.
833 Since duplication is violation to the Validity Constraint,
834 XML parsers might vary on how notations are notified to
835 the application. In particular, [CODE(InfoProp)@en[[[notations]]]]
836 property of the document information item in XML Information Set
837 is so defined that in case ''any'' notation is declared for
838 multiple times then the property has no value.
839
840 The attribute [['''MUST''']] return the [CODE(DOMi)@en[[[NamedNodeMap]]]]
841 object that contains all the [CODE(DOMi)@en[[[Notation]]]] nodes
842 representing notations belong to the node. The returned
843 [CODE(DOMi)@en[[[NamedNodeMap]]]] object [['''MUST''']] be read-only if and only if
844 the node is read-only. Note that the [CODE(DOMi)@en[[[NamedNodeMap]]]] object is live
845 and therefore any change of read-only flag on the node is immediately
846 reflected by that of the object.
847 -->
848 <dt><dfn id=getElementTypeDefinitionNode class=dom-method><code>getElementTypeDefinitionNode</code></dfn>,
849 method</dt>
850 <dd><p>Returns the
851 <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> node
852 with the specified name.</p>
853
854 <p>The
855 <dfn id=getElementTypeDefinitionNode-name class=dom-param><var>name</var></dfn>
856 parameter is the name of the element type.</p>
857
858 <p>When invoked, the method <em class=rfc2119>MUST</em> return the
859 <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> node,
860 whose <a href="#nodeName"><code>nodeName</code></a> is equal to
861 <a href="#getElementTypeDefinitionNode-name"><var>name</var></a>, in the
862 <code>NamedNodeMap</code> object in the
863 <a href="#elementTypes"><code>elementTypes</code></a> attribute of the
864 node. If there is no such node, it <em class=rfc2119>MUST</em> return
865 <code>null</code>.</p></dd>
866 <dt><dfn id=getElementTypeDefinitionNode class=dom-method><code>getElementTypeDefinitionNode</code></dfn>,
867 method</dt>
868 <dd><p>Returns the
869 <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> node
870 with the specified name.</p>
871
872 <p>The
873 <dfn id=getElementTypeDefinitionNode-name class=dom-param><var>name</var></dfn>
874 parameter is the name of the element type.</p>
875
876 <p>When invoked, the method <em class=rfc2119>MUST</em> return the
877 <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> node,
878 whose <a href="#nodeName"><code>nodeName</code></a> is equal to
879 <a href="#getElementTypeDefinitionNode-name"><var>name</var></a>, in the
880 <code>NamedNodeMap</code> object in the
881 <a href="#elementTypes"><code>elementTypes</code></a> attribute of the
882 node. If there is no such node, it <em class=rfc2119>MUST</em> return
883 <code>null</code>.</p></dd>
884 <dt><dfn id=getGeneralEntityNode class=dom-method><code>getGeneralEntityNode</code></dfn>,
885 method</dt>
886 <dd><p>Returns the <a href="#Entity"><code>Entity</code></a> node
887 with the specified name.</p>
888
889 <p>The <dfn id=getEntityNode-name class=dom-param><var>name</var></dfn>
890 parameter is the name of the general entity.</p>
891
892 <p>When invoked, the method <em class=rfc2119>MUST</em> return the
893 <a href="#Entity"><code>Entity</code></a> node,
894 whose <a href="#nodeName"><code>nodeName</code></a> is equal to
895 <a href="#getEntityNode-name"><var>name</var></a>, in the
896 <code>NamedNodeMap</code> object in the
897 <a href="#entities"><code>entities</code></a> attribute of the
898 node. If there is no such node, it <em class=rfc2119>MUST</em> return
899 <code>null</code>.</p></dd>
900 <dt><dfn id=getNotationNode class=dom-method><code>getNotationNode</code></dfn>,
901 method</dt>
902 <dd><p>Returns the <a href="#Notation"><code>Notation>/code></a> node
903 with the specified name.</p>
904
905 <p>The
906 <dfn id=getNotationNode-name class=dom-param><var>name</var></dfn>
907 parameter is the name of the notation.</p>
908
909 <p>When invoked, the method <em class=rfc2119>MUST</em> return the
910 <a href="#Notation"><code>Notation</code></a> node,
911 whose <a href="#nodeName"><code>nodeName</code></a> is equal to
912 <a href="#getNotationNode-name"><var>name</var></a>, in the
913 <code>NamedNodeMap</code> object in the
914 <a href="#notations"><code>notations</code></a> attribute of the
915 node. If there is no such node, it <em class=rfc2119>MUST</em> return
916 <code>null</code>.</p></dd>
917 <dt><dfn id=setElementTypeDefinitionNode class=dom-method><code>setElementTypeDefinitionNode</code></dfn>,
918 method</dt>
919 <dd class=ed>@@</dd>
920 <dt><dfn id=setGeneralEntityNode class=dom-method><code>setGeneralEntityNode</code></dfn>,
921 method</dt>
922 <dd class=ed>@@</dd>
923 <dt><dfn id=setNotationNode class=dom-method><code>setNotationNode</code></dfn>,
924 method</dt>
925 <dd class=ed>@@</dd>
926 </dl>
927
928 <div class=ed>
929 <p>A future version of this interface might define the
930 <code>parameterEntities</code> and getter/setter for parameter entities.
931 </div>
932
933 </div>
934
935 <div class=section id=section-elementtypedefinition>
936 <h3>The <code>ElementTypeDefinition</code> Interface</h3>
937
938 <p>The nodes of type
939 <a href="#ELEMENT_TYPE_DEFINITION_NODE"><code>ELEMENT_TYPE_DEFINITION_NODE</code></a>
940 represents an element type definition. Such a node
941 <em class=rfc2119>MUST</em> implement the
942 <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>
943 interface, which extends the <a href="#Node"><code>Node</code></a>
944 interface.</p>
945
946 <p>An element type definition represents a definition of the element type.
947 It is corresponding to the element type declaration in <abbr>DTD</abbr>.
948 However, an
949 <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> node
950 does not represent the element type definition in <abbr>DTD</abbr> itself.
951 Even if there are more than one element type declarations for an element type
952 in <abbr>DTD</abbr>, the result <abbr>DOM</abbr> will contain only an
953 <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>
954 node for that element type. In addition, if there are attribute definition
955 declarations for an element type, even when there is no element type
956 declaration for that element type, the <abbr>DOM</abbr> will contain an
957 <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>
958 node for that element type.</p>
959
960 <p>An <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>
961 node cannot be a child of any node. An
962 <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> node
963 cannot have any child node.</p>
964
965 <p>The <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>
966 interface <em class=rfc2119>MUST</em> be implemented as following:</p>
967 <pre class=idl><code>interface <dfn id=ElementTypeDefinition><code>ElementTypeDefinition</code></dfn> : <a href="#Node">Node</a> {
968 readonly attribute <a href="#DocumentType">DocumentType</a> <a href="#ownerDocumentTypeDefinition">ownerDocumentTypeDefinition</a>;
969
970 readonly attribute NamedNodeMap <a href="#attributeDefinitions">attributeDefinitions</a>;
971 <a href="#AttributeDefinition">AttributeDefinition</a> <a href="#getAttributeDefinitionNode">getAttributeDefinitionNode</a>
972 (in DOMString <a href="#getAttributeDefinitionNode-name"><var>name</var></a>);
973 void <a href="#setAttributeDefinitionNode">setAttributeDefinitionNode</a>
974 (in <a href="#AttributeDefinition">AttributeDefinition</a> <a href="#setAttributeDefinitionNode-name"><var>node</var></a>)
975 raises (DOMException);
976 }</code></pre>
977
978 <dl>
979 <dt><dfn id=ownerDocumentTypeDefinition class=dom-attr><code>ownerDocumentTypeDefinition</code></dfn>
980 of type <a href="#DocumentType"><code>DocumentType</code></a>, read$B!>(Bonly</dt>
981 <dd><p>The
982 <a href="#ownerDocumentTypeDefinition"><code>ownerDocumentTypeDefinition</code></a>
983 attribute of
984 <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>,
985 <a href="#Entity"><code>Entity</code></a>, and
986 <a href="#Notation"><code>Notation</code></a> interface contains the
987 <a href="#DocumentType"><code>DocumentType</code></a> node to which the node
988 is attached.</p>
989
990 <p>On getting, the attribute <em class=rfc2119>MUST</em> return a
991 <a href="#DocumentType"><code>DocumentType</code></a> node. It
992 <em class=rfc2119>MUST</em> be such a node that whose
993 <a href="#elementTypes"><code>elementTypes</code></a> (for an
994 <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>
995 node), <a href="#entities"><code>entities</code></a> (for an
996 <a href="#Entity"><code>Entity</code></a> node), or
997 <a href="#notations"><code>notations</code></a> (for a
998 <a href="#Notation"><code>Notation</code></a> node) attribute contains the
999 <code>NamedNodeMap</code> object that contains the node. If there is no such
1000 a <a href="#DocumentType"><code>DocumentType</code></a> node,
1001 then <code>null</code> <em class=rfc2119>MUST</em> be returned.</p></dd>
1002 <dt><dfn id=attributeDefinitions class=dom-attr><code>attributeDefinitions</code></dfn>
1003 of type NamedNodeMap, read$B!>(Bonly</dt>
1004 <dd><p>A live <code>NamedNodeMap</code> object that contains all the
1005 attribute definitions belonging to the
1006 <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>
1007 node.</p>
1008
1009 <p>On getting, the attribute <em class=rfc2119>MUST</em> return the
1010 <code>NamedNodeMap</code> object that contains all the
1011 <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node
1012 belonging to the
1013 <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> node.
1014 The <code>NamedNodeMap</code> object <em class=rfc2119>MUST</em> be
1015 read$B!>(Bonly if and only if the node is read$B!>(Bonly. The
1016 <code>NamedNodeMap</code> object <em class=rfc2119>MUST</em> be live and
1017 the same object <em class=rfc2119>MUST</em> be returned for any
1018 invocation.</p>
1019
1020 <p>If the
1021 <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> node
1022 is created during the process to create a <abbr>DOM</abbr> from an
1023 <abbr>XML</abbr> document, the following requirements are applied: The
1024 <code>NamedNodeMap</code> object in the
1025 <a href="#attributeDefinitions"><code>attributeDefinitions</code></a>
1026 attribute <em class=rfc2119>MUST</em> be so transformed that the object
1027 contains the
1028 <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node
1029 corresponding to the attribute definitions in the attribute definition
1030 list declarations processed by the <abbr>XML</abbr> processor and
1031 associated to the element type represented by the node. If there are more
1032 than one attribute definitions for an attribute, then the definitions other
1033 than the first one <em class=rfc2119>MUST</em> be ignored for the purpose
1034 of constructing the <code>NamedNodeMap</code> object.</p></dd>
1035 <dt><dfn id=getAttributeDefinitionNode class=dom-method><code>getAttributeDefinitionNode</code></dfn>,
1036 method</dt>
1037 <dd><p>Return the
1038 <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node
1039 with the specified name.</p>
1040
1041 <p>The
1042 <dfn id=getAttributeDefinitionNode-name class=dom-param><var>name</var></dfn>
1043 parameter is the name of the attribute.</p>
1044
1045 <p>When invoked, the method <em class=rfc2119>MUST</em> return the
1046 <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node,
1047 whose <a href="#nodeName"><code>nodeName</code></a> attribute value is
1048 equal to <a href="#getAttributeDefinitionNode-name"><var>name</var></a>,
1049 in the <code>NamedNodeMap</code> in the
1050 <a href="#attributeDefinitions"><code>attributeDefinitions</code></a>
1051 attribute of the node. If there is no such node, it
1052 <em class=rfc2119>MUST</em> return <code>null</code>.</p></dd>
1053 <dt><dfn id=setAttributeDefinitionNode class=dom-method><code>setAttributeDefinitionNode</code></dfn>,
1054 method</dt>
1055 <dd class=ed>@@</dd>
1056 </dl>
1057
1058 <div class=ed>
1059 <p>A future version of the specification might define a set of attributes
1060 and methods for representing and accessing to the content model of the
1061 element type.</p>
1062 </div>
1063 </div>
1064
1065 <div class=section id=section-attributedefinition>
1066 <h3>The <code>AttributeDefinition</code> Interface</h3>
1067
1068 <p>The nodes of type
1069 <a href="#ATTRIBUTE_DEFINITION_NODE"><code>ATTRIBUTE_DEFINITION_NODE</code></a>
1070 represents an attribute definition. Such a node
1071 <em class=rfc2119>MUST</em> implement the
1072 <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> interface,
1073 which extends the <a href="#Node"><code>Node</code></a> interface.</p>
1074
1075 <p>An attribute definition represents a definition of the attribute
1076 associated to an element type. It is corresponding to the attribute definition
1077 in the attribute list declaration in <abbr>DTD</abbr>. However, an
1078 <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node does
1079 not represent the attribute definition in <abbr>DTD</abbr> itself. Even if
1080 there are more than one attribute definitions for an attribute of an element
1081 type in <abbr>DTD</abbr>, the result <abbr>DOM</abbr> will contain only an
1082 <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node for
1083 that attribute.</p>
1084
1085 <p>An <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>
1086 node cannot be a child of any node. An
1087 <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node
1088 can have zero or more child nodes of same kinds as those allowed for
1089 <code>Attr</code> nodes <span class=ed>[DOM3]</span>.</p>
1090
1091 <p>The <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>
1092 interface <em class=rfc2119>MUST</em> be implemented as following:</p>
1093 <pre class=idl><code>interface <dfn id=AttributeDefinition><code>AttributeDefinition</code></dfn> : <a href="#Node">Node</a> {
1094 <span class=comment>// <a href="#DeclaredValueType">DeclaredValueType</a></span>
1095 const unsigned short <a href="#NO_TYPE_ATTR">NO_TYPE_ATTR</a> = 0;
1096 const unsigned short <a href="#CDATA_ATTR">CDATA_ATTR</a> = 1;
1097 const unsigned short <a href="#ID_ATTR">ID_ATTR</a> = 2;
1098 const unsigned short <a href="#IDREF_ATTR">IDREF_ATTR</a> = 3;
1099 const unsigned short <a href="#IDREFS_ATTR">IDREFS_ATTR</a> = 4;
1100 const unsigned short <a href="#ENTITY_ATTR">ENTITY_ATTR</a> = 5;
1101 const unsigned short <a href="#ENTITIES_ATTR">ENTITIES_ATTR</a> = 6;
1102 const unsigned short <a href="#NMTOKEN_ATTR">NMTOKEN_ATTR</a> = 7;
1103 const unsigned short <a href="#NMTOKENS_ATTR">NMTOKENS_ATTR</a> = 8;
1104 const unsigned short <a href="#NOTATION_ATTR">NOTATION_ATTR</a> = 9;
1105 const unsigned short <a href="#ENUMERATION_ATTR">ENUMERATION_ATTR</a> = 10;
1106 const unsigned short <a href="#UNKNOWN_ATTR">UNKNOWN_ATTR</a> = 11;
1107
1108 <span class=comment>// <a href="#DefaultValueType">DefaultValueType</a></span>
1109 const unsigned short <a href="#UNKNOWN_DEFAULT">UNKNOWN_DEFAULT</a> = 0;
1110 const unsigned short <a href="#FIXED_DEFAULT">FIXED_DEFAULT</a> = 1;
1111 const unsigned short <a href="#REQUIRED_DEFAULT">REQUIRED_DEFAULT</a> = 2;
1112 const unsigned short <a href="#IMPLIED_DEFAULT">IMPLIED_DEFAULT</a> = 3;
1113 const unsigned short <a href="#EXPLICIT_DEFAULT">EXPLICIT_DEFAULT</a> = 4;
1114
1115 readonly attribute <a href="#ElementTypeDefinition">ElementTypeDefinition</a> <a href="#ownerElementTypeDefinition">ownerElementTypeDefinition</a>;
1116
1117 readonly attribute unsigned short <a href="#declaredType">declaredType</a>;
1118 readonly attribute DOMStringList <a href="#allowedTokens">allowedTokens</a>;
1119 readonly attribute unsigned short <a href="#defaultType">defaultType</a>;
1120 }</code></pre>
1121
1122 <dl>
1123 <dt><dfn id=ownerElementTypeDefinition class=dom-attr><code>ownerElementTypeDefinition</code></dfn>
1124 of type
1125 <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>,
1126 read$B!>(Bonly</dt>
1127 <dd><p>The
1128 <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> to
1129 which the <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>
1130 node belongs.</p>
1131
1132 <p>On getting, the attribute <em class=rfc2119>MUST</em> return an
1133 <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> node.
1134 It <em class=rfc2119>MUST</em> be such a node that whose
1135 <a href="#attributeDefinitons"><code>attributeDefinitions</code></a>
1136 attribute contains the <code>NamedNodeMap</code> object that contains
1137 the <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>
1138 node. If there is no such an
1139 <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> node,
1140 then <code>null</code> <em class=rfc2119>MUST</em> be returned.</p>
1141 <dt><dfn id=declaredType class=dom-attr><code>declaredType</code></dfn> of type
1142 <code>unsigned short</code></dt>
1143 <dd><p>The declared type <span class=ed>@@ ref</span> of the attribute.
1144 It is expected that this attribute contains a value from the definition group
1145 <a href="#DeclaredValueType"><code>DeclaredValueType</code></a>.</p>
1146
1147 <p>On getting, the attribute <em class=rfc2119>MUST</em> return the
1148 value associated to this attribute.</p>
1149
1150 <p>On setting, the attribute <em class=rfc2119>MUST</em> raise a
1151 <code>NO_MODIFICATION_ALLOWED_ERR</code> <span class=ed>@@ ref</span>
1152 exception if the
1153 <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node
1154 is read$B!>(Bonly <span class=ed>@@ ref</span>. Otherwise, it
1155 <em class=rfc2119>MUST</em> set the specified value as the value
1156 associated to this attribute.</p>
1157
1158 <p>If the <code>AttributeDefinition</code> node is created during the process
1159 to create a <abbr>DOM</abbr> from an <abbr>XML</abbr> document, an
1160 appropriate value from the
1161 <a href="#DeclaredValueType"><code>DeclaredValueType</code></a> constant
1162 group <em class=rfc2119>MUST</em> be set to the attribute.</p>
1163
1164 <!-- DeclaredValueType -->
1165 <p>The definition group
1166 <dfn id=DeclaredValueType><code>DeclaredValueType</code></dfn> contains
1167 integers indicating the declared type of attributes. The definition
1168 group contains the following constants:</p>
1169
1170 <table>
1171 <thead>
1172 <tr><th scope=col>Name<th scope=col>Value<th scope=col>Description</tr>
1173 </thead>
1174 <tbody>
1175 <tr>
1176 <th scope=row><dfn id=NO_TYPE_ATTR class=dom-const><code>NO_TYPE_ATTR</code>
1177 <td><code>0</code><td>No value <span class=ed>[INFOSET]</span>.</tr>
1178 <tr>
1179 <th scope=row><dfn id=CDATA_ATTR class=dom-const><code>CDATA_ATTR</code>
1180 <td><code>1</code><td><code>CDATA</code> <span class=ed>[XML]</span>.</tr>
1181 <tr>
1182 <th scope=row><dfn id=ID_ATTR class=dom-const><code>ID_ATTR</code>
1183 <td><code>2</code><td><code>ID</code> <span class=ed>[XML]</span>.</tr>
1184 <tr>
1185 <th scope=row><dfn id=IDREF_ATTR class=dom-const><code>IDREF_ATTR</code>
1186 <td><code>3</code><td><code>IDREF</code> <span class=ed>[XML]</span>.</tr>
1187 <tr>
1188 <th scope=row><dfn id=IDREFS_ATTR class=dom-const><code>IDREFS_ATTR</code>
1189 <td><code>4</code><td><code>IDREFS</code> <span class=ed>[XML]</span>.</tr>
1190 <tr>
1191 <th scope=row><dfn id=ENTITY_ATTR class=dom-const><code>ENTITY_ATTR</code>
1192 <td><code>5</code><td><code>ENTITY</code> <span class=ed>[XML]</span>.</tr>
1193 <tr>
1194 <th scope=row><dfn id=ENTITIES_ATTR class=dom-const><code>ENTITIES_ATTR</code>
1195 <td><code>6</code><td><code>ENTITIES</code> <span class=ed>[XML]</span>.</tr>
1196 <tr>
1197 <th scope=row><dfn id=NMTOKEN_ATTR class=dom-const><code>NMTOKEN_ATTR</code>
1198 <td><code>7</code><td><code>NMTOKEN</code> <span class=ed>[XML]</span>.</tr>
1199 <tr>
1200 <th scope=row><dfn id=NMTOKENS_ATTR class=dom-const><code>NMTOKENS_ATTR</code>
1201 <td><code>8</code><td><code>NMTOKENS</code> <span class=ed>[XML]</span>.</tr>
1202 <tr>
1203 <th scope=row><dfn id=NOTATION_ATTR class=dom-const><code>NOTATION_ATTR</code>
1204 <td><code>9</code><td><code>NOTATION</code> <span class=ed>[XML]</span>.</tr>
1205 <tr>
1206 <th scope=row><dfn id=ENUMERATION_ATTR class=dom-const><code>ENUMERATION_ATTR</code>
1207 <td><code>10</code><td>Enumeration <span class=ed>[XML]</span>.</tr>
1208 <tr>
1209 <th scope=row><dfn id=UNKNOWN_ATTR class=dom-const><code>UNKNOWN_ATTR</code>
1210 <td><code>11</code><td>Unknown, because no declaration for the attribute
1211 has been read but the [all declaration processed] property
1212 <span class=ed>[INFOSET]</span> would be false.</tr>
1213 </tbody>
1214 </table>
1215
1216 <p>If no attribute type information is available, or if the source
1217 of the information does not distinguish <q>no value</q> and <q>unknown</q>
1218 <span class=ed>[INFOSET]</span>, then the value
1219 <a href="#NO_TYPE_ATTR"><code>NO_TYPE_ATTR</code></a>
1220 <em class=rfc2119>MUST</em> be used.</p>
1221
1222 <div class="note memo">
1223 <p>An <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node
1224 created by the
1225 <a href="#createAttributeDefinition"><code>createAttributeDefinition</code></a>
1226 method has its <a href="#declaredType"><code>declaredType</code></a> attribute
1227 set to <a href="#NO_TYPE_ATTR"><code>NO_TYPE_ATTR</code></a>.</p>
1228 </div>
1229
1230 <p>If the source of the information does not distinguish <q>no value</q>
1231 and/or <q>unknown</q> <span class=ed>[INFOSET]</span> and
1232 <code>CDATA</code> <span class=ed>[XML]</span>, then the value
1233 <a href="#CDATA_ATTR"><code>CDATA_ATTR</code></a> <em class=rfc2119>MUST</em>
1234 be used.</p>
1235
1236 <p>In Perl binding <span class=ed>[PERLBINDING]</span>, the
1237 <code>Attr</code> nodes <em class=rfc2119>MUST</em> implement the
1238 <a href="#DeclaredValueType"><code>DeclaredValueType</code></a>
1239 definition group.</p>
1240
1241 </dd>
1242 <dt><dfn id=allowedTokens class=dom-attr><code>allowedTokens</code></dfn> of
1243 type <code>DOMStringList</code>, read$B!>(Bonly</dt>
1244 <dd><p>The list of allowed attribute values.</p>
1245
1246 <p>On getting, the attribute <em class=rfc2119>MUST</em> return the
1247 <code>DOMStringList</code> object associated to this attribute. The object
1248 <em class=rfc2119>MAY</em> contain zero or more ordered strings, consist of
1249 zero or more characters respectively, possibly with duplications. The
1250 object <em class=rfc2119>MUST</em> be read$B!>(Bonly if and only if the node
1251 is read$B!>(Bonly.</p>
1252
1253 <p>If the <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>
1254 node is created during the process to create a <abbr>DOM</abbr> from an
1255 <abbr>XML</abbr> document, the object <em class=rfc2119>MUST</em> contain
1256 the names or name tokens allowed for the attribute defined by the node.
1257 If the document is well$B!>(Bformed, the object will be empty unless
1258 the <a href="#declaredType"><code>declaredType</code></a> is
1259 <a href="#ENUMERATION_ATTR"><code>ENUMERATION_ATTR</code></a> or
1260 <a href="#NOTATION_ATTR"><code>NOTATION_ATTR</code></a>.</p>
1261
1262 <p>If the <a href="#declaredType"><code>declaredType</code></a> is different
1263 from <a href="#ENUMERATION_ATTR"><code>ENUMERATION_ATTR</code></a> or
1264 <a href="#NOTATION_ATTR"><code>NOTATION_ATTR</code></a>, this attribute
1265 <em class=rfc2119>MUST</em> be ignored for the purpose of serializing
1266 into (part of) <abbr>XML</abbr> document.</p>
1267
1268 <div class="note memo">
1269 <p>When serializing the node it should be noted that the object might
1270 be empty, might contain duplications, and might contain strings that are
1271 not names or name tokens.</p>
1272 </div></dd>
1273 <dt><dfn id=defaultType class=dom-attr><code>defaultType</code></dfn> of
1274 type <code>unsigned short</code></dt>
1275 <dd><p>The type of the default for the attribute. It is expected that this
1276 attribute contains a value from the definition group
1277 <a href="#DefaultValueType"><code>DefaultValueType</code></a>.</p>
1278
1279 <p>On getting, the attribute <em class=rfc2119>MUST</em> return
1280 the value associated to this attribute.</p>
1281
1282 <p>On setting, the attribute <em class=rfc2119>MUST</em> raise a
1283 <code>NO_MODIFICATION_ALLOWED_ERR</code> <span class=ed>@@ ref</span>
1284 exception if the
1285 <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node
1286 is read$B!>(Bonly <span class=ed>@@ ref</span>. Otherwise, it
1287 <em class=rfc2119>MUST</em> set the specified value as the value
1288 associated to this attribute.</p>
1289
1290 <p>If the
1291 <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node is
1292 created during the process to create a <abbr>DOM</abbr> from an
1293 <abbr>XML</abbr> document, an appropriate value from the
1294 <a href="#DefaultValueType"><code>DefaultValueType</code></a> definition
1295 group <em class=rfc2119>MUST</em> be set to the attribute.</p>
1296
1297 <!-- DefaultValueType -->
1298 <p>The definition group
1299 <dfn id=DefaultValueType><code>DefaultValueType</code></dfn>
1300 contains integers indicating the type of the default for the attribute.
1301 The definition group contains the following constans:</p>
1302
1303 <table>
1304 <thead>
1305 <tr><th scope=col>Name<th scope=col>Value<th scope=col>Description</tr>
1306 </thead>
1307 <tbody>
1308 <tr>
1309 <th scope=row><dfn id=UNKNOWN_DEFAULT class=dom-const><code>UNKNOWN_DEFAULT</code></dfn>
1310 <td><code>0</code><td>Unknown.</tr>
1311 <tr>
1312 <th scope=row><dfn id=FIXED_DEFAULT class=dom-const><code>FIXED_DEFAULT</code></dfn>
1313 <td><code>1</code><td>Provided explicitly and fixed
1314 <span class=ed>@@ ref</span> to that value.</tr>
1315 <tr>
1316 <th scope=row><dfn id=REQUIRED_DEFAULT class=dom-const><code>REQUIRED_DEFAULT</code></dfn>
1317 <td><code>2</code><td>No default value and the attribute have to be
1318 explicitly specified.</tr>
1319 <tr>
1320 <th scope=row><dfn id=IMPLIED_DEFAULT class=dom-const><code>IMPLIED_DEFAULT</code></dfn>
1321 <td><code>3</code><td>Implied <span class=ed>@@ ref</span>.</tr>
1322 <tr>
1323 <th scope=row><dfn id=EXPLICIT_DEFAULT class=dom-const><code>EXPLICIT_DEFAULT</code></dfn>
1324 <td><code>4</code><td>Provided explicitly.</tr>
1325 </tbody>
1326 </table>
1327
1328 <p>If the source of the default type does not distinguish
1329 implied and unknown default types, then the value
1330 <a href="#IMPLIED_DEFAULT"><code>IMPLIED_DEFAULT</code></a>
1331 <em class=rfc2119>MUST</em> be used.</p>
1332
1333 <div class="note memo">
1334 <p>An <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>
1335 node created by the
1336 <a href="#createAttributeDefinition"><code>createAttributeDefinition</code></a>
1337 method has its <a href="#defaultType"><code>defaultType</code></a>
1338 attribute set to
1339 <a href="#UNKNOWN_DEFAULT"><code>UNKNOWN_DEFAULT</code></a>.</p>
1340 </div></dd>
1341 </dl>
1342
1343 </div>
1344
1345 <div class=section id=section-entity>
1346 <h3>Modifications to the <code id=Entity>Entity</code> Interface</h3>
1347
1348 <p>The implementation of the <a href="#Entity"><code>Entity</code></a>
1349 interface <em class=rfc2119>MUST</em> be modified as following:</p>
1350 <pre class=idl><code>// Modifications to the Entity interface
1351 attribute DOMString <a href="#publicId">publicId</a>;
1352 attribute DOMString <a href="#systemId">systemId</a>;
1353 attribute DOMString <a href="#notationName">notationName</a>;
1354
1355 // Additions to the Entity interface
1356 attribute DOMString <a href="#hasReplacementTree">hasReplacementTree</a>;
1357 readonly attribute <a href="#DocumentType">DocumentType</a> <a href="#ownerDocumentTypeDefinition">ownerDocumentTypeDefinition</a>;
1358
1359 attribute boolean <a href="#isExternallyDeclared">isExternallyDeclared</a>;
1360 </code></pre>
1361
1362 <p>The <code id=notationName>notationName</code> attribute of the
1363 <a href="#Entity"><code>Entity</code></a> interface is no longer
1364 read$B!>(Bonly.</p>
1365
1366 <p>On setting, the attribute <em class=rfc2119>MUST</em> raise a
1367 <code>NO_MODIFICATION_ALLOWED_ERR</code> <span class=ed>@@ ref</span>
1368 exception if the node is read$B!>(Bonly <span class=ed>@@ ref</span>.
1369 Otherwise, it <em class=rfc2119>MUST</em> set the specified value as the value
1370 associated to the attribute. No lexical validation is performed. The new
1371 value <em class=rfc2119>MAY</em> be <code>null</code>.</p>
1372
1373 <dl>
1374 <dt><dfn id=hasReplacementTree class=dom-attr><code>hasReplacementTree</code></dfn>
1375 of type boolean</dt>
1376 <dd><p>Whether the structure of the replacement text of the entity
1377 is available via the <code>NodeList</code> object in the
1378 <code>childNodes</code> attribute of the entity.</p>
1379
1380 <p>On getting, the attribute <em class=rfc2119>MUST</em> return
1381 the value associated to this attribute.</p>
1382
1383 <p>On setting, the attribute <em class=rfc2119>MUST</em> raise a
1384 <code>NO_MODIFICATION_ALLOWED_ERR</code> <span class=ed>@@ ref</span>
1385 exception if the node is read$B!>(Bonly <span class=ed>@@ ref</span>.
1386 Otherwise, it <em class=rfc2119>MUST</em> set the specified value as the
1387 value associated to this attribute.</p>
1388
1389 <div class="note memo">
1390 <p>The attribute can be set to <code>false</code> even if the
1391 <a href="#Entity"><code>Entity</code></a> node has any child node.
1392 If the attribute is set to <code>false</code>, then any child node of
1393 the <a href="#Entity"><code>Entity</code></a> node ought to be ignored,
1394 say, for the purpose of serialization.</p>
1395 </div>
1396
1397 <p>When an <code>EntityReference</code> node is created by cloning
1398 the replacement subtree of the <a href="#Entity"><code>Entity</code></a>
1399 node, if the attribute is set to <code>false</code>, then any descendant
1400 of the node <em class=rfc2119>MUST</em> be ignored.</p>
1401
1402 <p>If the <a href="#Entity"><code>Entity</code></a> node is created during
1403 the process to create a <abbr>DOM</abbr> from an <abbr>XML</abbr> document,
1404 the following requirements are applied: If the entity is an unparsed
1405 entity, then the attribute <em class=rfc2119>MUST</em> be set to
1406 <code>false</code>. Otherwise, if the entity is an external entity whose
1407 replacement text is not available, or whose replacement text is not converted
1408 to a replacement tree, then the attribute <em class=rfc2119>MUST</em> be set
1409 to <code>false</code>. Otherwise, the attribute
1410 <em class=rfc2119>MUST</em> be set to <code>true</code>.</p>
1411
1412 <div class="note memo">
1413 <p>An <a href="#Entity"><code>Entity</code></a> node created by the
1414 <a href="#createGeneralEntity"><code>createGeneralEntity</code></a> method
1415 has its <a href="#hasReplacementTree"><code>hasReplacementTree</code></a>
1416 attribute set to <code>false</code>.</p>
1417 </div></dd>
1418 <dt><dfn id=isExternallyDeclared class=dom-attr><code>isExternallyDeclared</code></dfn>
1419 of type boolean</dt>
1420 <dd><p>Whether the entity is declared by an external entity declaration or
1421 not. If the value is <code>true</code>, the entity is declared in an entity
1422 declaration in the external subset entity or in an external parameter entity.
1423 If the value is <code>false</code>, the entity is declared in an entity
1424 declaration in the internal subset, or the node is created in memory.</p>
1425
1426 <p>On getting, the attribute <em class=rfc2119>MUST</em> return
1427 the value associated to this attribute.</p>
1428
1429 <p>On setting, the attribute <em class=rfc2119>MUST</em> raise a
1430 <code>NO_MODIFICATION_ALLOWED_ERR</code> <span class=ed>@@ ref</span>
1431 exception if the node is read$B!>(Bonly <span class=ed>@@ ref</span>.
1432 Otherwise, it <em class=rfc2119>MUST</em> set the specified value as the
1433 value associated to this attribute.</p>
1434
1435 <p>If the <a href="#Entity"><code>Entity</code></a> node is created during
1436 the process to create a <abbr>DOM</abbr> from an <abbr>XML</abbr> document,
1437 the following requirements are applied: If the entity is an unparsed
1438 entity, then the attribute <em class=rfc2119>MUST</em> be set to
1439 <code>false</code>. Otherwise, i.e. the entity is a parsed entity, then the
1440 attribute <em class=rfc2119>MUST</em> be set to the value of whether the
1441 entity is declared by an external markup declaration or not.</p></dd>
1442 </dl>
1443 </div>
1444
1445 <div class=section id=section-notation>
1446 <h3>Modifications to the <code id=Notation>Notation</code> Interface</h3>
1447
1448 <p>The implementation of the <a href="#Notation"><code>Notation</code></a>
1449 interface <em class=rfc2119>MUST</em> be modified as following:</p>
1450 <pre class=idl><code>// Modifications to the Notation interface
1451 attribute DOMString <a href="#publicId">publicId</a>;
1452 attribute DOMString <a href="#systemId">systemId</a>;
1453
1454 // Addition to the Notation interface
1455 readonly attribute <a href="#DocumentType">DocumentType</a> <a href="#ownerDocumentTypeDefinition">ownerDocumentTypeDefinition</a>;
1456 </code></pre>
1457 </div>
1458
1459 </div>
1460
1461 <div id="references" class="section reference">
1462 <h2>References</h2>
1463
1464 <div id="normative-references" class="section normative reference">
1465 <h3>Normative References</h3>
1466
1467 <dl>
1468 <dt id=ref-DOM3CORE>DOM3CORE</dt>
1469 <dd class=ed>@@ W3C DOM Level 3 Core</dd>
1470 <dt id=ref-DOMDTDEF>DOMDTDEF</dt>
1471 <dd class=ed>@@ manakai's extension to DOM for document type definitions</dd>
1472 <dt id="ref-KEYWORDS">KEYWORDS</dt>
1473 <dd><cite><a href="urn:ietf:rfc:2119">Key words for use in
1474 <abbr>RFCs</abbr> to Indicate Requirement Levels</a></cite>,
1475 <abbr title="Internet Engineering Task Force">IETF</abbr>
1476 <a href="urn:ietf:bcp:14"><abbr title="Best Current Practice">BCP</abbr>
1477 14</a>, <abbr title="Request for Comments">RFC</abbr> 2119,
1478 <time datetime=1997-03>March 1997</time>.
1479 <em>This</em> version of the specification is referenced.</dd>
1480 <dt id=ref-INFOSET>INFOSET</dt>
1481 <dd class=ed>@@</dd>
1482 <dt id=ref-XML10">XML10</dt>
1483 <dd><cite><a href="http://www.w3.org/TR/2006/REC-xml-20060816">Extensible
1484 Markup Language (<abbr>XML</abbr>) 1.0 (Fourth Edition)</a></cite>,
1485 <abbr>W3C</abbr> Recommendation, <time datetime=2006-08-16>16 August
1486 2006</time>, edited in place <time datetime=2006-09-29>29 September
1487 2006</time>. Tje latest version of the specification is available at
1488 <code class=uri>&lt;<a href="http://www.w3.org/TR/xml">http://www.w3.org/TR/xml</a>&gt;</code>.
1489 <em>This</em> version of the specification is referenced.</dd>
1490 <dt id=ref-XML11>XML11</dt>
1491 <dd class=ed>@@</dd>
1492 </dl>
1493 </div>
1494
1495 <div id="informative-references" class="section informative reference">
1496 <h3>Non$B!>(Bnormative References</h3>
1497
1498 <dl class=ed>
1499 <dt id=ref-CSS>CSS</dt>
1500 <dd><cite><a href="http://www.w3.org/TR/2007/CR-CSS21-20070719">Cascading
1501 Style Sheets Level 2 Revision 1 (<abbr>CSS</abbr> 2.1)
1502 Specification</a></cite>,
1503 <abbr title="World Wide Web Consortium">W3C</abbr> Candidate
1504 Recommendation, <time datetime=2007-07-19>19 July 2007</time>.
1505 Work in progress. The latest version of the specification is
1506 available at
1507 <code class=URI>&lt;<a href="http://www.w3.org/TR/CSS21">http://www.w3.org/TR/CSS21</a>></code>.</dd>
1508 <dt id=ref-CSSOM>CSSOM</dt>
1509 <dd><cite><a href="http://dev.w3.org/cvsweb/~checkout~/csswg/cssom/Overview.html?rev=1.55&amp;content-type=text/html;%20charset=utf-8">Cascading
1510 Style Sheets Object Model (<abbr>CSSOM</abbr>)</a></cite>,
1511 <abbr title="World Wide Web Consortium">W3C</abbr> Editor's Draft,
1512 <time datetime=2007-06-18>18 June 2007</time>. Work in progress.
1513 The latest Editor's Draft of the specification is available at
1514 <code class=URI>&lt;<a href="http://dev.w3.org/csswg/cssom/Overview.html">http://dev.w3.org/csswg/cssom/Overview.html</a>></code>.</dd>
1515 <dt id=ref-HTML5>HTML5</dt>
1516 <dd><cite><a href="http://whatwg.org/html5"><abbr>HTML</abbr> 5</a></cite>,
1517 <abbr title="Web Hypertext Application Technology Working Group">WHATWG</abbr>
1518 Working Draft. Work in progress.</dd>
1519 <dt id=ref-SAPI>SAPI</dt>
1520 <dd><cite><a href="http://dev.w3.org/cvsweb/~checkout~/2006/webapi/selectors-api/Overview.html?rev=1.28&amp;content-type=text/html;%20charset=utf-8">Selectors <abbr>API</abbr></a></cite>,
1521 <abbr title="World Wide Web Consortium">W3C</abbr> Editor's Draft,
1522 <time datetime=2007-08-29>29 August 2007</time>. Work in progress.
1523 The latest Editor's Draft of the specification is available at
1524 <code class=URI>&lt;<a href="http://dev.w3.org/2006/webapi/selectors-api/Overview.html">http://dev.w3.org/2006/webapi/selectors-api/Overview.html</a>></code>.
1525 The latest published version of the specification is available at
1526 <code class=URI>&lt;<a href="http://www.w3.org/TR/selectors-api/">http://www.w3.org/TR/selectors-api/</a>></code>.</dd>
1527 <dt id=XBL2>XBL2</dt>
1528 <dd><cite><a href="http://www.mozilla.org/projects/xbl/xbl2.html"><abbr>XBL</abbr>
1529 2.0</a></cite>, Mozilla.org, <time datetime=2007-03-15>15 Mar 2007</time>.
1530 Work in progress. The latest
1531 <abbr title="World Wide Web Consortium">W3C</abbr>$B!>(Bpublished
1532 version of the specification is available at
1533 <code class=URI>&lt;<a href="http://www.w3.org/TR/xbl/">http://www.w3.org/TR/xbl/</a>></code>.</dd>
1534 <dt id=ref-XML5>XML5</dt>
1535 <dd class=ed>@@</dd>
1536 </dl>
1537 </div>
1538
1539 </div>
1540
1541 </body>
1542 </html>

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24