/[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 - (hide annotations) (download) (as text)
Sat Dec 8 07:01:08 2007 UTC (16 years, 11 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 wakaba 1.1 <!DOCTYPE html>
2     <html lang="en" class="formal-specification status-work-in-progress">
3     <head>
4 wakaba 1.2 <title>DOM Document Type Definition Module</title>
5 wakaba 1.1 <link rel="stylesheet" href="http://suika.fam.cx/www/style/html/spec">
6 wakaba 1.4 <link rel="stylesheet" href="http://suika.fam.cx/www/style/def/dom">
7 wakaba 1.1 <link rel="license" href="http://suika.fam.cx/c/gnu/fdl">
8     </head>
9     <body class="has-abstract">
10    
11     <div class="header">
12 wakaba 1.2 <h1>DOM Document Type Definition Module</h1>
13 wakaba 1.21 <h2>Working Draft <time datetime=2007-12-08>8 December 2007</time></h2>
14 wakaba 1.1
15     <dl class="versions-uri">
16     <dt>This Version</dt>
17 wakaba 1.2 <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 wakaba 1.1 <dt>Latest Version</dt>
20 wakaba 1.2 <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 wakaba 1.1 <dt>Latest Working Draft</dt>
23 wakaba 1.2 <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 wakaba 1.1 <!-- <dt>Previous Version</dt> -->
26     <dt>Version History</dt>
27 wakaba 1.2 <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 wakaba 1.1 <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 wakaba 1.2 <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 wakaba 1.1
89 wakaba 1.3 <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 wakaba 1.1 </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 wakaba 1.3
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 wakaba 1.12
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 wakaba 1.18
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 wakaba 1.3 </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 wakaba 1.20 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 wakaba 1.3 <a href="#Node"><code>Node</code></a>,
151 wakaba 1.20 <a href="#Document"><code>Document</code></a>,
152 wakaba 1.12 <a href="#DocumentType"><code>DocumentType</code></a>,
153 wakaba 1.20 <a href="#Entity"><code>Entity</code></a>, and
154     <a href="#Notation"><code>Notation</code></a>.</p>
155 wakaba 1.3
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 wakaba 1.19 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 wakaba 1.3
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 wakaba 1.19 <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 wakaba 1.4 </div>
179    
180 wakaba 1.14 <div class=section id=section-node>
181     <h3>Modifications to the <code id=Node>Node</code> Interface</h3>
182    
183 wakaba 1.15 <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 wakaba 1.14 <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 wakaba 1.15 <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 wakaba 1.20 <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 wakaba 1.19 <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 wakaba 1.20 <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 wakaba 1.15 <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 wakaba 1.14 <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 wakaba 1.15 <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 wakaba 1.21 On getting, the attributes <em class=rfc2119>MUST</em> return
335     <code>null</code>.</p>
336 wakaba 1.15
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 wakaba 1.21 <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 wakaba 1.20 <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 wakaba 1.14 <dt class=ed>@@ ...</dt>
363     </dl>
364    
365     </div>
366    
367 wakaba 1.20 <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 wakaba 1.4 <div class=section id=section-documentxdoctype>
379 wakaba 1.7 <h3>The <code>DocumentXDoctype</code> Interface</h3>
380 wakaba 1.4
381 wakaba 1.15 <p>The <a href="#DocumentXDoctype"><code>DocumentXDoctype</code></a> interface
382     <em class=rfc2119>MUST</em> be implemented as following:</p>
383 wakaba 1.4 <pre class=idl><code>interface <dfn id=DocumentXDoctype><code>DocumentXDoctype</code></dfn> {
384 wakaba 1.5 DocumentType <a href="#createDocumentTypeDefinition">createDocumentTypeDefinition</a>
385     (in DOMString <a href="#createDocumentTypeDefinition-name"><var>name</var></a>)
386     raises (DOMException);
387 wakaba 1.12 <a href="#ElementTypeDefinition">ElementTypeDefinition</a> <a href="#createElementTypeDefinition">createElementTypeDefinition</a>
388 wakaba 1.5 (in DOMString <a href="#createElementTypeDefinition-name"><var>name</var></a>)
389     raises (DOMException);
390 wakaba 1.12 <a href="#AttributeDefinition">AttributeDefinition</a> <a href="#createAttributeDefinition">createAttributeDefinition</a>
391 wakaba 1.5 (in DOMString <a href="#createAttributeDefinition-name"><var>name</var></a>)
392     raises (DOMException);
393 wakaba 1.12 <a href="#Entity">Entity</a> <a href="#createGeneralEntity">createGeneralEntityDefinition</a>
394 wakaba 1.5 (in DOMString <a href="#createGeneralEntity-name"><var>name</var></a>)
395     raises (DOMException);
396 wakaba 1.12 <a href="#Notation">Notation</a> <a href="#createNotation">createNotation</a>
397 wakaba 1.5 (in DOMString <a href="#createNotation-name"><var>name</var></a>)
398     raises (DOMException);
399 wakaba 1.4 }</code></pre>
400    
401 wakaba 1.5 <div class=ed>@@ cast definition</div>
402 wakaba 1.4
403 wakaba 1.5 <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 wakaba 1.6
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 wakaba 1.5 </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 wakaba 1.6
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 wakaba 1.5 </dd>
514     <dt><dfn id=createGeneralEntity class=dom-method><code>createGeneralEntity</code></dfn>,
515     method</dt>
516     <dd>
517 wakaba 1.7 <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 wakaba 1.5 <p>The <dfn id=createGeneralEntity-name class=dom-param><var>name</var></dfn>
521     parameter is the name of the general entity.</p>
522 wakaba 1.7
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 wakaba 1.19 <dt><a href="#hasReplacementTree"><code>hasReplacementTree</code></a> and
538 wakaba 1.7 <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 wakaba 1.5 </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 wakaba 1.7
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 wakaba 1.5 </dd>
593     </dl>
594 wakaba 1.4
595 wakaba 1.7 <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 wakaba 1.4
609     </div>
610    
611 wakaba 1.16
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 wakaba 1.4 <div class=section id=section-documenttypedefinition>
703 wakaba 1.7 <h3>The <code>DocumentTypeDefinition</code> Interface</h3>
704 wakaba 1.4
705 wakaba 1.17 <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 wakaba 1.15 <p>The
713     <a href="#DocumentTypeDefinition"><code>DocumentTypeDefinition</code></a>
714     interface <em class=rfc2119>MUST</em> be implemented as following:</p>
715 wakaba 1.4 <pre class=idl><code>interface <dfn id=DocumentTypeDefinition><code>DocumentTypeDefinition</code></dfn> {
716 wakaba 1.8 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 wakaba 1.13 <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 wakaba 1.4 }</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 wakaba 1.8 </pre>
746 wakaba 1.4
747 wakaba 1.8 <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 wakaba 1.21 processor. If there are more than one element type declarations for an
771 wakaba 1.8 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 wakaba 1.4 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 wakaba 1.8 -->
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 wakaba 1.4 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 wakaba 1.8 -->
848 wakaba 1.20 <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 wakaba 1.4
905 wakaba 1.20 <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 wakaba 1.8 </dl>
927 wakaba 1.4
928 wakaba 1.8 <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 wakaba 1.4
933     </div>
934    
935     <div class=section id=section-elementtypedefinition>
936 wakaba 1.7 <h3>The <code>ElementTypeDefinition</code> Interface</h3>
937 wakaba 1.4
938 wakaba 1.17 <p>The nodes of type
939     <a href="#ELEMENT_TYPE_DEFINITION_NODE"><code>ELEMENT_TYPE_DEFINITION_NODE</code></a>
940 wakaba 1.21 represents an element type definition. Such a node
941     <em class=rfc2119>MUST</em> implement the
942 wakaba 1.17 <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 wakaba 1.21 <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 wakaba 1.15 <p>The <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>
966     interface <em class=rfc2119>MUST</em> be implemented as following:</p>
967 wakaba 1.10 <pre class=idl><code>interface <dfn id=ElementTypeDefinition><code>ElementTypeDefinition</code></dfn> : <a href="#Node">Node</a> {
968 wakaba 1.19 readonly attribute <a href="#DocumentType">DocumentType</a> <a href="#ownerDocumentTypeDefinition">ownerDocumentTypeDefinition</a>;
969 wakaba 1.10
970 wakaba 1.21 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 wakaba 1.4 }</code></pre>
977    
978 wakaba 1.19 <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 wakaba 1.21 <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 wakaba 1.19 </dl>
1057 wakaba 1.20
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 wakaba 1.4 </div>
1064    
1065     <div class=section id=section-attributedefinition>
1066 wakaba 1.7 <h3>The <code>AttributeDefinition</code> Interface</h3>
1067 wakaba 1.4
1068 wakaba 1.17 <p>The nodes of type
1069     <a href="#ATTRIBUTE_DEFINITION_NODE"><code>ATTRIBUTE_DEFINITION_NODE</code></a>
1070 wakaba 1.21 represents an attribute definition. Such a node
1071     <em class=rfc2119>MUST</em> implement the
1072 wakaba 1.17 <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 wakaba 1.21 <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 wakaba 1.15 <p>The <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>
1092     interface <em class=rfc2119>MUST</em> be implemented as following:</p>
1093 wakaba 1.10 <pre class=idl><code>interface <dfn id=AttributeDefinition><code>AttributeDefinition</code></dfn> : <a href="#Node">Node</a> {
1094 wakaba 1.9 <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 wakaba 1.17
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 wakaba 1.4
1115 wakaba 1.10 readonly attribute <a href="#ElementTypeDefinition">ElementTypeDefinition</a> <a href="#ownerElementTypeDefinition">ownerElementTypeDefinition</a>;
1116    
1117     readonly attribute unsigned short <a href="#declaredType">declaredType</a>;
1118 wakaba 1.21 readonly attribute DOMStringList <a href="#allowedTokens">allowedTokens</a>;
1119 wakaba 1.10 readonly attribute unsigned short <a href="#defaultType">defaultType</a>;
1120 wakaba 1.4 }</code></pre>
1121    
1122 wakaba 1.11 <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 wakaba 1.9 <p>The definition group
1166     <dfn id=DeclaredValueType><code>DeclaredValueType</code></dfn> contains
1167 wakaba 1.11 integers indicating the declared type of attributes. The definition
1168     group contains the following constants:</p>
1169 wakaba 1.9
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 wakaba 1.11 and/or <q>unknown</q> <span class=ed>[INFOSET]</span> and
1232 wakaba 1.9 <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 wakaba 1.11 definition group.</p>
1240 wakaba 1.4
1241 wakaba 1.11 </dd>
1242 wakaba 1.21 <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 wakaba 1.10 <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 wakaba 1.12 <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 wakaba 1.11 <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 wakaba 1.10 </dl>
1342 wakaba 1.4
1343 wakaba 1.3 </div>
1344    
1345 wakaba 1.19 <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 wakaba 1.20
1359     attribute boolean <a href="#isExternallyDeclared">isExternallyDeclared</a>;
1360 wakaba 1.19 </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 wakaba 1.20 <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 wakaba 1.19 </dl>
1443 wakaba 1.1 </div>
1444 wakaba 1.3
1445 wakaba 1.19 <div class=section id=section-notation>
1446     <h3>Modifications to the <code id=Notation>Notation</code> Interface</h3>
1447 wakaba 1.3
1448 wakaba 1.19 <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 wakaba 1.1
1454 wakaba 1.19 // 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 wakaba 1.1
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