/[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.20 - (hide annotations) (download) (as text)
Wed Dec 5 10:26:35 2007 UTC (16 years, 11 months ago) by wakaba
Branch: MAIN
Changes since 1.19: +152 -21 lines
File MIME type: text/html
Documentations in Node.pm, Document.pm, Entity.pm, Notation.pm, DocumentType.pm moved here and marked up

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.19 <h2>Working Draft <time datetime=2007-12-05>5 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     On getting, the attributes <em class=rfc2119>MUST</em> return the
335     name of the element type.</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>:</p>
349    
350     <pre class=ed>
351     The getter of the [CODE(DOMa)@en[[[nodeValue]]]] attribute
352     of an [CODE(DOMi)@en[[[AttributeDefinition]]]] object
353     [['''MUST''']] return the normalized default value
354     of the attribute.
355    
356     @@
357    
358     [4] The getter of the [CODE(DOMa)@en[[[textContent]]]]
359     attribute of an [CODE(DOMi)@en[[[AttributeDefinition]]]]
360     object [['''MUST''']] behave as if it were an
361     [CODE(DOMi)@en[[[Attr]]]] object.
362    
363     The setter of the [CODE(DOMa)@en[[[textContent]]]] attribute
364     of an [CODE(DOMi)@en[[[AttributeDefinition]]]] object
365     [['''MUST''']] behave as if the following algorithm
366     is performed:
367     = If the [CODE(DOMi)@en[[[AttributeDefinition]]]]
368     object is read-only, then throw an
369     [CODE(DOMc)@en[[[NO_MODIFICATION_ALLOWED_ERR]]]].
370     = Remove any child node the node has.
371     = If the new value is not empty and not [CODE(IDL)@en[[[null]]]],
372     then create a [CODE(DOMi)@en[[[Text]]]] node
373     whose [CODE(DOMa)@en[[[data]]]] is the new value
374     and append it to the [CODE(DOMi)@en[[[AttributeDefinition]]]].
375     </pre>
376     </dd>
377 wakaba 1.20 <dt><code id=normalize>normalize</code></dt>
378     <dd><p>When a <a href="#DocumentType"><code>DocumentType</code></a> is
379     normalized, any nodes in the <code>NamedNodeMap</code> object in the
380     <a href="#elementTypes"><code>elementTypes</code></a> attribute
381     <em class=rfc2119>MUST</em> be normalized as well.</p>
382    
383     <p>When an
384     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> node
385     is normalized, any nodes in the <code>NamedNodeMap</code> object in the
386     <a href="#attributeDefinitions"><code>attributeDefinitions</code></a>
387     attribute <em class=rfc2119>MUST</em> be normalized as well.</p></dd>
388 wakaba 1.14 <dt class=ed>@@ ...</dt>
389     </dl>
390    
391     </div>
392    
393 wakaba 1.20 <div class=section id=section-document>
394     <h3>Modifications to the <code id=Document>Document</code> Interface</h3>
395    
396     <p>If an attempt is made to adopt an
397     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> or
398     <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node,
399     the <code id=adoptNode>adoptNode</code> method <em class=rfc2119>MUST</em>
400     raise a <code>NOT_SUPPORTED_ERR</code> exception <span class=ed>@@
401     ref</span>.</p>
402     </div>
403    
404 wakaba 1.4 <div class=section id=section-documentxdoctype>
405 wakaba 1.7 <h3>The <code>DocumentXDoctype</code> Interface</h3>
406 wakaba 1.4
407 wakaba 1.15 <p>The <a href="#DocumentXDoctype"><code>DocumentXDoctype</code></a> interface
408     <em class=rfc2119>MUST</em> be implemented as following:</p>
409 wakaba 1.4 <pre class=idl><code>interface <dfn id=DocumentXDoctype><code>DocumentXDoctype</code></dfn> {
410 wakaba 1.5 DocumentType <a href="#createDocumentTypeDefinition">createDocumentTypeDefinition</a>
411     (in DOMString <a href="#createDocumentTypeDefinition-name"><var>name</var></a>)
412     raises (DOMException);
413 wakaba 1.12 <a href="#ElementTypeDefinition">ElementTypeDefinition</a> <a href="#createElementTypeDefinition">createElementTypeDefinition</a>
414 wakaba 1.5 (in DOMString <a href="#createElementTypeDefinition-name"><var>name</var></a>)
415     raises (DOMException);
416 wakaba 1.12 <a href="#AttributeDefinition">AttributeDefinition</a> <a href="#createAttributeDefinition">createAttributeDefinition</a>
417 wakaba 1.5 (in DOMString <a href="#createAttributeDefinition-name"><var>name</var></a>)
418     raises (DOMException);
419 wakaba 1.12 <a href="#Entity">Entity</a> <a href="#createGeneralEntity">createGeneralEntityDefinition</a>
420 wakaba 1.5 (in DOMString <a href="#createGeneralEntity-name"><var>name</var></a>)
421     raises (DOMException);
422 wakaba 1.12 <a href="#Notation">Notation</a> <a href="#createNotation">createNotation</a>
423 wakaba 1.5 (in DOMString <a href="#createNotation-name"><var>name</var></a>)
424     raises (DOMException);
425 wakaba 1.4 }</code></pre>
426    
427 wakaba 1.5 <div class=ed>@@ cast definition</div>
428 wakaba 1.4
429 wakaba 1.5 <dl>
430     <dt><dfn id=createDocumentTypeDefinition class=dom-method><code>createDocumentTypeDefinition</code></dfn>,
431     method</dt>
432     <dd>
433     <p>This method creates a <code>DocumentType</code> node with the specified
434     name, belonging to the document.</p>
435     <p>The <dfn id=createDocumentTypeDefinition-name class=dom-param><var>name</var></dfn>
436     parameter is the name of the document type.</p>
437    
438     <p>When invoked, the method <em class=rfc2119>MUST</em> create and
439     return a <code>DocumentType</code> node with the following attributes:</p>
440     <dl>
441     <dt><code>attributes</code>, <code>parentNode</code></dt>
442     <dd><code>null</code>.</dd>
443     <dt><code>elementTypes</code>, <code>generalEntities</code>, and
444     <code>notations</code></dt>
445     <dd>Empty <code>NamedNodeMap</code> objects.</dd>
446     <dt><code>entities</code></dt>
447     <dd>The same value as the <code>generalEntities</code> attribute.</dd>
448     <dt><code>childNodes</code></dt>
449     <dd>An empty <code>NodeList</code> object.</dd>
450     <dt><code>internalSubset</code>, <code>publicId</code>, and
451     <code>systemId</code></dt>
452     <dd>Empty strings.</dd>
453     <dt><code>manakaiReadOnly</code> <span class=ed>[manakai]</span></dt>
454     <dd><code>false</code>.</dd>
455     <dt><code>nodeName</code></dt>
456     <dd><a href="#createDocumentTypeDefinition-name"><var>name</var></a>.</dd>
457     <dt><code>ownerDocument</code></dt>
458     <dd>The <code>Document</code> over which the method is invoked.</dd>
459     </dl>
460     <p>In addition, the method <em class=rfc2119>MUST</em> be marked as
461     containing five general entity declarations: <code>amp</code>,
462     <code>lt</code>, <code>gt</code>, <code>quot</code>, and
463     <code>apos</code>.</p>
464     </dd>
465     <dt><dfn id=createElementTypeDefinition class=dom-method><code>createElementTypeDefinition</code></dfn>,
466     method</dt>
467     <dd>
468     <p>This method creates a <code>ElementTypeDefinition</code> node with the
469     specified name, belonging to the document.</p>
470     <p>The <dfn id=createElementTypeDefinition-name class=dom-param><var>name</var></dfn>
471     parameter is the name of the element type defined by the element
472     type definition.</p>
473 wakaba 1.6
474     <p>When invoked, the method <em class=rfc2119>MUST</em> create and
475     return an
476     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>
477     node with the following attributes:</p>
478     <dl>
479     <dt><a href="#attributeDefinitions"><code>attributeDefinitions</code></a></dt>
480     <dd>An empty <code>NamedNodeMap</code> object.</dd>
481     <dt><code>attributes</code>, <code>parentNode</code></dt>
482     <dd><code>null</code>.</dd>
483     <dt><code>childNodes</code></dt>
484     <dd>An empty <code>NodeList</code> object.</dd>
485     <dt><code>manakaiReadOnly</code> <span class=ed>[manakai]</span></dt>
486     <dd><code>false</code>.</dd>
487     <dt><code>nodeName</code></dt>
488     <dd><a href="#createElementTypeDefinition-name"><var>name</var></a>.</dd>
489     <dt><code>ownerDocument</code></dt>
490     <dd>The <code>Document</code> node over which the method is invoked.</dd>
491     <dt><a href="#ownerDocumentTypeDefinition"><code>ownerDocumentTypeDefinition</code></a></dt>
492     <dd><code>null</code>.</dd>
493     <dt class=ed>@@ Ensure all attributes are defined</dt>
494     </dl>
495 wakaba 1.5 </dd>
496     <dt><dfn id=createAttributeDefinition class=dom-method><code>createAttributeDefinition</code></dfn>,
497     method</dt>
498     <dd>
499     <p>This method creates a <code>AttributeDefinition</code> node with the
500     specified name, belonging to the document.</p>
501     <p>The <dfn id=createAttributeDefinition-name class=dom-param><var>name</var></dfn>
502     parameter is the name of the attribute defined by the attribute
503     definition.</p>
504 wakaba 1.6
505     <p>When invoked, the method <em class=rfc2119>MUST</em> create and
506     return an
507     <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>
508     node with the following attributes:</p>
509     <dl>
510     <dt><code>allowedTokens</code></dt>
511     <dd>An empty <code>DOMStringList</code> object.</dd>
512     <dt><code>attributes</code>,
513     <a href="#ownerElementTypeDefinition"><code>ownerElementTypeDefinition</code></a>,
514     and <code>parentNode</code></dt>
515     <dd><code>null</code>.</dd>
516     <dt><code>childNodes</code></dt>
517     <dd>An empty <code>NodeList</code> object.</dd>
518     <dt><code>declaredType</code></dt>
519     <dd><a href="#NO_TYPE_ATTR"><code>NO_TYPE_ATTR</code></a>.</dd>
520     <dt><code>defaultType</code></dt>
521     <dd><a href="#UNKNOWN_DEFAULT"><code>UNKNOWN_DEFAULT</code></a>.</dd>
522     <dt><code>manakaiReadOnly</code> <span class=ed>[manakai]</span></dt>
523     <dd><code>false</code>.</dd>
524     <dt><code>nodeName</code></dt>
525     <dd><a href="#createAttributeDefinition-name"><var>name</var></a>.</dd>
526     <dt><code>ownerDocument</code></dt>
527     <dd>The <code>Document</code> node over which the method is invoked.</dd>
528     <dt class=ed>@@ Ensure all attributes are defined</dt>
529     </dl>
530    
531     <div class=ed>
532     <p>@@ Should we keep these statements?:
533     However, if the &lt;cfg::cfg|xml-id> configuration
534     parameter is set to <code>true</code> and the <var>name</var>
535     is <code>xml:id</code>, then the [CODE(DOMa)@en[[[declaredType]]]]
536     attribute is set to <code>ID_ATTR</code>.
537     [CODE(DOMa)@en[[[defaultType]]]]?</p>
538     </div>
539 wakaba 1.5 </dd>
540     <dt><dfn id=createGeneralEntity class=dom-method><code>createGeneralEntity</code></dfn>,
541     method</dt>
542     <dd>
543 wakaba 1.7 <p>This method creates a <a href="#Entity"><code>Entity</code></a> node
544     with the specified name, which represents a general entity, belonging to
545     the document.</p>
546 wakaba 1.5 <p>The <dfn id=createGeneralEntity-name class=dom-param><var>name</var></dfn>
547     parameter is the name of the general entity.</p>
548 wakaba 1.7
549     <p>When invoked, the method <em class=rfc2119>MUST</em> create and return
550     an <a href="#Entity"><code>Entity</code></a> node with the following
551     attributes:</p>
552     <dl>
553     <dt><code>attributes</code>, <code>notationName</code>,
554     <a href="#ownerDocumentTypeDefinition"><code>ownerDocumentTypeDefinition</code></a>,
555     and <code>parentNode</code></dt>
556     <dd><code>null</code>.</dd>
557     <dt><code>childNodes</code></dt>
558     <dd>An empty <code>NodeList</code> object.</dd>
559     <dt><code>manakaiDeclarationBaseURI</code>,
560     <code>manakaiEntityBaseURI</code>, and
561     <code>manakaiEntityURI</code> <span class=ed>@@ ref</span></dt>
562     <dd>No explicit value is set.</dd>
563 wakaba 1.19 <dt><a href="#hasReplacementTree"><code>hasReplacementTree</code></a> and
564 wakaba 1.7 <code>manakaiReadOnly</code> <span class=ed>[manakai]</span></dt>
565     <dd><code>false</code>.</dd>
566     <dt><code>nodeName</code></dt>
567     <dd><a href="#createGeneralEntity-name"><var>name</var></a>.</dd>
568     <dd>
569     <div class="note memo">
570     <p>It is not an error for
571     <a href="#createGeneralEntity-name"><var>name</var></a> matching
572     to the name of one of predefined general parsed entities in
573     <abbr>XML</abbr> or <abbr>HTML</abbr>. For example,
574     <a href="#createGeneralEntity-name"><var>name</var></a> might be
575     <code>amp</code>, resulting in an
576     <a href="#Entity"><code>Entity</code></a> node
577     with its <code>nodeName</code> attribute set to <code>amp</code>.</p>
578     </div>
579     </dd>
580     <dt><code>ownerDocument</code></dt>
581     <dd>The <code>Document</code> node over which the method is invoked.</dd>
582     <dt><code>publicId</code>, and <code>systemId</code></dt>
583     <dd><code>null</code>.</dd>
584     <dd class=ed>@@ publicId and systemId should be empty string?</dd>
585     <dt class=ed>@@ Ensure all attributes are defined</dd>
586     </dl>
587 wakaba 1.5 </dd>
588     <dt><dfn id=createNotation class=dom-method><code>createNotation</code></dfn>,
589     method</dt>
590     <dd>
591     <p>This method creates a <code>Notation</code> node with the
592     specified name, belonging to the document.</p>
593     <p>The <dfn id=createNotation-name class=dom-param><var>name</var></dfn>
594     parameter is the name of the notation.</p>
595 wakaba 1.7
596     <p>When invoked, the method <em class=rfc2119>MUST</em> create and return
597     a <code>Notation</code> node with the following attributes:</p>
598     <dl>
599     <dt><code>attributes</code>,
600     <a href="#ownerDocumentTypeDefinition"><code>ownerDocumentTypeDefinition</code></a>,
601     and <code>parentNode</code></dt>
602     <dd><code>null</code>.</dd>
603     <dt><code>childNodes</code></dt>
604     <dd>An empty <code>NodeList</code> object.</dd>
605     <dt><code>manakaiDeclarationBaseURI</code></dt>
606     <dd>No explicit value is set.</dd>
607     <dt><code>manakaiReadOnly</code> <span class=ed>[manakai]</span></dt>
608     <dd><code>false</code>.</dd>
609     <dt><code>nodeName</code></dt>
610     <dd><a href="#createNotation-name"><var>name</var></a>.</dd>
611     <dt><code>ownerDocument</code></dt>
612     <dd>The <code>Document</code> node over which the method is invoked.</dd>
613     <dt><code>publicId</code> and <code>systemId</code></dt>
614     <dd><code>null</code>.</dd>
615     <dd class=ed>@@ publicId and systemId should be empty string?</dd>
616     <dt class=ed>@@ Ensure all attributes are defined</dt>
617     </dl>
618 wakaba 1.5 </dd>
619     </dl>
620 wakaba 1.4
621 wakaba 1.7 <p>These methods <em class=rfc2119>MUST</em> raise an
622     <code>INVALID_CHARACTER_ERR</code> exception <span class=ed>@@ ref</span>
623     if <var>name</var> is <em>not</em> a legal <code>Name</code> according to
624     the <abbr>XML</abbr> version in use, as specified in the
625     <code>xmlVersion</code> attribute of the <code>Document</code> node.</p>
626    
627     <div class="note memo">
628     <p>Non$B!>(B<abbr>XML</abbr> case is intentionally left unspecified for now,
629     since <abbr>DOM3</abbr> specification <span class=ed>@@ ref</span> does not
630     define it for <code>Document</code> methods.</p>
631    
632     <p><var>name</var> does not have to be a namespace qualified name.</p>
633     </div>
634 wakaba 1.4
635     </div>
636    
637 wakaba 1.16
638     <div class=section id=section-documenttype>
639     <h3>Modifications to the <code id=DocumentType>DocumentType</code>
640     Interface</h3>
641    
642     <p>A <a href="#DocumentType"><code>DocumentType</code></a> interface
643     <em class=rfc2119>MAY</em> contain zero or more
644     <a href="#ProcessingInstruction"><code>ProcessingInstruction</code></a>
645     nodes in the <code>NodeList</code> object contained in the
646     <code>childNodes</code> attribute of the
647     <a href="#DocumentType"><code>DocumentType</code></a> node.</p>
648    
649     <p>If the <a href="#DocumentType"><code>DocumentType</code></a> node is created
650     during the process to create a <abbr>DOM</abbr> from an <abbr>XML</abbr>
651     document, the <code>NodeList</code> object in the <code>childNodes</code>
652     object <em class=rfc2119>MUST</em> contains the
653     <a href="#ProcessingInstruction"><code>ProcessingInstruction</code></a>
654     nodes representing the processing instructions in the document type
655     definition of the document processed <span class=ed>@@ ref</span> by
656     the <abbr>XML</abbr> processor. If the
657     <a href="#DocumentType"><code>DocumentType</code></a> node is marked
658     as read$B!>(Bonly, then all the child nodes <em class=rfc2119>MUST</em>
659     also be marked as read$B!>(Bonly.</p>
660    
661     <p>If a <a href="#DocumentType"><code>DocumentType</code></a> node is created
662     from a document type declaration information item <span class=ed>@@ ref</span>,
663     the <code>NodeList</code> object in the <code>childNodes</code> attribute
664     of the node <em class=rfc2119>MUST</em> contain the
665     <a href="#ProcessingInstruction"><code>ProcessingInstruction</code></a> nodes
666     created from the processing instruction information items in the list in the
667     [children] property of the document type declaration item in the same
668     order.</p>
669    
670     <p>If a <a href="#DocumentType"><code>DocumentType</code></a> node is mapped to
671     a document type declaration information item, the list in the [children]
672     property <em class=rfc2119>MUST</em> contain the processng instruction
673     information items created from the
674     <a href="#ProcessingInstruction"><code>ProcessingInstruction</code></a> nodes
675     in the <code>NodeList</code> object in the <code>childNodes</code> attribute
676     of the <a href="#DocumentType"><code>DocumentType</code></a> node.</p>
677    
678     <p>The implementation of the
679     <a href="#DocumentType"><code>DocumentType</code></a> interface
680     <em class=rfc2119>MUST</em> be modified as following:</p>
681     <pre class=idl><code>// Modifications to the DocumentType interface
682     attribute DOMString <a href="#publicId">publicId</a>;
683     attribute DOMString <a href="#systemId">systemId</a>;
684    
685     attribute DOMString <a href="#internalSubset">internalSubset</a>;
686     </code></pre>
687    
688     <p>The <code id=publicId>publicId</code> attribute and the
689     <code id=systemId>systemId</code> attribute of
690     <a href="#DocumentType"><code>DocumentType</code></a>,
691     <a href="#Entity"><code>Entity</code></a>, and
692     <a href="#Notation"><code>Notation</code></a> interfaces are no longer
693     read$B!>(Bonly.</p>
694    
695     <p>On setting, the attribute <em class=rfc2119>MUST</em> raise a
696     <code>NO_MODIFICATION_ALLOWED_ERR</code> <span class=ed>@@ ref</span>
697     exception if the node is read$B!>(Bonly <span class=ed>@@ ref</span>.
698     Otherwise, it <em class=rfc2119>MUST</em> set the specified value as the value
699     associated to the attribute. No normalization, relative reference resolution,
700     or lexical validation is performed. <span class=ed>@@ If the new
701     value is <code>null</code>, ...</span></p>
702    
703     <div class="note memo">
704     <p>Setting an invalid identifier might make the node unserializable.
705     Setting a public identifier while leaveing system identifier unspecified
706     would also make the <a href="#DocumentType"><code>DocumentType</code></a>
707     or <a href="#Entity"><code>Entity</code></a> node unserializable.</p>
708     </div>
709    
710     <div class=ed>
711     <p>ISSUE: In HTML5, Firefox 1.5, and Opera 9, not specifying public or system identifier results in empty strings.</p>
712     </div>
713    
714     <p>The <code id=internalSubset>internalSubset</code> attribute of the
715     <a href="#DocumentType"><code>DocumentType</code></a> interface is no longer
716     read$B!>(Bonly.</p>
717    
718     <p>On setting, the attribute <em class=rfc2119>MUST</em> raise a
719     <code>NO_MODIFICATION_ALLOWED_ERR</code> <span class=ed>@@ ref</span>
720     exception if the node is read$B!>(Bonly <span class=ed>@@ ref</span>.
721     Otherwise, it <em class=rfc2119>MUST</em> set the specified value as the value
722     associated to the attribute. No normalization, or lexical validation is
723     performed. <span class=ed>@@ If the new value is <code>null</code>,
724     ...</span></p>
725    
726     </div>
727    
728 wakaba 1.4 <div class=section id=section-documenttypedefinition>
729 wakaba 1.7 <h3>The <code>DocumentTypeDefinition</code> Interface</h3>
730 wakaba 1.4
731 wakaba 1.17 <div class="note memo">
732     <p>This interface is a separated interface from the
733     <a href="#DocumentType"><code>DocumentType</code></a>, not a set of extensions
734     to the <a href="#DocumentType"><code>DocumentType</code></a>,
735     for the historical reason.</p>
736     </div>
737    
738 wakaba 1.15 <p>The
739     <a href="#DocumentTypeDefinition"><code>DocumentTypeDefinition</code></a>
740     interface <em class=rfc2119>MUST</em> be implemented as following:</p>
741 wakaba 1.4 <pre class=idl><code>interface <dfn id=DocumentTypeDefinition><code>DocumentTypeDefinition</code></dfn> {
742 wakaba 1.8 readonly attribute NamedNodeMap <a href="#elementTypes">elementTypes</a>;
743     readonly attribute NamedNodeMap <a href="#generalEntities">generalEntities</a>;
744     readonly attribute NamedNodeMap <a href="#notations">notations</a>;
745    
746 wakaba 1.13 <a href="#ElementTypeDefinition">ElementTypeDefinition</a> <a href="#getElementTypeDefinitionNode">getElementTypeDefinitionNode</a>
747     (in DOMString <a href="#getElementTypeDefinitionNode-name"><var>name</var></a>);
748     <a href="#Entity">Entity</a> <a href="#getGeneralEntityNode">getGeneralEntityNode</a>
749     (in DOMString <a href="#getGeneralEntityNode-name"><var>name</var></a>);
750     <a href="#Notation">Notation</a> <a href="#getNotationNode">getNotationNode</a>
751     (in DOMString <a href="#getNotationNode-name"><var>name</var></a>);
752    
753     void <a href="#setElementTypeDefinitionNode">setElementTypeDefinitionNode</a>
754     (in DOMString <a href="#setElementTypeDefinitionNode-node"><var>node</var></a>)
755     raises (DOMException);
756     void <a href="#setGeneralEntityNode">setGeneralEntityNode</a>
757     (in DOMString <a href="#setGeneralEntityNode-node"><var>node</var></a>)
758     raises (DOMException);
759     void <a href="#setNotationNode">setNotationNode</a>
760     (in DOMString <a href="#setNotationNode-node"><var>node</var></a>)
761     raises (DOMException);
762 wakaba 1.4 }</code></pre>
763    
764     <pre class=ed>
765     [1] In an implementation that supports the
766     [CODE(URI)@en[[[http://suika.fam.cx/www/2006/feature/XDoctype]]]]
767     feature, a [CODE(DOMi)@en[[[DocumentType]]]] node
768     must implement the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]]
769     interface. See [[DOM XML Document Type Definition]>>3] for
770     details.
771 wakaba 1.8 </pre>
772 wakaba 1.4
773 wakaba 1.8 <dl>
774     <dt><dfn id=elementTypes class=dom-attr><code>elementTypes</code></dfn> of
775     type <code>NamedNodeMap</code>, read$B!>(Bonly</dt>
776     <dd><p>A live <code>NamedNodeMap</code> object that contains all the element
777     type definitions belonging to the <code>DocumentType</code> node.</p>
778    
779     <p>On getting, the attribute <em class=rfc2119>MUST</em> return the
780     <code>NamedNodeMap</code> object that contains all the
781     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>
782     nodes belonging to the <code>DocumentType</code> node. The
783     <code>NamedNodeMap</code> object <em class=rfc2119>MUST</em> be read$B!>(Bonly
784     if and only if the node is read$B!>(Bonly. The <code>NamedNodeMap</code>
785     object <em class=rfc2119>MUST</em> be live and the same object
786     <em class=rfc2119>MUST</em> be returned for any invocation.</p>
787    
788     <p>If the <code>DocumentType</code> node is created during the process
789     to create a <abbr>DOM</abbr> from an <abbr>XML</abbr> document, the following
790     requirements are applied: The <code>NamedNodeMap</code> object in the
791     <a href="#elementTypes"><code>elementType</code></a> attribute
792     <em class=rfc2119>MUST</em> be so transformed that the object contains
793     the <code>ElementTypeDefinition</code> nodes for the element types
794     whose name is presented as the <code>Name</code> of the element type or
795     attribute definition list declarations processed by the <abbr>XML</abbr>
796     processor. If there is more than one element type declarations for an
797     element type, then the declarations other than the first one
798     <em class=rfc2119>MUST</em> be ignored for the purpose of constructing the
799     <code>NamedNodeMap</code> object.</p></dd>
800     <dt><dfn id=generalEntities class=dom-attr><code>generalEntities</code></dfn>
801     of type <code>NamedNodeMap</code>, read$B!>(Bonly</dt>
802     <dd><p>A live <code>NamedNodeMap</code> object that contains all the general
803     entities belonging to the <code>DocumentType</code> node.</p>
804    
805     <p>On getting, the attribute <em class=rfc2119>MUST</em> return the
806     same value as the <code>entities</code> attribute (defined in the
807     <code>DocumentType</code> interface) of the same node.</p>
808    
809     <div class="note memo">
810     <p>This attribute is part of the interface for historical reason.</p>
811     </div></dd>
812     <!--
813 wakaba 1.4 All entities declared in the document type definition
814     contained in or referenced from the document entity
815     might not be exposed through this collection, depending
816     on the information provided by the XML processor for
817     the DOM implementation. In particular, it might not
818     contain any entity if entity references are expanded
819     at the parse time. An implementation [['''MUST NOT''']]
820     expose an [CODE(DOMi)@en[[[Entity]]]] node whose [CODE(DOMa)@en[[[nodeName]]]]
821     is equal to the name of one of five predefined general entities in
822     XML through the collection as the result of parsing of an XML
823     document that has no error. Duplicate entity declarations are also discarded.
824    
825     The attribute [['''MUST''']] return the [CODE(DOMi)@en[[[NamedNodeMap]]]]
826     object that contains all the [CODE(DOMi)@en[[[Entity]]]] nodes
827     representing general entities belong to the node. The returned
828     [CODE(DOMi)@en[[[NamedNodeMap]]]] object [['''MUST''']] be read-only if and only if
829     the node is read-only. Note that the [CODE(DOMi)@en[[[NamedNodeMap]]]] object is live
830     and therefore any change of read-only flag on the node is immediately
831     reflected by that of the object.
832 wakaba 1.8 -->
833     <dt><dfn id=notations class=dom-attr><code>notations</code></dfn> of type
834     <code>notations</code>, read$B!>(Bonly</code>
835     <dd><p>A live <code>NamedNodeMap</code> object that contains all the
836     notations belonging to the <code>DocumentType</code> node.</p>
837    
838     <p>On getting, the attribute <em class=rfc2119>MUST</em> return the
839     same value as the <code>notations</code> attribute (defined in the
840     <code>DocumentType</code> interface) of the same node.</p>
841    
842     <div class="note memo">
843     <p>This attribute is part of the interface for historical reason.</p>
844     <p>Implementations are not required to implement the
845     <code>notations</code> attribute twice (for <code>DocumentType</code>
846     and <code>DocumentTypeDefinition</code> interfaces); they share exactly
847     same definition.</p>
848     </div></dd>
849     <!--
850 wakaba 1.4 If the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]] node is
851     created from an XML document, duplicate notation declarations, if any, in DTD
852     [['''MUST NOT''']] result in a node in the [CODE(DOMi)@en[[[NamedNodeMap]]]]
853     object and only the first declaration [['''MUST''']] be
854     made available as a [CODE(DOMi)@en[[[Notation]]]] node.
855    
856     ;; This definition is based on one for the
857     [CODE(DOMa)@en[[[notations]]]] attribute of the
858     [CODE(DOMi)@en[[[DocumentType]]]] interface in DOM XML module.
859     Since duplication is violation to the Validity Constraint,
860     XML parsers might vary on how notations are notified to
861     the application. In particular, [CODE(InfoProp)@en[[[notations]]]]
862     property of the document information item in XML Information Set
863     is so defined that in case ''any'' notation is declared for
864     multiple times then the property has no value.
865    
866     The attribute [['''MUST''']] return the [CODE(DOMi)@en[[[NamedNodeMap]]]]
867     object that contains all the [CODE(DOMi)@en[[[Notation]]]] nodes
868     representing notations belong to the node. The returned
869     [CODE(DOMi)@en[[[NamedNodeMap]]]] object [['''MUST''']] be read-only if and only if
870     the node is read-only. Note that the [CODE(DOMi)@en[[[NamedNodeMap]]]] object is live
871     and therefore any change of read-only flag on the node is immediately
872     reflected by that of the object.
873 wakaba 1.8 -->
874 wakaba 1.20 <dt><dfn id=getElementTypeDefinitionNode class=dom-method><code>getElementTypeDefinitionNode</code></dfn>,
875     method</dt>
876     <dd><p>Returns the
877     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> node
878     with the specified name.</p>
879    
880     <p>The
881     <dfn id=getElementTypeDefinitionNode-name class=dom-param><var>name</var></dfn>
882     parameter is the name of the element type.</p>
883    
884     <p>When invoked, the method <em class=rfc2119>MUST</em> return the
885     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> node,
886     whose <a href="#nodeName"><code>nodeName</code></a> is equal to
887     <a href="#getElementTypeDefinitionNode-name"><var>name</var></a>, in the
888     <code>NamedNodeMap</code> object in the
889     <a href="#elementTypes"><code>elementTypes</code></a> attribute of the
890     node. If there is no such node, it <em class=rfc2119>MUST</em> return
891     <code>null</code>.</p></dd>
892     <dt><dfn id=getElementTypeDefinitionNode class=dom-method><code>getElementTypeDefinitionNode</code></dfn>,
893     method</dt>
894     <dd><p>Returns the
895     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> node
896     with the specified name.</p>
897    
898     <p>The
899     <dfn id=getElementTypeDefinitionNode-name class=dom-param><var>name</var></dfn>
900     parameter is the name of the element type.</p>
901    
902     <p>When invoked, the method <em class=rfc2119>MUST</em> return the
903     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> node,
904     whose <a href="#nodeName"><code>nodeName</code></a> is equal to
905     <a href="#getElementTypeDefinitionNode-name"><var>name</var></a>, in the
906     <code>NamedNodeMap</code> object in the
907     <a href="#elementTypes"><code>elementTypes</code></a> attribute of the
908     node. If there is no such node, it <em class=rfc2119>MUST</em> return
909     <code>null</code>.</p></dd>
910     <dt><dfn id=getGeneralEntityNode class=dom-method><code>getGeneralEntityNode</code></dfn>,
911     method</dt>
912     <dd><p>Returns the <a href="#Entity"><code>Entity</code></a> node
913     with the specified name.</p>
914    
915     <p>The <dfn id=getEntityNode-name class=dom-param><var>name</var></dfn>
916     parameter is the name of the general entity.</p>
917    
918     <p>When invoked, the method <em class=rfc2119>MUST</em> return the
919     <a href="#Entity"><code>Entity</code></a> node,
920     whose <a href="#nodeName"><code>nodeName</code></a> is equal to
921     <a href="#getEntityNode-name"><var>name</var></a>, in the
922     <code>NamedNodeMap</code> object in the
923     <a href="#entities"><code>entities</code></a> attribute of the
924     node. If there is no such node, it <em class=rfc2119>MUST</em> return
925     <code>null</code>.</p></dd>
926     <dt><dfn id=getNotationNode class=dom-method><code>getNotationNode</code></dfn>,
927     method</dt>
928     <dd><p>Returns the <a href="#Notation"><code>Notation>/code></a> node
929     with the specified name.</p>
930 wakaba 1.4
931 wakaba 1.20 <p>The
932     <dfn id=getNotationNode-name class=dom-param><var>name</var></dfn>
933     parameter is the name of the notation.</p>
934    
935     <p>When invoked, the method <em class=rfc2119>MUST</em> return the
936     <a href="#Notation"><code>Notation</code></a> node,
937     whose <a href="#nodeName"><code>nodeName</code></a> is equal to
938     <a href="#getNotationNode-name"><var>name</var></a>, in the
939     <code>NamedNodeMap</code> object in the
940     <a href="#notations"><code>notations</code></a> attribute of the
941     node. If there is no such node, it <em class=rfc2119>MUST</em> return
942     <code>null</code>.</p></dd>
943     <dt><dfn id=setElementTypeDefinitionNode class=dom-method><code>setElementTypeDefinitionNode</code></dfn>,
944     method</dt>
945     <dd class=ed>@@</dd>
946     <dt><dfn id=setGeneralEntityNode class=dom-method><code>setGeneralEntityNode</code></dfn>,
947     method</dt>
948     <dd class=ed>@@</dd>
949     <dt><dfn id=setNotationNode class=dom-method><code>setNotationNode</code></dfn>,
950     method</dt>
951     <dd class=ed>@@</dd>
952 wakaba 1.8 </dl>
953 wakaba 1.4
954 wakaba 1.8 <div class=ed>
955     <p>A future version of this interface might define the
956     <code>parameterEntities</code> and getter/setter for parameter entities.
957     </div>
958 wakaba 1.4
959     </div>
960    
961     <div class=section id=section-elementtypedefinition>
962 wakaba 1.7 <h3>The <code>ElementTypeDefinition</code> Interface</h3>
963 wakaba 1.4
964 wakaba 1.17 <p>The nodes of type
965     <a href="#ELEMENT_TYPE_DEFINITION_NODE"><code>ELEMENT_TYPE_DEFINITION_NODE</code></a>
966     represents an element type definition. Such a node implements the
967     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>
968     interface, which extends the <a href="#Node"><code>Node</code></a>
969     interface.</p>
970    
971     <p>An element type definition represents a definition of the element type.
972     It is corresponding to the element type declaration in <abbr>DTD</abbr>.
973     However, an
974     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> node
975     does not represent the element type definition in <abbr>DTD</abbr> itself.
976     Even if there are more than one element type declarations for an element type
977     in <abbr>DTD</abbr>, the result <abbr>DOM</abbr> will contain only an
978     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>
979     node for that element type. In addition, if there are attribute definition
980     declarations for an element type, even when there is no element type
981     declaration for that element type, the <abbr>DOM</abbr> will contain an
982     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>
983     node for that element type.</p>
984    
985 wakaba 1.15 <p>The <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>
986     interface <em class=rfc2119>MUST</em> be implemented as following:</p>
987 wakaba 1.10 <pre class=idl><code>interface <dfn id=ElementTypeDefinition><code>ElementTypeDefinition</code></dfn> : <a href="#Node">Node</a> {
988 wakaba 1.19 readonly attribute <a href="#DocumentType">DocumentType</a> <a href="#ownerDocumentTypeDefinition">ownerDocumentTypeDefinition</a>;
989 wakaba 1.10
990     <span class=ed>@@ more</span>
991 wakaba 1.4 }</code></pre>
992    
993 wakaba 1.19 <dl>
994     <dt><dfn id=ownerDocumentTypeDefinition class=dom-attr><code>ownerDocumentTypeDefinition</code></dfn>
995     of type <a href="#DocumentType"><code>DocumentType</code></a>, read$B!>(Bonly</dt>
996     <dd><p>The
997     <a href="#ownerDocumentTypeDefinition"><code>ownerDocumentTypeDefinition</code></a>
998     attribute of
999     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>,
1000     <a href="#Entity"><code>Entity</code></a>, and
1001     <a href="#Notation"><code>Notation</code></a> interface contains the
1002     <a href="#DocumentType"><code>DocumentType</code></a> node to which the node
1003     is attached.</p>
1004    
1005     <p>On getting, the attribute <em class=rfc2119>MUST</em> return a
1006     <a href="#DocumentType"><code>DocumentType</code></a> node. It
1007     <em class=rfc2119>MUST</em> be such a node that whose
1008     <a href="#elementTypes"><code>elementTypes</code></a> (for an
1009     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>
1010     node), <a href="#entities"><code>entities</code></a> (for an
1011     <a href="#Entity"><code>Entity</code></a> node), or
1012     <a href="#notations"><code>notations</code></a> (for a
1013     <a href="#Notation"><code>Notation</code></a> node) attribute contains the
1014     <code>NamedNodeMap</code> object that contains the node. If there is no such
1015     a <a href="#DocumentType"><code>DocumentType</code></a> node,
1016     then <code>null</code> <em class=rfc2119>MUST</em> be returned.</p></dd>
1017     </dl>
1018 wakaba 1.20
1019     <div class=ed>
1020     <p>A future version of the specification might define a set of attributes
1021     and methods for representing and accessing to the content model of the
1022     element type.</p>
1023     </div>
1024 wakaba 1.4 </div>
1025    
1026     <div class=section id=section-attributedefinition>
1027 wakaba 1.7 <h3>The <code>AttributeDefinition</code> Interface</h3>
1028 wakaba 1.4
1029 wakaba 1.17 <p>The nodes of type
1030     <a href="#ATTRIBUTE_DEFINITION_NODE"><code>ATTRIBUTE_DEFINITION_NODE</code></a>
1031     represents an attribute definition. Such a node implements the
1032     <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> interface,
1033     which extends the <a href="#Node"><code>Node</code></a> interface.</p>
1034    
1035     <p>An attribute definition represents a definition of the attribute
1036     associated to an element type. It is corresponding to the attribute definition
1037     in the attribute list declaration in <abbr>DTD</abbr>. However, an
1038     <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node does
1039     not represent the attribute definition in <abbr>DTD</abbr> itself. Even if
1040     there are more than one attribute definitions for an attribute of an element
1041     type in <abbr>DTD</abbr>, the result <abbr>DOM</abbr> will contain only an
1042     <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node for
1043     that attribute.</p>
1044    
1045 wakaba 1.15 <p>The <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>
1046     interface <em class=rfc2119>MUST</em> be implemented as following:</p>
1047 wakaba 1.10 <pre class=idl><code>interface <dfn id=AttributeDefinition><code>AttributeDefinition</code></dfn> : <a href="#Node">Node</a> {
1048 wakaba 1.9 <span class=comment>// <a href="#DeclaredValueType">DeclaredValueType</a></span>
1049     const unsigned short <a href="#NO_TYPE_ATTR">NO_TYPE_ATTR</a> = 0;
1050     const unsigned short <a href="#CDATA_ATTR">CDATA_ATTR</a> = 1;
1051     const unsigned short <a href="#ID_ATTR">ID_ATTR</a> = 2;
1052     const unsigned short <a href="#IDREF_ATTR">IDREF_ATTR</a> = 3;
1053     const unsigned short <a href="#IDREFS_ATTR">IDREFS_ATTR</a> = 4;
1054     const unsigned short <a href="#ENTITY_ATTR">ENTITY_ATTR</a> = 5;
1055     const unsigned short <a href="#ENTITIES_ATTR">ENTITIES_ATTR</a> = 6;
1056     const unsigned short <a href="#NMTOKEN_ATTR">NMTOKEN_ATTR</a> = 7;
1057     const unsigned short <a href="#NMTOKENS_ATTR">NMTOKENS_ATTR</a> = 8;
1058     const unsigned short <a href="#NOTATION_ATTR">NOTATION_ATTR</a> = 9;
1059     const unsigned short <a href="#ENUMERATION_ATTR">ENUMERATION_ATTR</a> = 10;
1060     const unsigned short <a href="#UNKNOWN_ATTR">UNKNOWN_ATTR</a> = 11;
1061 wakaba 1.17
1062     <span class=comment>// <a href="#DefaultValueType">DefaultValueType</a></span>
1063     const unsigned short <a href="#UNKNOWN_DEFAULT">UNKNOWN_DEFAULT</a> = 0;
1064     const unsigned short <a href="#FIXED_DEFAULT">FIXED_DEFAULT</a> = 1;
1065     const unsigned short <a href="#REQUIRED_DEFAULT">REQUIRED_DEFAULT</a> = 2;
1066     const unsigned short <a href="#IMPLIED_DEFAULT">IMPLIED_DEFAULT</a> = 3;
1067     const unsigned short <a href="#EXPLICIT_DEFAULT">EXPLICIT_DEFAULT</a> = 4;
1068 wakaba 1.4
1069 wakaba 1.10 readonly attribute <a href="#ElementTypeDefinition">ElementTypeDefinition</a> <a href="#ownerElementTypeDefinition">ownerElementTypeDefinition</a>;
1070    
1071     readonly attribute unsigned short <a href="#declaredType">declaredType</a>;
1072     readonly attribute unsigned short <a href="#defaultType">defaultType</a>;
1073    
1074 wakaba 1.9 <span class=ed>...</span>
1075 wakaba 1.4 }</code></pre>
1076    
1077 wakaba 1.11 <dl>
1078     <dt><dfn id=ownerElementTypeDefinition class=dom-attr><code>ownerElementTypeDefinition</code></dfn>
1079     of type
1080     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>,
1081     read$B!>(Bonly</dt>
1082     <dd><p>The
1083     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> to
1084     which the <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>
1085     node belongs.</p>
1086    
1087     <p>On getting, the attribute <em class=rfc2119>MUST</em> return an
1088     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> node.
1089     It <em class=rfc2119>MUST</em> be such a node that whose
1090     <a href="#attributeDefinitons"><code>attributeDefinitions</code></a>
1091     attribute contains the <code>NamedNodeMap</code> object that contains
1092     the <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>
1093     node. If there is no such an
1094     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> node,
1095     then <code>null</code> <em class=rfc2119>MUST</em> be returned.</p>
1096     <dt><dfn id=declaredType class=dom-attr><code>declaredType</code></dfn> of type
1097     <code>unsigned short</code></dt>
1098     <dd><p>The declared type <span class=ed>@@ ref</span> of the attribute.
1099     It is expected that this attribute contains a value from the definition group
1100     <a href="#DeclaredValueType"><code>DeclaredValueType</code></a>.</p>
1101    
1102     <p>On getting, the attribute <em class=rfc2119>MUST</em> return the
1103     value associated to this attribute.</p>
1104    
1105     <p>On setting, the attribute <em class=rfc2119>MUST</em> raise a
1106     <code>NO_MODIFICATION_ALLOWED_ERR</code> <span class=ed>@@ ref</span>
1107     exception if the
1108     <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node
1109     is read$B!>(Bonly <span class=ed>@@ ref</span>. Otherwise, it
1110     <em class=rfc2119>MUST</em> set the specified value as the value
1111     associated to this attribute.</p>
1112    
1113     <p>If the <code>AttributeDefinition</code> node is created during the process
1114     to create a <abbr>DOM</abbr> from an <abbr>XML</abbr> document, an
1115     appropriate value from the
1116     <a href="#DeclaredValueType"><code>DeclaredValueType</code></a> constant
1117     group <em class=rfc2119>MUST</em> be set to the attribute.</p>
1118    
1119     <!-- DeclaredValueType -->
1120 wakaba 1.9 <p>The definition group
1121     <dfn id=DeclaredValueType><code>DeclaredValueType</code></dfn> contains
1122 wakaba 1.11 integers indicating the declared type of attributes. The definition
1123     group contains the following constants:</p>
1124 wakaba 1.9
1125     <table>
1126     <thead>
1127     <tr><th scope=col>Name<th scope=col>Value<th scope=col>Description</tr>
1128     </thead>
1129     <tbody>
1130     <tr>
1131     <th scope=row><dfn id=NO_TYPE_ATTR class=dom-const><code>NO_TYPE_ATTR</code>
1132     <td><code>0</code><td>No value <span class=ed>[INFOSET]</span>.</tr>
1133     <tr>
1134     <th scope=row><dfn id=CDATA_ATTR class=dom-const><code>CDATA_ATTR</code>
1135     <td><code>1</code><td><code>CDATA</code> <span class=ed>[XML]</span>.</tr>
1136     <tr>
1137     <th scope=row><dfn id=ID_ATTR class=dom-const><code>ID_ATTR</code>
1138     <td><code>2</code><td><code>ID</code> <span class=ed>[XML]</span>.</tr>
1139     <tr>
1140     <th scope=row><dfn id=IDREF_ATTR class=dom-const><code>IDREF_ATTR</code>
1141     <td><code>3</code><td><code>IDREF</code> <span class=ed>[XML]</span>.</tr>
1142     <tr>
1143     <th scope=row><dfn id=IDREFS_ATTR class=dom-const><code>IDREFS_ATTR</code>
1144     <td><code>4</code><td><code>IDREFS</code> <span class=ed>[XML]</span>.</tr>
1145     <tr>
1146     <th scope=row><dfn id=ENTITY_ATTR class=dom-const><code>ENTITY_ATTR</code>
1147     <td><code>5</code><td><code>ENTITY</code> <span class=ed>[XML]</span>.</tr>
1148     <tr>
1149     <th scope=row><dfn id=ENTITIES_ATTR class=dom-const><code>ENTITIES_ATTR</code>
1150     <td><code>6</code><td><code>ENTITIES</code> <span class=ed>[XML]</span>.</tr>
1151     <tr>
1152     <th scope=row><dfn id=NMTOKEN_ATTR class=dom-const><code>NMTOKEN_ATTR</code>
1153     <td><code>7</code><td><code>NMTOKEN</code> <span class=ed>[XML]</span>.</tr>
1154     <tr>
1155     <th scope=row><dfn id=NMTOKENS_ATTR class=dom-const><code>NMTOKENS_ATTR</code>
1156     <td><code>8</code><td><code>NMTOKENS</code> <span class=ed>[XML]</span>.</tr>
1157     <tr>
1158     <th scope=row><dfn id=NOTATION_ATTR class=dom-const><code>NOTATION_ATTR</code>
1159     <td><code>9</code><td><code>NOTATION</code> <span class=ed>[XML]</span>.</tr>
1160     <tr>
1161     <th scope=row><dfn id=ENUMERATION_ATTR class=dom-const><code>ENUMERATION_ATTR</code>
1162     <td><code>10</code><td>Enumeration <span class=ed>[XML]</span>.</tr>
1163     <tr>
1164     <th scope=row><dfn id=UNKNOWN_ATTR class=dom-const><code>UNKNOWN_ATTR</code>
1165     <td><code>11</code><td>Unknown, because no declaration for the attribute
1166     has been read but the [all declaration processed] property
1167     <span class=ed>[INFOSET]</span> would be false.</tr>
1168     </tbody>
1169     </table>
1170    
1171     <p>If no attribute type information is available, or if the source
1172     of the information does not distinguish <q>no value</q> and <q>unknown</q>
1173     <span class=ed>[INFOSET]</span>, then the value
1174     <a href="#NO_TYPE_ATTR"><code>NO_TYPE_ATTR</code></a>
1175     <em class=rfc2119>MUST</em> be used.</p>
1176    
1177     <div class="note memo">
1178     <p>An <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node
1179     created by the
1180     <a href="#createAttributeDefinition"><code>createAttributeDefinition</code></a>
1181     method has its <a href="#declaredType"><code>declaredType</code></a> attribute
1182     set to <a href="#NO_TYPE_ATTR"><code>NO_TYPE_ATTR</code></a>.</p>
1183     </div>
1184    
1185     <p>If the source of the information does not distinguish <q>no value</q>
1186 wakaba 1.11 and/or <q>unknown</q> <span class=ed>[INFOSET]</span> and
1187 wakaba 1.9 <code>CDATA</code> <span class=ed>[XML]</span>, then the value
1188     <a href="#CDATA_ATTR"><code>CDATA_ATTR</code></a> <em class=rfc2119>MUST</em>
1189     be used.</p>
1190    
1191     <p>In Perl binding <span class=ed>[PERLBINDING]</span>, the
1192     <code>Attr</code> nodes <em class=rfc2119>MUST</em> implement the
1193     <a href="#DeclaredValueType"><code>DeclaredValueType</code></a>
1194 wakaba 1.11 definition group.</p>
1195 wakaba 1.4
1196 wakaba 1.11 </dd>
1197 wakaba 1.10 <dt><dfn id=defaultType class=dom-attr><code>defaultType</code></dfn> of
1198     type <code>unsigned short</code></dt>
1199     <dd><p>The type of the default for the attribute. It is expected that this
1200     attribute contains a value from the definition group
1201     <a href="#DefaultValueType"><code>DefaultValueType</code></a>.</p>
1202    
1203     <p>On getting, the attribute <em class=rfc2119>MUST</em> return
1204     the value associated to this attribute.</p>
1205    
1206     <p>On setting, the attribute <em class=rfc2119>MUST</em> raise a
1207     <code>NO_MODIFICATION_ALLOWED_ERR</code> <span class=ed>@@ ref</span>
1208     exception if the
1209     <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node
1210     is read$B!>(Bonly <span class=ed>@@ ref</span>. Otherwise, it
1211     <em class=rfc2119>MUST</em> set the specified value as the value
1212     associated to this attribute.</p>
1213    
1214 wakaba 1.12 <p>If the
1215     <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node is
1216     created during the process to create a <abbr>DOM</abbr> from an
1217     <abbr>XML</abbr> document, an appropriate value from the
1218 wakaba 1.11 <a href="#DefaultValueType"><code>DefaultValueType</code></a> definition
1219     group <em class=rfc2119>MUST</em> be set to the attribute.</p>
1220    
1221     <!-- DefaultValueType -->
1222     <p>The definition group
1223     <dfn id=DefaultValueType><code>DefaultValueType</code></dfn>
1224     contains integers indicating the type of the default for the attribute.
1225     The definition group contains the following constans:</p>
1226    
1227     <table>
1228     <thead>
1229     <tr><th scope=col>Name<th scope=col>Value<th scope=col>Description</tr>
1230     </thead>
1231     <tbody>
1232     <tr>
1233     <th scope=row><dfn id=UNKNOWN_DEFAULT class=dom-const><code>UNKNOWN_DEFAULT</code></dfn>
1234     <td><code>0</code><td>Unknown.</tr>
1235     <tr>
1236     <th scope=row><dfn id=FIXED_DEFAULT class=dom-const><code>FIXED_DEFAULT</code></dfn>
1237     <td><code>1</code><td>Provided explicitly and fixed
1238     <span class=ed>@@ ref</span> to that value.</tr>
1239     <tr>
1240     <th scope=row><dfn id=REQUIRED_DEFAULT class=dom-const><code>REQUIRED_DEFAULT</code></dfn>
1241     <td><code>2</code><td>No default value and the attribute have to be
1242     explicitly specified.</tr>
1243     <tr>
1244     <th scope=row><dfn id=IMPLIED_DEFAULT class=dom-const><code>IMPLIED_DEFAULT</code></dfn>
1245     <td><code>3</code><td>Implied <span class=ed>@@ ref</span>.</tr>
1246     <tr>
1247     <th scope=row><dfn id=EXPLICIT_DEFAULT class=dom-const><code>EXPLICIT_DEFAULT</code></dfn>
1248     <td><code>4</code><td>Provided explicitly.</tr>
1249     </tbody>
1250     </table>
1251    
1252     <p>If the source of the default type does not distinguish
1253     implied and unknown default types, then the value
1254     <a href="#IMPLIED_DEFAULT"><code>IMPLIED_DEFAULT</code></a>
1255     <em class=rfc2119>MUST</em> be used.</p>
1256    
1257     <div class="note memo">
1258     <p>An <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>
1259     node created by the
1260     <a href="#createAttributeDefinition"><code>createAttributeDefinition</code></a>
1261     method has its <a href="#defaultType"><code>defaultType</code></a>
1262     attribute set to
1263     <a href="#UNKNOWN_DEFAULT"><code>UNKNOWN_DEFAULT</code></a>.</p>
1264     </div></dd>
1265 wakaba 1.10 </dl>
1266 wakaba 1.4
1267 wakaba 1.3 </div>
1268    
1269 wakaba 1.19 <div class=section id=section-entity>
1270     <h3>Modifications to the <code id=Entity>Entity</code> Interface</h3>
1271    
1272     <p>The implementation of the <a href="#Entity"><code>Entity</code></a>
1273     interface <em class=rfc2119>MUST</em> be modified as following:</p>
1274     <pre class=idl><code>// Modifications to the Entity interface
1275     attribute DOMString <a href="#publicId">publicId</a>;
1276     attribute DOMString <a href="#systemId">systemId</a>;
1277     attribute DOMString <a href="#notationName">notationName</a>;
1278    
1279     // Additions to the Entity interface
1280     attribute DOMString <a href="#hasReplacementTree">hasReplacementTree</a>;
1281     readonly attribute <a href="#DocumentType">DocumentType</a> <a href="#ownerDocumentTypeDefinition">ownerDocumentTypeDefinition</a>;
1282 wakaba 1.20
1283     attribute boolean <a href="#isExternallyDeclared">isExternallyDeclared</a>;
1284 wakaba 1.19 </code></pre>
1285    
1286     <p>The <code id=notationName>notationName</code> attribute of the
1287     <a href="#Entity"><code>Entity</code></a> interface is no longer
1288     read$B!>(Bonly.</p>
1289    
1290     <p>On setting, the attribute <em class=rfc2119>MUST</em> raise a
1291     <code>NO_MODIFICATION_ALLOWED_ERR</code> <span class=ed>@@ ref</span>
1292     exception if the node is read$B!>(Bonly <span class=ed>@@ ref</span>.
1293     Otherwise, it <em class=rfc2119>MUST</em> set the specified value as the value
1294     associated to the attribute. No lexical validation is performed. The new
1295     value <em class=rfc2119>MAY</em> be <code>null</code>.</p>
1296    
1297     <dl>
1298     <dt><dfn id=hasReplacementTree class=dom-attr><code>hasReplacementTree</code></dfn>
1299     of type boolean</dt>
1300     <dd><p>Whether the structure of the replacement text of the entity
1301     is available via the <code>NodeList</code> object in the
1302     <code>childNodes</code> attribute of the entity.</p>
1303    
1304     <p>On getting, the attribute <em class=rfc2119>MUST</em> return
1305     the value associated to this attribute.</p>
1306    
1307     <p>On setting, the attribute <em class=rfc2119>MUST</em> raise a
1308     <code>NO_MODIFICATION_ALLOWED_ERR</code> <span class=ed>@@ ref</span>
1309     exception if the node is read$B!>(Bonly <span class=ed>@@ ref</span>.
1310     Otherwise, it <em class=rfc2119>MUST</em> set the specified value as the
1311     value associated to this attribute.</p>
1312    
1313     <div class="note memo">
1314     <p>The attribute can be set to <code>false</code> even if the
1315     <a href="#Entity"><code>Entity</code></a> node has any child node.
1316     If the attribute is set to <code>false</code>, then any child node of
1317     the <a href="#Entity"><code>Entity</code></a> node ought to be ignored,
1318     say, for the purpose of serialization.</p>
1319     </div>
1320    
1321     <p>When an <code>EntityReference</code> node is created by cloning
1322     the replacement subtree of the <a href="#Entity"><code>Entity</code></a>
1323     node, if the attribute is set to <code>false</code>, then any descendant
1324     of the node <em class=rfc2119>MUST</em> be ignored.</p>
1325    
1326     <p>If the <a href="#Entity"><code>Entity</code></a> node is created during
1327     the process to create a <abbr>DOM</abbr> from an <abbr>XML</abbr> document,
1328     the following requirements are applied: If the entity is an unparsed
1329     entity, then the attribute <em class=rfc2119>MUST</em> be set to
1330     <code>false</code>. Otherwise, if the entity is an external entity whose
1331     replacement text is not available, or whose replacement text is not converted
1332     to a replacement tree, then the attribute <em class=rfc2119>MUST</em> be set
1333     to <code>false</code>. Otherwise, the attribute
1334     <em class=rfc2119>MUST</em> be set to <code>true</code>.</p>
1335    
1336     <div class="note memo">
1337     <p>An <a href="#Entity"><code>Entity</code></a> node created by the
1338     <a href="#createGeneralEntity"><code>createGeneralEntity</code></a> method
1339     has its <a href="#hasReplacementTree"><code>hasReplacementTree</code></a>
1340     attribute set to <code>false</code>.</p>
1341     </div></dd>
1342 wakaba 1.20 <dt><dfn id=isExternallyDeclared class=dom-attr><code>isExternallyDeclared</code></dfn>
1343     of type boolean</dt>
1344     <dd><p>Whether the entity is declared by an external entity declaration or
1345     not. If the value is <code>true</code>, the entity is declared in an entity
1346     declaration in the external subset entity or in an external parameter entity.
1347     If the value is <code>false</code>, the entity is declared in an entity
1348     declaration in the internal subset, or the node is created in memory.</p>
1349    
1350     <p>On getting, the attribute <em class=rfc2119>MUST</em> return
1351     the value associated to this attribute.</p>
1352    
1353     <p>On setting, the attribute <em class=rfc2119>MUST</em> raise a
1354     <code>NO_MODIFICATION_ALLOWED_ERR</code> <span class=ed>@@ ref</span>
1355     exception if the node is read$B!>(Bonly <span class=ed>@@ ref</span>.
1356     Otherwise, it <em class=rfc2119>MUST</em> set the specified value as the
1357     value associated to this attribute.</p>
1358    
1359     <p>If the <a href="#Entity"><code>Entity</code></a> node is created during
1360     the process to create a <abbr>DOM</abbr> from an <abbr>XML</abbr> document,
1361     the following requirements are applied: If the entity is an unparsed
1362     entity, then the attribute <em class=rfc2119>MUST</em> be set to
1363     <code>false</code>. Otherwise, i.e. the entity is a parsed entity, then the
1364     attribute <em class=rfc2119>MUST</em> be set to the value of whether the
1365     entity is declared by an external markup declaration or not.</p></dd>
1366 wakaba 1.19 </dl>
1367 wakaba 1.1 </div>
1368 wakaba 1.3
1369 wakaba 1.19 <div class=section id=section-notation>
1370     <h3>Modifications to the <code id=Notation>Notation</code> Interface</h3>
1371 wakaba 1.3
1372 wakaba 1.19 <p>The implementation of the <a href="#Notation"><code>Notation</code></a>
1373     interface <em class=rfc2119>MUST</em> be modified as following:</p>
1374     <pre class=idl><code>// Modifications to the Notation interface
1375     attribute DOMString <a href="#publicId">publicId</a>;
1376     attribute DOMString <a href="#systemId">systemId</a>;
1377 wakaba 1.1
1378 wakaba 1.19 // Addition to the Notation interface
1379     readonly attribute <a href="#DocumentType">DocumentType</a> <a href="#ownerDocumentTypeDefinition">ownerDocumentTypeDefinition</a>;
1380     </code></pre>
1381     </div>
1382    
1383     </div>
1384 wakaba 1.1
1385     <div id="references" class="section reference">
1386     <h2>References</h2>
1387    
1388     <div id="normative-references" class="section normative reference">
1389     <h3>Normative References</h3>
1390    
1391     <dl>
1392     <dt id=ref-DOM3CORE>DOM3CORE</dt>
1393     <dd class=ed>@@ W3C DOM Level 3 Core</dd>
1394     <dt id=ref-DOMDTDEF>DOMDTDEF</dt>
1395     <dd class=ed>@@ manakai's extension to DOM for document type definitions</dd>
1396     <dt id="ref-KEYWORDS">KEYWORDS</dt>
1397     <dd><cite><a href="urn:ietf:rfc:2119">Key words for use in
1398     <abbr>RFCs</abbr> to Indicate Requirement Levels</a></cite>,
1399     <abbr title="Internet Engineering Task Force">IETF</abbr>
1400     <a href="urn:ietf:bcp:14"><abbr title="Best Current Practice">BCP</abbr>
1401     14</a>, <abbr title="Request for Comments">RFC</abbr> 2119,
1402     <time datetime=1997-03>March 1997</time>.
1403     <em>This</em> version of the specification is referenced.</dd>
1404     <dt id=ref-INFOSET>INFOSET</dt>
1405     <dd class=ed>@@</dd>
1406     <dt id=ref-XML10">XML10</dt>
1407     <dd><cite><a href="http://www.w3.org/TR/2006/REC-xml-20060816">Extensible
1408     Markup Language (<abbr>XML</abbr>) 1.0 (Fourth Edition)</a></cite>,
1409     <abbr>W3C</abbr> Recommendation, <time datetime=2006-08-16>16 August
1410     2006</time>, edited in place <time datetime=2006-09-29>29 September
1411     2006</time>. Tje latest version of the specification is available at
1412     <code class=uri>&lt;<a href="http://www.w3.org/TR/xml">http://www.w3.org/TR/xml</a>&gt;</code>.
1413     <em>This</em> version of the specification is referenced.</dd>
1414     <dt id=ref-XML11>XML11</dt>
1415     <dd class=ed>@@</dd>
1416     </dl>
1417     </div>
1418    
1419     <div id="informative-references" class="section informative reference">
1420     <h3>Non$B!>(Bnormative References</h3>
1421    
1422     <dl class=ed>
1423     <dt id=ref-CSS>CSS</dt>
1424     <dd><cite><a href="http://www.w3.org/TR/2007/CR-CSS21-20070719">Cascading
1425     Style Sheets Level 2 Revision 1 (<abbr>CSS</abbr> 2.1)
1426     Specification</a></cite>,
1427     <abbr title="World Wide Web Consortium">W3C</abbr> Candidate
1428     Recommendation, <time datetime=2007-07-19>19 July 2007</time>.
1429     Work in progress. The latest version of the specification is
1430     available at
1431     <code class=URI>&lt;<a href="http://www.w3.org/TR/CSS21">http://www.w3.org/TR/CSS21</a>></code>.</dd>
1432     <dt id=ref-CSSOM>CSSOM</dt>
1433     <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
1434     Style Sheets Object Model (<abbr>CSSOM</abbr>)</a></cite>,
1435     <abbr title="World Wide Web Consortium">W3C</abbr> Editor's Draft,
1436     <time datetime=2007-06-18>18 June 2007</time>. Work in progress.
1437     The latest Editor's Draft of the specification is available at
1438     <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>
1439     <dt id=ref-HTML5>HTML5</dt>
1440     <dd><cite><a href="http://whatwg.org/html5"><abbr>HTML</abbr> 5</a></cite>,
1441     <abbr title="Web Hypertext Application Technology Working Group">WHATWG</abbr>
1442     Working Draft. Work in progress.</dd>
1443     <dt id=ref-SAPI>SAPI</dt>
1444     <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>,
1445     <abbr title="World Wide Web Consortium">W3C</abbr> Editor's Draft,
1446     <time datetime=2007-08-29>29 August 2007</time>. Work in progress.
1447     The latest Editor's Draft of the specification is available at
1448     <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>.
1449     The latest published version of the specification is available at
1450     <code class=URI>&lt;<a href="http://www.w3.org/TR/selectors-api/">http://www.w3.org/TR/selectors-api/</a>></code>.</dd>
1451     <dt id=XBL2>XBL2</dt>
1452     <dd><cite><a href="http://www.mozilla.org/projects/xbl/xbl2.html"><abbr>XBL</abbr>
1453     2.0</a></cite>, Mozilla.org, <time datetime=2007-03-15>15 Mar 2007</time>.
1454     Work in progress. The latest
1455     <abbr title="World Wide Web Consortium">W3C</abbr>$B!>(Bpublished
1456     version of the specification is available at
1457     <code class=URI>&lt;<a href="http://www.w3.org/TR/xbl/">http://www.w3.org/TR/xbl/</a>></code>.</dd>
1458     <dt id=ref-XML5>XML5</dt>
1459     <dd class=ed>@@</dd>
1460     </dl>
1461     </div>
1462    
1463     </div>
1464    
1465     </body>
1466     </html>

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24