/[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.30 - (hide annotations) (download) (as text)
Sun Dec 9 10:33:26 2007 UTC (16 years, 5 months ago) by wakaba
Branch: MAIN
CVS Tags: domdtdef-20071209
Changes since 1.29: +3 -3 lines
File MIME type: text/html
Oops, today is 9th

1 wakaba 1.1 <!DOCTYPE html>
2 wakaba 1.29 <html lang="en" class="formal-specification"><!-- status-work-in-progress"-->
3 wakaba 1.1 <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.29 <h2>First Edition <!-- Working Draft -->
14 wakaba 1.30 <time datetime=2007-12-09>9 December 2007</time></h2>
15 wakaba 1.1
16     <dl class="versions-uri">
17     <dt>This Version</dt>
18 wakaba 1.30 <dd><code class="URI">&lt;<a href="http://suika.fam.cx/www/markup/xml/domdtdef/domdtdef-20071209"
19     >http://suika.fam.cx/www/markup/xml/domdtdef/domdtdef-20071209</a>&gt;</code></dd>
20 wakaba 1.29 <!--
21 wakaba 1.2 <dd><code class="URI">&lt;<a href="http://suika.fam.cx/www/markup/xml/domdtdef/domdtdef-work"
22     >http://suika.fam.cx/www/markup/xml/domdtdef/domdtdef-work</a>&gt;</code></dd>
23 wakaba 1.29 -->
24 wakaba 1.1 <dt>Latest Version</dt>
25 wakaba 1.2 <dd><code class="URI">&lt;<a href="http://suika.fam.cx/www/markup/xml/domdtdef/domdtdef"
26     >http://suika.fam.cx/www/markup/xml/domdtdef/domdtdef</a>&gt;</code></dd>
27 wakaba 1.1 <dt>Latest Working Draft</dt>
28 wakaba 1.2 <dd><code class="URI">&lt;<a href="http://suika.fam.cx/www/markup/xml/domdtdef/domdtdef-work"
29     >http://suika.fam.cx/www/markup/xml/domdtdef/domdtdef-work</a>&gt;</code></dd>
30 wakaba 1.1 <!-- <dt>Previous Version</dt> -->
31     <dt>Version History</dt>
32 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>
33     <dt id=author>Author</dt>
34 wakaba 1.1 <dd><a href="http://suika.fam.cx/~wakaba/who?" rel="author"
35     lang=ja>Wakaba</a>
36     <code class="mail">&lt;<a href="mailto:w@suika.fam.cx" rel="author"
37     >w@suika.fam.cx</a>&gt;</code></dd>
38     </dl>
39    
40     <p class="copyright" lang="en">&#xA9; <time>2007</time> <a
41     href="http://suika.fam.cx/~wakaba/who?" rel="author">Wakaba</a>.
42     Permission is granted to copy, distribute and/or modify this document
43     under the terms of the <a rel="license"
44     href="http://www.gnu.org/copyleft/fdl.html">GNU Free Documentation License</a>,
45     Version 1.2
46     or any later version published by the <a
47     href="http://www.fsf.org/">Free Software Foundation</a>;
48     with no Invariant Sections, no Front$B!>(BCover Texts, and no Back$B!>(BCover
49     Texts. A copy of the license is
50     available at <code class="URI">&lt;<a
51     href="http://www.gnu.org/copyleft/fdl.html"
52     rel="license">http://www.gnu.org/copyleft/fdl.html</a>&gt;</code>.</p>
53     </div>
54    
55     <div id="abstract" class="section">
56     <h2>Abstract</h2>
57    
58 wakaba 1.22 <p>The <abbr>DOM</abbr> Document Type Definition module is a set of
59     <abbr>DOM</abbr> interfaces, including both new interfaces and modifications
60     to existing <abbr>DOM</abbr> interfaces, over which <abbr>DOM</abbr>
61     applications are able to access to the definitions of the document type.</p>
62 wakaba 1.1 </div>
63    
64     <div id="status" class="section">
65     <h2>Status of This Document</h2>
66    
67 wakaba 1.27 <p class=section-info>This section describes the status of this document at the
68     time of its publication. Other documents might supersede this document.</p>
69 wakaba 1.1
70 wakaba 1.29 <p>This document is a specification<!-- working draft -->,
71     produced as part of the
72     <a href="http://suika.fam.cx/www/manakai-core/doc/web/">manakai</a> project.
73     It might be updated, replaced, or obsoleted by other documents at any time.
74     <!-- It is inappropriate to cite this document as other than
75     <q>work in progress</q>. --></p>
76 wakaba 1.1
77     <p>Comments on this document are welcome and
78     may be sent to the <a href="#author">author</a>.</p>
79    
80 wakaba 1.28 <p>Translations of this document might be available.
81 wakaba 1.1 The English version of the document is the only
82     normative version.</p>
83     </div>
84    
85     <div id="introduction" class="section">
86     <h2>Introduction</h2>
87    
88     <p class=section-info>This section is <em>non$B!>(Bnormative</em>.</p>
89    
90 wakaba 1.3 <p>The <dfn id=term-dom-dtdef><abbr>DOM</abbr> Document Type Definition</dfn>
91     module is a set of <abbr>DOM</abbr> interfaces, including both new
92     interfaces and modifications to existing <abbr>DOM</abbr> interfaces,
93     over which <abbr>DOM</abbr> applications are able to access to the
94     definitions of the document type.</p>
95    
96 wakaba 1.23 <p>Interfaces defined in this document are partially modeled and inspired by
97     early drafts of <abbr>DOM</abbr> Level 1
98     <cite class="bibref informative">[<a href="#ref-DOM1WD">DOM1WD</a>]</cite>,
99     <abbr>DOM</abbr> Level 3 Abstract Schemas <abbr>W3C</abbr> Note
100     <cite class="bibref informative">[<a href="#ref-DOM3AS">DOM3AS</a>]</cite>,
101     and <abbr>XML</abbr> Schema <abbr>API</abbr> specification
102     <cite class="bibref informative">[<a href="#ref-XSAPI">XSAPI</a>]</cite>, but
103     they are not compatible with any of them as a whole.</p>
104 wakaba 1.1 </div>
105    
106 wakaba 1.22 <div class="section" id=conformance>
107     <h2>Conformance Requirements</h2>
108 wakaba 1.1
109 wakaba 1.22 <div class=section id=terminology>
110     <h3>Terminology</h3>
111 wakaba 1.1
112     <p>All examples and notes in this specification are non$B!>(Bnormative,
113 wakaba 1.29 as are all sections explicitly marked non$B!>(Bnormative.</p>
114    
115     <p class=ed>Known issues are marked like this. They are non$B!>(Bnormative. <!--
116     However, this paragraph itself is normative. One may argue that this paragraph
117     is non$B!>(Bnormative, because this paragraph is marked as an editor's note.
118     Anyway, the other editor's notes are non$B!>(Bnormative. --></p>
119    
120     <p>Everything else in this document is normative.</p>
121 wakaba 1.1
122 wakaba 1.22 <p>The key words <q><em class="rfc2119">MUST</em></q>,
123     <q><em class="rfc2119">MUST NOT</em></q>, and <q><em class=rfc2119>MAY</em></q>
124     in this document are to be interpreted as described in
125     <a href="urn:ietf:rfc:2119"><abbr title="Request for Comments">RFC</abbr>
126     2119</a>
127     <cite class="bibref normative">[<a href="#ref-KEYWORDS">KEYWORDS</a>]</cite>.</p>
128 wakaba 1.3
129 wakaba 1.22 <p>Conformance requirements phrased as algorithms or specific steps
130     <em class=rfc2119>MAY</em> be implemented in any manner, so long as the end
131     result is equivalent. Requirements phrased in the imperative as part of
132     algorithms are to be interpreted with the meaning of the key word used in
133     introducing the algorithm.</p>
134    
135     <p>Sometimes an exception is phrased as being required to be raised. As
136     specified in the <abbr>DOM</abbr> Core specification
137 wakaba 1.23 <cite class="bibref normative">[<a href="#ref-DOM3CORE">DOM3CORE</a>]</cite>,
138 wakaba 1.22 when the value of the <code>strictErrorChecking</code> attribute of the
139     <a href="#Document"><code>Document</code></a> node is <code>false</code>,
140     then the exception is not have to be raised.</p>
141    
142     <p>Some conformance requirements are phrased as requirements on interfaces,
143     attributes, methods, or objects. Such requirements are applied to
144     implementations.</p>
145    
146     <p>The construction <q>a <code><var>Foo</var></code> object</q>, where
147     <code><var>Foo</var></code> is an interface, is used instead of the more
148     accurate <q>an object implementing the interface
149     <code><var>Foo</var></code></q>.</p>
150    
151     <p>The construction <q>raise a <code><var>Bar</var></code></q>, where
152     <code><var>Bar</var></code> is an exception code, is used instead of the more
153     accurate <q>raise an exception implementing the interface
154 wakaba 1.23 <code>DOMException</code>
155     <cite class="bibref normative">[<a href="#ref-DOM3CORE">DOM3CORE</a>]</cite>
156     with its <code>code</code> attribute set to
157     <code><var>Bar</var></code></q>.</p>
158    
159     <p>The terms
160     <em id=live><a href="http://www.whatwg.org/specs/web-apps/current-work/#live">live</a></em>
161     and <em id=setting>setting</em> and <em id=getting>getting</em> of an attribute
162     is defined in the HTML5 specification
163     <cite class="bibref normative">[<a href="#ref-HTML5">HTML5</a>]</cite>.</p>
164 wakaba 1.22
165     <p>The term
166 wakaba 1.23 <em id=read-only><a href="http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/glossary.html#dt-readonly-node">read$B!>(Bonly (node)</a></em>
167     is defined in the <abbr>DOM</abbr> Level 3 Core specification
168     <cite class="bibref normative">[<a href="#ref-DOM3CORE">DOM3CORE</a>]</cite>.</p>
169 wakaba 1.3
170 wakaba 1.24 <p>The <em id=idl-fragment><abbr>IDL</abbr> fragments</em> in this document are
171     to be interpreted as described in the <cite>Language Bindings for
172     <abbr>DOM</abbr> Specifications</cite> specification
173     <cite class="bibref normative">[<a href="#ref-DOMBIND">DOMBIND</a>]</cite>.</p>
174    
175     <p>Some <abbr>IDL</abbr> fragments are presented as <i>patch</i> to an
176     <abbr>IDL</abbr> fragment defined in another document. They are to be
177     interpreted as an instance of
178     <a href="http://www.w3.org/TR/2007/WD-DOM-Bindings-20071017/#proddef-InterfaceMembers"><code>InterfaceMembers</code></a>
179     <cite class="bibref normative">[<a href="#ref-DOMBIND">DOMBIND</a>]</cite>.
180     If the <abbr>IDL</abbr> fragment to which the <i>patch</i> is applied has any
181     instance of
182     <a href="http://www.w3.org/TR/2007/WD-DOM-Bindings-20071017/#proddef-InterfaceMember"><code>InterfaceMember</code></a>
183     with same
184     <a href="http://www.w3.org/TR/2007/WD-DOM-Bindings-20071017/#prod-identifier"><code>identifier</code></a>
185     part as that of any instance of
186     <a href="http://www.w3.org/TR/2007/WD-DOM-Bindings-20071017/#proddef-InterfaceMember"><code>InterfaceMember</code></a>
187     in the <i>patch</i>, then the former instance of
188     <a href="http://www.w3.org/TR/2007/WD-DOM-Bindings-20071017/#proddef-InterfaceMember"><code>InterfaceMember</code></a>
189     <em class=rfc2119>MUST</em> be ignored.</p>
190 wakaba 1.22 </div>
191 wakaba 1.12
192 wakaba 1.22 <div class=section id=conformance-categories>
193     <h3>Conformance Categories</h3>
194 wakaba 1.18
195 wakaba 1.22 <p>There are several kinds of products that can be claim to conform to
196     this specification:</p>
197     <dl>
198     <dt id=category-dom-implementation><abbr>DOM</abbr> Implementation</dt>
199     <dd>A <abbr>DOM</abbr> implementation (or just written as
200     <q>implementation</q> in this document) provides a way to access
201     <abbr>DOM</abbr> trees for applications by implementing interfaces defined
202     by this and other documents. Unless otherwise noted, requirements in this
203     document are applied to <abbr>DOM</abbr> implementations. To implement
204     all the features in this document, the implementation have to implement
205 wakaba 1.23 some version of <abbr>DOM</abbr> Core (e.g. <abbr>DOM</abbr> Level 3 Core
206     <cite class="bibref normative">[<a href="#ref-DOM3CORE">DOM3CORE</a>]</cite>)
207 wakaba 1.24 with one or more language binding (e.g. ECMAScript and Java bindings
208     <cite class="bibref normative">[<a href="#ref-DOMBIND">DOMBIND</a>]</cite>
209     or Perl binding
210     <cite class="bibref normative">[<a href="#ref-DOMPERL">DOMPERL</a>]</cite>).
211     A conforming implementation <em class=rfc2119>MUST</em> also be a
212     <a href="http://www.w3.org/TR/2007/WD-DOM-Bindings-20071017/#dfn-conforming-implementation">conforming
213     implementation</a> of the <abbr>IDL</abbr> fragments in this document, as
214     described in the <cite>Language Bindings for <abbr>DOM</abbr>
215     Specifications</cite> specification
216     <cite class="bibref normative">[<a href="#ref-DOMBIND">DOMBIND</a>]</cite>.</dd>
217 wakaba 1.22 <dt id=category-xml-parser><abbr>XML</abbr> Parser (<abbr>XML</abbr> document
218     to <abbr>DOM</abbr> tree converter)</dt>
219     <dd>A software component that converts
220 wakaba 1.23 <abbr>XML</abbr> 1.0 or 1.1 document
221     <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>,
222     <a href="#ref-XML11">XML11</a>]</cite> (or fragment thereof) into a
223 wakaba 1.22 <abbr>DOM</abbr> tree (or fragment thereof) in the context of this
224     document. Note that this document does not define any particular way to
225     parse an <abbr>XML</abbr> document or to construct an <abbr>DOM</abbr>
226     document, but it defines constraints for such processing.</dd>
227     <dt id=category-xml-serializer><abbr>XML</abbr> Serializer (<abbr>DOM</abbr>
228     tree to <abbr>XML</abbr> document converter)</dt>
229     <dd>A software component that converts
230     <abbr>DOM</abbr> tree (or fragment thereof) into an <abbr>XML</abbr> 1.0 or
231     1.1 document (or fragment thereof). Note that this document does not define
232     any particular way to serialize a <abbr>DOM</abbr> tree, but it defines
233     constraints for such processing.</dd>
234     <dt id=category-infoset-dom><abbr>XML</abbr> Information Set to
235     <abbr>DOM</abbr> Tree Converter</dt>
236     <dd>A software component that converts an <abbr>XML</abbr> information set
237 wakaba 1.23 <cite class="bibref normative">[<a href="#ref-INFOSET">INFOSET</a>]</cite>
238 wakaba 1.28 into a <abbr>DOM</abbr> tree. Note that this document does not define
239     any particular way for the conversion, but it defines constraints for
240 wakaba 1.22 such processing.</dd>
241     <dt id=category-dom-infoset><abbr>DOM</abbr> Tree to <abbr>XML</abbr>
242     Information Set Converter</dt>
243     <dd>A software component that converts a <abbr>DOM</abbr> tree into
244 wakaba 1.28 an <abbr>XML</abbr> information set. Note that this document does not define
245     any particular way for the conversion, but it defines constraints for
246 wakaba 1.22 such processing.</dd>
247     </dl>
248 wakaba 1.18 </div>
249 wakaba 1.3 </div>
250    
251     <div class=section id=dom-dtdef>
252     <h2><abbr>DOM</abbr> Document Type Definition Module</h2>
253    
254     <p>The <abbr>DOM</abbr> Document Type Definition module, version 3.0,
255 wakaba 1.20 introduces four interfaces:
256     <a href="#DocumentXDoctype"><code>DocumentXDoctype</code></a>,
257     <a href="#DocumentTypeDefinition"><code>DocumentTypeDefinition</code></a>,
258     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>,
259     and <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>.
260     In addition, it modifies existing interfaces
261 wakaba 1.3 <a href="#Node"><code>Node</code></a>,
262 wakaba 1.20 <a href="#Document"><code>Document</code></a>,
263 wakaba 1.12 <a href="#DocumentType"><code>DocumentType</code></a>,
264 wakaba 1.20 <a href="#Entity"><code>Entity</code></a>, and
265 wakaba 1.23 <a href="#Notation"><code>Notation</code></a>
266     <cite class="bibref normative">[<a href="#ref-DOM3CORE">DOM3CORE</a>]</cite>.</p>
267 wakaba 1.3
268     <div class=section id=features>
269 wakaba 1.22 <h3>Feature String</h3>
270 wakaba 1.3
271     <p>In a <abbr>DOM</abbr> implementation that supports the version 3.0 of
272     the <abbr>DOM</abbr> Document Type Definition module, the
273     <code>hasFeature</code> method of a <code>DOMImplementation</code> object
274 wakaba 1.23 <cite class="bibref normative">[<a href="#ref-DOM3CORE">DOM3CORE</a>]</cite>
275 wakaba 1.3 <em class=rfc2119>MUST</em> return <code>true</code> when the parameters are
276 wakaba 1.19 set to
277     <dfn id=feature-XDoctype><code>http://suika.fam.cx/www/2006/feature/XDoctype</code></dfn>
278 wakaba 1.22 and <dfn id=feature-XDoctype-3.0><code>3.0</code></dfn> respectively. Any
279     method that takes one or more feature names, with or without version number,
280     such as <code>hasFeature</code> or <code>getFeature</code>,
281     <em class=rfc2119>MUST</em> behave in a manner consistent with it.</p>
282 wakaba 1.4 </div>
283    
284 wakaba 1.14 <div class=section id=section-node>
285     <h3>Modifications to the <code id=Node>Node</code> Interface</h3>
286    
287 wakaba 1.15 <p>The implementation of the
288     <a href="#Node"><code>Node</code></a> interface
289 wakaba 1.24 <em class=rfc2119>MUST</em> be modified as the following
290     <a href="#idl-fragment"><abbr>IDL</abbr> fragment</a>:</p>
291 wakaba 1.14 <pre class=idl><code>// Additions to the Node interface
292    
293     // Additions to the NodeType definition group
294     const unsigned short <a href="#ELEMENT_TYPE_DEFINITION_NODE">ELEMENT_TYPE_DEFINITION_NODE</a> = 81001;
295     const unsigned short <a href="#ATTRIBUTE_DEFINITION_NODE">ATTRIBUTE_DEFINITION_NODE</a> = 81002;
296     </pre>
297    
298     <p>This specification adds two new types (subinterfaces) of
299     <a href="#Node"><code>Node</code></a>: element type definition (node type
300     <a href="#ELEMENT_TYPE_DEFINITION_NODE"><code>ELEMENT_TYPE_DEFINITION_NODE</code></a>,
301     interface
302     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>) and
303     attribute definition (node type
304     <a href="#ATTRIBUTE_DEFINITION_NODE"><code>ATTRIBUTE_DEFINITION_NODE</code></a>,
305     interface
306     <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>). For
307     these kinds of nodes, methods and attributes in the
308     <a href="#Node"><code>Node</code></a> interface must behave as following:</p>
309    
310     <dl>
311 wakaba 1.25 <dt><code id=attributes>attributes</code>,
312     <code id=localName>localName</code>,
313     <code id=namespaceURI>namespaceURI</code>, and
314     <code id=prefix>prefix</code></dt>
315 wakaba 1.15 <dd>
316 wakaba 1.25 <p>On getting, the attributes <em class=rfc2119>MUST</em> return
317 wakaba 1.15 <code>null</code>.</p>
318     </dd>
319     <dt><code id=baseURI>baseURI</code></dt>
320     <dd>
321     <p>On getting, the attribute <em class=rfc2119>MUST</em> return the
322     value of the <a href="#baseURI"><code>baseURI</code></a> attribute
323     of the node in the <code>ownerDocument</code> attribute of the node.
324     Note that the value might be <code>null</code>.</p>
325     </dd>
326 wakaba 1.20 <dt><code id=cloneNode>cloneNode</code></dt>
327 wakaba 1.22 <dd class=ed>
328     <p>A future version of the specification is expected to define the
329     behavior of the <a href="#cloneNode"><code>cloneNode</code></a> method
330     for those kinds of nodes. In addition, it might revise behavior of
331     the method for <a href="#Entity"><code>Entity</code></a>,
332     <a href="#Notation"><code>Notation</code></a>, and/or
333     <a href="#DocumentType"><code>DocumentType</code></a> nodes.</p>
334     </dd>
335     <!--
336 wakaba 1.20 <dd class=ed>@@ If Attr and AttributeDefinition is inconsistent, then ...</dd>
337 wakaba 1.22 -->
338 wakaba 1.20 <dt><code id=compareDocumentPosition>compareDocumentPosition</code></dt>
339 wakaba 1.22 <dd class=ed>
340     <p>A future version of the specification is expected to define the
341     behavior of the method
342     for those kinds of nodes. In addition, it might revise behavior of
343     the method for <a href="#Entity"><code>Entity</code></a>,
344     <a href="#Notation"><code>Notation</code></a>, and/or
345     <a href="#DocumentType"><code>DocumentType</code></a> nodes.</p>
346     </dd>
347 wakaba 1.20 <dt><code id=isDefaultNamespace>isDefaultNamespace</code></dt>
348     <dd><p>When invoked, the method <em class=rfc2119>MUST</em> return
349     <code>false</code>.</p></dd>
350 wakaba 1.19 <dt><code id=isEqualNode>isEqualNode</code></dt>
351     <dd><p>For the <a href="#isEqualNode"><code>isEqualNode</code></a> method,
352     following items are added to the list of conditions for equality:</p>
353    
354     <ul>
355     <li>
356     <p>If the nodes are <a href="#DocumentType"><code>DocumentType</code></a>
357     and at least one of them has the support for the feature
358     <a href="#feature-XDoctype"><code>http://suika.fam.cx/www/2006/feature/XDoctype</code></a>:</p>
359     <ul>
360 wakaba 1.23 <li>they are equal according to <abbr>DOM</abbr> Level 3 Core definition
361     <cite class="bibref normative">[<a href="#ref-DOM3CORE">DOM3CORE</a>]</cite>,
362     and
363 wakaba 1.19 <li>either:
364     <ul><!--
365     <li>both of them does not support the feature
366     <a href="#feature-XDoctype"><code>http://suika.fam.cx/www/2006/feature/XDoctype</code></a>,</li>-->
367     <li>exactly one of them support the feature
368     <a href="#feature-XDoctype"><code>http://suika.fam.cx/www/2006/feature/XDoctype</code></a>
369     and the <code>length</code> attribute of the <code>NamedNodeMap</code>
370     object in the <a href="#elementTypes"><code>elementTypes</code></a>
371     attribute of it is equal to <code>0</code>, or</li>
372     <li>both of them support the feature
373     <a href="#feature-XDoctype"><code>http://suika.fam.cx/www/2006/feature/XDoctype</code></a>
374     and the values of the
375     <a href="#elementTypes"><code>elementTypes</code></a> attributes are
376     equal (equality of the
377     <a href="#elementTypes"><code>elementTypes</code></a> attribute is same
378     as that for the <code>attributes</code> attribute).</li>
379     </ul>
380     </li>
381     </ul>
382     </li>
383    
384     <li><p>If the nodes are
385     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>,
386     the values of the
387     <a href="#attributeDefinitions"><code>attributeDefinitions</code></a>
388     attributes are equal (equality of the
389     <a href="#attributeDefinitions"><code>attributeDefinitions</code></a>
390     attribute is same as that for the <code>attributes</code> attribute).</p></li>
391    
392     <li><p>If the nodes are
393     <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>,
394     the values of the <a href="#declaredType"><code>declaredType</code></a> and
395     the <a href="#defaultType"><code>defaultType</code></a> attributes are
396     equal respectively.</p></li>
397    
398     <li><p>If the nodes are
399     <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>,
400     the values of the <code>DOMStringList</code> objects in the
401     <a href="#allowedTokens"><code>allowedTokens</code></a> attributes
402     are equal, i.e. their <code>length</code> attribute values are equal and
403 wakaba 1.28 each string exists in a list is contained in another list (their indecies
404 wakaba 1.19 may be different), with an additional constraint that the number of the
405     items that are equal to a string in a list is equal to the number
406     of the items equal to the string in another list.</p></li>
407     </ul></dd>
408 wakaba 1.27 <dt><code id=manakaiLocalName>manakaiLocalName</code>
409     <cite class="bibref normative">[<a href="#ref-MANAKAI">MANAKAI</a>]</cite></dt>
410     <dd><p class=section-info>This entry is applied only to implementations
411     that support this attribute.</p>
412    
413     <p>On getting, the attributes <em class=rfc2119>MUST</em> return
414     <code>null</code>.</p></dd>
415 wakaba 1.20 <dt><code id=lookupNamespaceURI>lookupNamespaceURI</code> and
416     <code id=lookupPrefix>lookupPrefix</code></dt>
417     <dd><p>When invoked, the methods <em class=rfc2119>MUST</em> return
418     <code>null</code>.</p></dd>
419 wakaba 1.15 <dt><code id=nodeName>nodeName</code></dt>
420     <dd>
421     <p>If the node is an
422     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>:
423     On getting, the attribute <em class=rfc2119>MUST</em> return the
424     name of the element type definition represented by the node.</p>
425    
426     <p>If the node is an
427     <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>:
428     On getting, the attribute <em class=rfc2119>MUST</em> return the
429     name of the attribute definition represented by the node.</p>
430     </dd>
431 wakaba 1.14 <dt><code id=nodeType>nodeType</code></dt>
432     <dd>
433 wakaba 1.24 <p>On getting, the attribute <!--<em class=rfc2119>MUST</em>--> returns
434     <!-- NOTE: No MUST, to avoid circular reference (nodeType==8100[12]
435     is defined that they MUST implement ElementType|AttributeDefinition). -->
436 wakaba 1.14 <a href="#ELEMENT_TYPE_DEFINITION_NODE"><code>ELEMENT_TYPE_DEFINITION_NODE</code></a>
437     (if the node is an
438     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>) or
439     <a href="#ATTRIBUTE_DEFINITION_NODE"><code>ATTRIBUTE_DEFINITION_NODE</code></a>
440     (if the node is an
441     <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>).</p>
442    
443     <!-- NodeType -->
444     <p>Two constants are added to the <code id=NodeType>NodeType</code>
445     definition group of the <a href="#Node"><code>Node</code></a> interface as
446     following:</p>
447     <table>
448     <thead>
449     <tr><th scope=col>Name<th scope=col>Value<th scope=col>Description</tr>
450     </thead>
451     <tbody>
452     <tr>
453     <th scope=row><dfn id=ELEMENT_TYPE_DEFINITION_NODE class=dom-const><code>ELEMENT_TYPE_DEFINITION_NODE</code></dfn>
454     <td><code>81001</code><td>The node is an
455     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>.</tr>
456     <tr>
457     <th scope=row><dfn id=ATTRIBUTE_DEFINITION_NODE class=dom-const><code>ATTRIBUTE_DEFINITION_NODE</code></dfn>
458     <td><code>81002</code><td>The node is an
459     <a href="#ElementTypeDefinition"><code>AttributeDefinition</code></a>.</tr>
460     </tbody>
461     </table>
462     </dd>
463 wakaba 1.15 <dt><code id=nodeValue>nodeValue</code> and
464     <code id=textContent>textContent</code></dt>
465     <dd>
466     <p>If the node is an
467     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>:
468 wakaba 1.21 On getting, the attributes <em class=rfc2119>MUST</em> return
469     <code>null</code>.</p>
470 wakaba 1.15
471 wakaba 1.23 <div class="note memo">
472     <p>Thus, on setting the attributes does nothing
473     <cite class="bibref normative">[<a href="#ref-DOM3CORE">DOM3CORE</a>]</cite>.</p>
474     </div>
475 wakaba 1.15
476 wakaba 1.21 <p>If the node is an
477     <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>:
478     The attribute <em class=rfc2119>MUST</em> behave as if the node
479 wakaba 1.23 were <code>Attr</code>
480     <cite class="bibref normative">[<a href="#ref-DOM3CORE">DOM3CORE</a>]</cite>.</p></dd>
481 wakaba 1.20 <dt><code id=normalize>normalize</code></dt>
482     <dd><p>When a <a href="#DocumentType"><code>DocumentType</code></a> is
483     normalized, any nodes in the <code>NamedNodeMap</code> object in the
484     <a href="#elementTypes"><code>elementTypes</code></a> attribute
485     <em class=rfc2119>MUST</em> be normalized as well.</p>
486    
487     <p>When an
488     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> node
489     is normalized, any nodes in the <code>NamedNodeMap</code> object in the
490     <a href="#attributeDefinitions"><code>attributeDefinitions</code></a>
491     attribute <em class=rfc2119>MUST</em> be normalized as well.</p></dd>
492 wakaba 1.14 </dl>
493    
494     </div>
495    
496 wakaba 1.20 <div class=section id=section-document>
497     <h3>Modifications to the <code id=Document>Document</code> Interface</h3>
498    
499 wakaba 1.22 <!--
500 wakaba 1.20 <p>If an attempt is made to adopt an
501     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> or
502     <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node,
503     the <code id=adoptNode>adoptNode</code> method <em class=rfc2119>MUST</em>
504     raise a <code>NOT_SUPPORTED_ERR</code> exception <span class=ed>@@
505     ref</span>.</p>
506 wakaba 1.22 -->
507    
508     <div class=ed>
509     <p>Future version of the specification is expected to define what should
510     be done if <code>adoptNode</code> or <code>importNode</code> method have to
511     adopt or import an
512     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> or
513     <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node.
514     In addition it might revise behavior of those methods for
515     <a href="#Entity"><code>Entity</code></a>,
516     <a href="#Notation"><code>Notation</code></a>, and/or
517     <a href="#DocumentType"><code>DocumentType</code></a> nodes.
518     Behavior of <code>normalizeDocument</code> method for these kinds of
519     nodes might also be defined in some day.</p>
520     </div>
521    
522 wakaba 1.20 </div>
523    
524 wakaba 1.4 <div class=section id=section-documentxdoctype>
525 wakaba 1.7 <h3>The <code>DocumentXDoctype</code> Interface</h3>
526 wakaba 1.4
527 wakaba 1.22 <p>The <a href="#Document"><code>Document</code></a> nodes
528     <em class=rfc2119>MUST</em> also implement the
529     <a href="#DocumentXDoctype"><code>DocumentXDoctype</code></a> interface.</p>
530    
531     <p>An instance of the
532     <a href="#DocumentXDoctype"><code>DocumentXDoctype</code></a>
533     interface <em class=rfc2119>MUST</em> be able to be obtained by using
534     binding$B!>(Bspecific casting methods on an instance of the
535     <a href="#Document"><code>Document</code></a> interface (if such
536     casting methods are available) or by using the method <code>getFeature</code>
537     with parameter values
538     <a href="#feature-XDoctype"><code>http://suika.fam.cx/www/2006/feature/XDoctype</code></a>
539     and <a href="#feature-XDoctype-3.0"><code>3.0</code></a> respectively (if the
540     <a href="#Document"><code>Document</code></a> node supports the
541     feature <code>Core</code> version <code>3.0</code>
542 wakaba 1.23 <cite class="bibref normative">[<a href="#ref-DOM3CORE">DOM3CORE</a>]</cite>).</p>
543 wakaba 1.22
544 wakaba 1.15 <p>The <a href="#DocumentXDoctype"><code>DocumentXDoctype</code></a> interface
545 wakaba 1.24 <em class=rfc2119>MUST</em> be implemented as the following
546     <a href="#idl-fragment"><abbr>IDL</abbr> fragment</a>:</p>
547 wakaba 1.4 <pre class=idl><code>interface <dfn id=DocumentXDoctype><code>DocumentXDoctype</code></dfn> {
548 wakaba 1.5 DocumentType <a href="#createDocumentTypeDefinition">createDocumentTypeDefinition</a>
549     (in DOMString <a href="#createDocumentTypeDefinition-name"><var>name</var></a>)
550     raises (DOMException);
551 wakaba 1.12 <a href="#ElementTypeDefinition">ElementTypeDefinition</a> <a href="#createElementTypeDefinition">createElementTypeDefinition</a>
552 wakaba 1.5 (in DOMString <a href="#createElementTypeDefinition-name"><var>name</var></a>)
553     raises (DOMException);
554 wakaba 1.12 <a href="#AttributeDefinition">AttributeDefinition</a> <a href="#createAttributeDefinition">createAttributeDefinition</a>
555 wakaba 1.5 (in DOMString <a href="#createAttributeDefinition-name"><var>name</var></a>)
556     raises (DOMException);
557 wakaba 1.12 <a href="#Entity">Entity</a> <a href="#createGeneralEntity">createGeneralEntityDefinition</a>
558 wakaba 1.5 (in DOMString <a href="#createGeneralEntity-name"><var>name</var></a>)
559     raises (DOMException);
560 wakaba 1.12 <a href="#Notation">Notation</a> <a href="#createNotation">createNotation</a>
561 wakaba 1.5 (in DOMString <a href="#createNotation-name"><var>name</var></a>)
562     raises (DOMException);
563 wakaba 1.4 }</code></pre>
564    
565 wakaba 1.5 <dl>
566     <dt><dfn id=createDocumentTypeDefinition class=dom-method><code>createDocumentTypeDefinition</code></dfn>,
567     method</dt>
568     <dd>
569     <p>This method creates a <code>DocumentType</code> node with the specified
570     name, belonging to the document.</p>
571 wakaba 1.23 <p>The
572     <dfn id=createDocumentTypeDefinition-name class=dom-param><var>name</var></dfn>
573 wakaba 1.5 parameter is the name of the document type.</p>
574    
575     <p>When invoked, the method <em class=rfc2119>MUST</em> create and
576 wakaba 1.23 return a <a href="#DocumentType"><code>DocumentType</code></a> node with
577     the following attributes:</p>
578 wakaba 1.5 <dl>
579     <dt><code>attributes</code>, <code>parentNode</code></dt>
580     <dd><code>null</code>.</dd>
581 wakaba 1.23 <dt><a href="#elementTypes"><code>elementTypes</code></a>,
582     <a href="#entities"><code>entities</code></a>, and
583     <a href="#notations"><code>notations</code></a></dt>
584     <dd>Empty <code>NamedNodeMap</code> objects respectively.</dd>
585 wakaba 1.5 <dt><code>childNodes</code></dt>
586     <dd>An empty <code>NodeList</code> object.</dd>
587 wakaba 1.23 <dt><a href="#internalSubset"><code>internalSubset</code></a>,
588     <a href="#publicId"><code>publicId</code></a>, and
589     <a href="#systemId"><code>systemId</code></a></dt>
590 wakaba 1.5 <dd>Empty strings.</dd>
591     <dt><code>nodeName</code></dt>
592     <dd><a href="#createDocumentTypeDefinition-name"><var>name</var></a>.</dd>
593     <dt><code>ownerDocument</code></dt>
594 wakaba 1.23 <dd>The <a href="#Document"><code>Document</code></a> node over which the
595     method is invoked.</dd>
596 wakaba 1.5 </dl>
597 wakaba 1.25 <p>The returned node <em class=rfc2119>MUST NOT</em> be marked as
598     <a href="#read-only">read$B!>(Bonly</a>.</p>
599 wakaba 1.5 <p>In addition, the method <em class=rfc2119>MUST</em> be marked as
600     containing five general entity declarations: <code>amp</code>,
601     <code>lt</code>, <code>gt</code>, <code>quot</code>, and
602     <code>apos</code>.</p>
603     </dd>
604     <dt><dfn id=createElementTypeDefinition class=dom-method><code>createElementTypeDefinition</code></dfn>,
605     method</dt>
606     <dd>
607     <p>This method creates a <code>ElementTypeDefinition</code> node with the
608     specified name, belonging to the document.</p>
609     <p>The <dfn id=createElementTypeDefinition-name class=dom-param><var>name</var></dfn>
610     parameter is the name of the element type defined by the element
611     type definition.</p>
612 wakaba 1.6
613     <p>When invoked, the method <em class=rfc2119>MUST</em> create and
614     return an
615     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>
616     node with the following attributes:</p>
617     <dl>
618     <dt><a href="#attributeDefinitions"><code>attributeDefinitions</code></a></dt>
619     <dd>An empty <code>NamedNodeMap</code> object.</dd>
620     <dt><code>childNodes</code></dt>
621     <dd>An empty <code>NodeList</code> object.</dd>
622 wakaba 1.23 <dt><a href="#nodeName"><code>nodeName</code></a></dt>
623 wakaba 1.6 <dd><a href="#createElementTypeDefinition-name"><var>name</var></a>.</dd>
624     <dt><code>ownerDocument</code></dt>
625     <dd>The <code>Document</code> node over which the method is invoked.</dd>
626 wakaba 1.25 <dt><a href="#ownerDocumentTypeDefinition"><code>ownerDocumentTypeDefinition</code></a>
627     and <code>parentNode</code></dt>
628 wakaba 1.6 <dd><code>null</code>.</dd>
629     </dl>
630 wakaba 1.25 <p>The returned node <em class=rfc2119>MUST NOT</em> be marked as
631     <a href="#read-only">read$B!>(Bonly</a>.</p>
632 wakaba 1.5 </dd>
633     <dt><dfn id=createAttributeDefinition class=dom-method><code>createAttributeDefinition</code></dfn>,
634     method</dt>
635     <dd>
636     <p>This method creates a <code>AttributeDefinition</code> node with the
637     specified name, belonging to the document.</p>
638     <p>The <dfn id=createAttributeDefinition-name class=dom-param><var>name</var></dfn>
639     parameter is the name of the attribute defined by the attribute
640     definition.</p>
641 wakaba 1.6
642     <p>When invoked, the method <em class=rfc2119>MUST</em> create and
643     return an
644     <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>
645     node with the following attributes:</p>
646     <dl>
647 wakaba 1.23 <dt><a href="#allowedTokens"><code>allowedTokens</code></a></dt>
648 wakaba 1.6 <dd>An empty <code>DOMStringList</code> object.</dd>
649     <dt><code>childNodes</code></dt>
650     <dd>An empty <code>NodeList</code> object.</dd>
651 wakaba 1.23 <dt><a href="#declaredType"><code>declaredType</code></a></dt>
652 wakaba 1.6 <dd><a href="#NO_TYPE_ATTR"><code>NO_TYPE_ATTR</code></a>.</dd>
653 wakaba 1.23 <dt><a href="#defaultType"><code>defaultType</code></a></dt>
654 wakaba 1.6 <dd><a href="#UNKNOWN_DEFAULT"><code>UNKNOWN_DEFAULT</code></a>.</dd>
655 wakaba 1.23 <dt><a href="#nodeName"><code>nodeName</code></a></dt>
656 wakaba 1.6 <dd><a href="#createAttributeDefinition-name"><var>name</var></a>.</dd>
657     <dt><code>ownerDocument</code></dt>
658     <dd>The <code>Document</code> node over which the method is invoked.</dd>
659 wakaba 1.25 <dt><a href="#ownerElementTypeDefinition"><code>ownerElementTypeDefinition</code></a>
660     and <code>parentNode</code></dt>
661     <dd><code>null</code>.</dd>
662 wakaba 1.6 </dl>
663 wakaba 1.25 <p>The returned node <em class=rfc2119>MUST NOT</em> be marked as
664     <a href="#read-only">read$B!>(Bonly</a>.</p>
665 wakaba 1.6
666 wakaba 1.23 <!-- This requirement, if not droped, should be part of xml-id spec.
667 wakaba 1.6 <div class=ed>
668     <p>@@ Should we keep these statements?:
669     However, if the &lt;cfg::cfg|xml-id> configuration
670     parameter is set to <code>true</code> and the <var>name</var>
671     is <code>xml:id</code>, then the [CODE(DOMa)@en[[[declaredType]]]]
672     attribute is set to <code>ID_ATTR</code>.
673     [CODE(DOMa)@en[[[defaultType]]]]?</p>
674 wakaba 1.23 </div>-->
675 wakaba 1.5 </dd>
676     <dt><dfn id=createGeneralEntity class=dom-method><code>createGeneralEntity</code></dfn>,
677     method</dt>
678     <dd>
679 wakaba 1.7 <p>This method creates a <a href="#Entity"><code>Entity</code></a> node
680     with the specified name, which represents a general entity, belonging to
681     the document.</p>
682 wakaba 1.5 <p>The <dfn id=createGeneralEntity-name class=dom-param><var>name</var></dfn>
683     parameter is the name of the general entity.</p>
684 wakaba 1.7
685     <p>When invoked, the method <em class=rfc2119>MUST</em> create and return
686     an <a href="#Entity"><code>Entity</code></a> node with the following
687     attributes:</p>
688     <dl>
689     <dt><code>childNodes</code></dt>
690     <dd>An empty <code>NodeList</code> object.</dd>
691     <dt><code>manakaiDeclarationBaseURI</code>,
692 wakaba 1.25 <code>manakaiEntityBaseURI</code>, and <code>manakaiEntityURI</code>
693     <cite class="bibref normative">[<a href="#ref-MANAKAI">MANAKAI</a>]</cite></dt>
694 wakaba 1.27 <dd><p class=section-info>This entry is applied only to implementations
695     that support these attributes.</p>
696    
697     <p>No explicit value is set.</p></dd>
698     <dt><a href="#hasReplacementTree"><code>hasReplacementTree</code></a> and
699     <a href="#isExternallyDeclared"><code>isExternallyDeclared</code></a></dt>
700     <dd><p><code>false</code>.</p></dd>
701 wakaba 1.7 <dt><code>nodeName</code></dt>
702     <dd><a href="#createGeneralEntity-name"><var>name</var></a>.</dd>
703     <dd>
704     <div class="note memo">
705     <p>It is not an error for
706     <a href="#createGeneralEntity-name"><var>name</var></a> matching
707     to the name of one of predefined general parsed entities in
708     <abbr>XML</abbr> or <abbr>HTML</abbr>. For example,
709     <a href="#createGeneralEntity-name"><var>name</var></a> might be
710     <code>amp</code>, resulting in an
711     <a href="#Entity"><code>Entity</code></a> node
712     with its <code>nodeName</code> attribute set to <code>amp</code>.</p>
713     </div>
714     </dd>
715 wakaba 1.25 <dt><a href="#notationName"><code>notationName</code></a>,
716     <a href="#ownerDocumentTypeDefinition"><code>ownerDocumentTypeDefinition</code></a>,
717     and <code>parentNode</code></dt>
718     <dd><code>null</code>.</dd>
719 wakaba 1.7 <dt><code>ownerDocument</code></dt>
720     <dd>The <code>Document</code> node over which the method is invoked.</dd>
721 wakaba 1.23 <dt><a href="#publicId"><code>publicId</code></a> and
722     <a href="#systemId"><code>systemId</code></a></dt>
723 wakaba 1.7 <dd><code>null</code>.</dd>
724     <dd class=ed>@@ publicId and systemId should be empty string?</dd>
725     </dl>
726 wakaba 1.25 <p>The returned node <em class=rfc2119>MUST NOT</em> be marked as
727     <a href="#read-only">read$B!>(Bonly</a>.</p></dd>
728 wakaba 1.5 <dt><dfn id=createNotation class=dom-method><code>createNotation</code></dfn>,
729     method</dt>
730     <dd>
731     <p>This method creates a <code>Notation</code> node with the
732     specified name, belonging to the document.</p>
733     <p>The <dfn id=createNotation-name class=dom-param><var>name</var></dfn>
734     parameter is the name of the notation.</p>
735 wakaba 1.7
736     <p>When invoked, the method <em class=rfc2119>MUST</em> create and return
737     a <code>Notation</code> node with the following attributes:</p>
738     <dl>
739     <dt><code>childNodes</code></dt>
740     <dd>An empty <code>NodeList</code> object.</dd>
741 wakaba 1.25 <dt><code>manakaiDeclarationBaseURI</code>
742     <cite class="bibref normative">[<a href="#ref-MANAKAI">MANAKAI</a>]</cite></dt>
743 wakaba 1.27 <dd><p class=section-info>This entry is applied only to implementations
744     that support these attributes.</p>
745    
746     <p>No explicit value is set.</p></dd>
747 wakaba 1.7 <dt><code>nodeName</code></dt>
748     <dd><a href="#createNotation-name"><var>name</var></a>.</dd>
749     <dt><code>ownerDocument</code></dt>
750 wakaba 1.27 <dd><p>The <a href="#Document"><code>Document</code></a> node over which
751     the method is invoked.</p></dd>
752 wakaba 1.25 <dt><a href="#ownerDocumentTypeDefinition"><code>ownerDocumentTypeDefinition</code></a>
753     and <code>parentNode</code></dt>
754     <dd><code>null</code>.</dd>
755 wakaba 1.23 <dt><a href="#publicId"><code>publicId</code></a> and
756     <a href="#systemId"><code>systemId</code></a></dt>
757 wakaba 1.7 <dd><code>null</code>.</dd>
758     <dd class=ed>@@ publicId and systemId should be empty string?</dd>
759     </dl>
760 wakaba 1.25 <p>The returned node <em class=rfc2119>MUST NOT</em> be marked as
761     <a href="#read-only">read$B!>(Bonly</a>.</p></dd>
762 wakaba 1.5 </dl>
763 wakaba 1.4
764 wakaba 1.7 <p>These methods <em class=rfc2119>MUST</em> raise an
765 wakaba 1.23 <code>INVALID_CHARACTER_ERR</code> if <var>name</var> is <em>not</em> a legal
766     <code>Name</code>
767     <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>,
768     <a href="#ref-XML11">XML11</a>]</cite> according to the <abbr>XML</abbr>
769     version specified in the <code>xmlVersion</code> attribute of the
770     <a href="#Document"><code>Document</code></a> node.</p>
771 wakaba 1.7
772     <div class="note memo">
773     <p>Non$B!>(B<abbr>XML</abbr> case is intentionally left unspecified for now,
774 wakaba 1.23 since <abbr>DOM</abbr> Level 3 Core specification
775     <cite class="bibref normative">[<a href="#ref-DOM3CORE">DOM3CORE</a>]</cite>
776     does not define it for <a href="#Document"><code>Document</code></a>
777     methods.</p>
778 wakaba 1.7
779     <p><var>name</var> does not have to be a namespace qualified name.</p>
780     </div>
781 wakaba 1.4
782     </div>
783    
784 wakaba 1.16
785     <div class=section id=section-documenttype>
786     <h3>Modifications to the <code id=DocumentType>DocumentType</code>
787     Interface</h3>
788    
789     <p>A <a href="#DocumentType"><code>DocumentType</code></a> interface
790     <em class=rfc2119>MAY</em> contain zero or more
791 wakaba 1.26 <code>ProcessingInstruction</code> nodes in the <code>NodeList</code> object
792     contained in the <code>childNodes</code> attribute of the
793 wakaba 1.16 <a href="#DocumentType"><code>DocumentType</code></a> node.</p>
794    
795     <p>If the <a href="#DocumentType"><code>DocumentType</code></a> node is created
796     during the process to create a <abbr>DOM</abbr> from an <abbr>XML</abbr>
797     document, the <code>NodeList</code> object in the <code>childNodes</code>
798     object <em class=rfc2119>MUST</em> contains the
799 wakaba 1.26 <code>ProcessingInstruction</code> nodes representing the processing
800     instructions in the document type definition of the document processed
801 wakaba 1.23 <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>,
802     <a href="#ref-XML11">XML11</a>]</cite> by the <abbr>XML</abbr> processor. If
803     the <a href="#DocumentType"><code>DocumentType</code></a> node is marked as
804     <a href="#read-only">read$B!>(Bonly</a>, then all the child nodes
805     <em class=rfc2119>MUST</em> also be marked as
806     <a href="#read-only">read$B!>(Bonly</a>.</p>
807 wakaba 1.16
808     <p>If a <a href="#DocumentType"><code>DocumentType</code></a> node is created
809 wakaba 1.23 from a
810     <a href="http://www.w3.org/TR/2004/REC-xml-infoset-20040204/#infoitem.doctype">document
811     type declaration information item</a>
812     <cite class="bibref normative">[<a href="#ref-INFOSET">INFOSET</a>]</cite>,
813 wakaba 1.16 the <code>NodeList</code> object in the <code>childNodes</code> attribute
814     of the node <em class=rfc2119>MUST</em> contain the
815 wakaba 1.26 <code>ProcessingInstruction</code> nodes created from any
816 wakaba 1.25 <a href="http://www.w3.org/TR/2004/REC-xml-infoset-20040204/#infoitem.pi">processing
817     instruction information items</a> in the list in the [children] property of the
818     <a href="http://www.w3.org/TR/2004/REC-xml-infoset-20040204/#infoitem.doctype">document
819     type declaration item</a> in the same order.</p>
820 wakaba 1.16
821     <p>If a <a href="#DocumentType"><code>DocumentType</code></a> node is mapped to
822     a document type declaration information item, the list in the [children]
823     property <em class=rfc2119>MUST</em> contain the processng instruction
824 wakaba 1.26 information items created from the <code>ProcessingInstruction</code> nodes
825 wakaba 1.16 in the <code>NodeList</code> object in the <code>childNodes</code> attribute
826     of the <a href="#DocumentType"><code>DocumentType</code></a> node.</p>
827    
828     <p>The implementation of the
829     <a href="#DocumentType"><code>DocumentType</code></a> interface
830 wakaba 1.24 <em class=rfc2119>MUST</em> be modified as the following
831     <a href="#idl-fragment"><abbr>IDL</abbr> fragment</a>:</p>
832 wakaba 1.16 <pre class=idl><code>// Modifications to the DocumentType interface
833     attribute DOMString <a href="#publicId">publicId</a>;
834     attribute DOMString <a href="#systemId">systemId</a>;
835    
836     attribute DOMString <a href="#internalSubset">internalSubset</a>;
837     </code></pre>
838    
839     <p>The <code id=publicId>publicId</code> attribute and the
840     <code id=systemId>systemId</code> attribute of
841     <a href="#DocumentType"><code>DocumentType</code></a>,
842     <a href="#Entity"><code>Entity</code></a>, and
843     <a href="#Notation"><code>Notation</code></a> interfaces are no longer
844     read$B!>(Bonly.</p>
845    
846     <p>On setting, the attribute <em class=rfc2119>MUST</em> raise a
847 wakaba 1.23 <code>NO_MODIFICATION_ALLOWED_ERR</code> if the node is
848     <a href="#read-only">read$B!>(Bonly</a>. Otherwise, it <em class=rfc2119>MUST</em>
849     set the specified value as the value associated to the attribute. No
850     normalization, relative reference resolution, or lexical validation is
851 wakaba 1.28 performed. <span class=ed>@@ If the new value is <code>null</code>, should an
852     empty string be set?</span></p>
853 wakaba 1.16
854     <div class="note memo">
855     <p>Setting an invalid identifier might make the node unserializable.
856 wakaba 1.28 Setting a public identifier while leaving system identifier unspecified
857 wakaba 1.16 would also make the <a href="#DocumentType"><code>DocumentType</code></a>
858     or <a href="#Entity"><code>Entity</code></a> node unserializable.</p>
859     </div>
860    
861     <div class=ed>
862     <p>ISSUE: In HTML5, Firefox 1.5, and Opera 9, not specifying public or system identifier results in empty strings.</p>
863     </div>
864    
865     <p>The <code id=internalSubset>internalSubset</code> attribute of the
866     <a href="#DocumentType"><code>DocumentType</code></a> interface is no longer
867     read$B!>(Bonly.</p>
868    
869     <p>On setting, the attribute <em class=rfc2119>MUST</em> raise a
870 wakaba 1.23 <code>NO_MODIFICATION_ALLOWED_ERR</code> if the node is
871     <a href="#read-only">read$B!>(Bonly</a>. Otherwise, it <em class=rfc2119>MUST</em>
872     set the specified value as the value associated to the attribute. No
873     normalization, or lexical validation is performed. <span class=ed>@@ If the
874     new value is <code>null</code>, should an empty string be set?</span></p>
875 wakaba 1.16
876     </div>
877    
878 wakaba 1.4 <div class=section id=section-documenttypedefinition>
879 wakaba 1.7 <h3>The <code>DocumentTypeDefinition</code> Interface</h3>
880 wakaba 1.4
881 wakaba 1.22 <p>The <a href="#DocumentType"><code>DocumentType</code></a> nodes
882     <em class=rfc2119>MUST</em> also implement the
883     <a href="#DocumentTypeDefinition"><code>DocumentTypeDefinition</code></a>
884     interface.</p>
885    
886     <p>An instance of the
887     <a href="#DocumentTypeDefinition"><code>DocumentTypeDefinition</code></a>
888     interface <em class=rfc2119>MUST</em> be able to be obtained by using
889     binding$B!>(Bspecific casting methods on an instance of the
890     <a href="#DocumentType"><code>DocumentType</code></a> interface (if such
891     casting methods are available) or by using the method <code>getFeature</code>
892     with parameter values
893     <a href="#feature-XDoctype"><code>http://suika.fam.cx/www/2006/feature/XDoctype</code></a>
894     and <a href="#feature-XDoctype-3.0"><code>3.0</code></a> respectively (if the
895     <a href="#DocumentType"><code>DocumentType</code></a> node supports the
896     feature <code>Core</code> version <code>3.0</code>
897 wakaba 1.23 <cite class="bibref normative">[<a href="#ref-DOM3CORE">DOM3CORE</a>]</cite>).</p>
898 wakaba 1.22
899 wakaba 1.15 <p>The
900     <a href="#DocumentTypeDefinition"><code>DocumentTypeDefinition</code></a>
901 wakaba 1.24 interface <em class=rfc2119>MUST</em> be implemented as the following
902     <a href="#idl-fragment"><abbr>IDL</abbr> fragment</a>:</p>
903 wakaba 1.4 <pre class=idl><code>interface <dfn id=DocumentTypeDefinition><code>DocumentTypeDefinition</code></dfn> {
904 wakaba 1.8 readonly attribute NamedNodeMap <a href="#elementTypes">elementTypes</a>;
905     readonly attribute NamedNodeMap <a href="#generalEntities">generalEntities</a>;
906     readonly attribute NamedNodeMap <a href="#notations">notations</a>;
907    
908 wakaba 1.13 <a href="#ElementTypeDefinition">ElementTypeDefinition</a> <a href="#getElementTypeDefinitionNode">getElementTypeDefinitionNode</a>
909     (in DOMString <a href="#getElementTypeDefinitionNode-name"><var>name</var></a>);
910     <a href="#Entity">Entity</a> <a href="#getGeneralEntityNode">getGeneralEntityNode</a>
911     (in DOMString <a href="#getGeneralEntityNode-name"><var>name</var></a>);
912     <a href="#Notation">Notation</a> <a href="#getNotationNode">getNotationNode</a>
913     (in DOMString <a href="#getNotationNode-name"><var>name</var></a>);
914    
915     void <a href="#setElementTypeDefinitionNode">setElementTypeDefinitionNode</a>
916     (in DOMString <a href="#setElementTypeDefinitionNode-node"><var>node</var></a>)
917     raises (DOMException);
918     void <a href="#setGeneralEntityNode">setGeneralEntityNode</a>
919     (in DOMString <a href="#setGeneralEntityNode-node"><var>node</var></a>)
920     raises (DOMException);
921     void <a href="#setNotationNode">setNotationNode</a>
922     (in DOMString <a href="#setNotationNode-node"><var>node</var></a>)
923     raises (DOMException);
924 wakaba 1.4 }</code></pre>
925    
926 wakaba 1.8 <dl>
927     <dt><dfn id=elementTypes class=dom-attr><code>elementTypes</code></dfn> of
928     type <code>NamedNodeMap</code>, read$B!>(Bonly</dt>
929 wakaba 1.22 <dd><p>A <a href="#live">live</a> <code>NamedNodeMap</code> object that
930     contains all the element type definitions belonging to the
931     <a href="#DocumentType"><code>DocumentType</code></a> node.</p>
932 wakaba 1.8
933     <p>On getting, the attribute <em class=rfc2119>MUST</em> return the
934     <code>NamedNodeMap</code> object that contains all the
935     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>
936     nodes belonging to the <code>DocumentType</code> node. The
937     <code>NamedNodeMap</code> object <em class=rfc2119>MUST</em> be read$B!>(Bonly
938 wakaba 1.23 if and only if the node is <a href="#read-only">read$B!>(Bonly</a>. The
939     <code>NamedNodeMap</code> object <em class=rfc2119>MUST</em> be
940     <a href="#live">live</a>.</p>
941 wakaba 1.8
942     <p>If the <code>DocumentType</code> node is created during the process
943     to create a <abbr>DOM</abbr> from an <abbr>XML</abbr> document, the following
944     requirements are applied: The <code>NamedNodeMap</code> object in the
945     <a href="#elementTypes"><code>elementType</code></a> attribute
946     <em class=rfc2119>MUST</em> be so transformed that the object contains
947     the <code>ElementTypeDefinition</code> nodes for the element types
948     whose name is presented as the <code>Name</code> of the element type or
949 wakaba 1.23 attribute definition list declarations processed
950     <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>,
951     <a href="#ref-XML11">XML11</a>]</cite> by the <abbr>XML</abbr>
952 wakaba 1.21 processor. If there are more than one element type declarations for an
953 wakaba 1.8 element type, then the declarations other than the first one
954     <em class=rfc2119>MUST</em> be ignored for the purpose of constructing the
955     <code>NamedNodeMap</code> object.</p></dd>
956     <dt><dfn id=generalEntities class=dom-attr><code>generalEntities</code></dfn>
957     of type <code>NamedNodeMap</code>, read$B!>(Bonly</dt>
958 wakaba 1.22 <dd><p>A <a href="#live">live</a> <code>NamedNodeMap</code> object that
959     contains all the general entities belonging to the
960     <a href="#DocumentType"><code>DocumentType</code></a> node.</p>
961 wakaba 1.8
962     <p>On getting, the attribute <em class=rfc2119>MUST</em> return the
963 wakaba 1.25 same value as the <code id=entities>entities</code> attribute (defined in the
964 wakaba 1.22 <a href="#DocumentType"><code>DocumentType</code></a> interface) of the same
965     node.</p>
966 wakaba 1.8
967     <div class="note memo">
968     <p>This attribute is part of the interface for historical reason.</p>
969     </div></dd>
970     <!--
971 wakaba 1.4 All entities declared in the document type definition
972     contained in or referenced from the document entity
973     might not be exposed through this collection, depending
974     on the information provided by the XML processor for
975     the DOM implementation. In particular, it might not
976     contain any entity if entity references are expanded
977     at the parse time. An implementation [['''MUST NOT''']]
978     expose an [CODE(DOMi)@en[[[Entity]]]] node whose [CODE(DOMa)@en[[[nodeName]]]]
979     is equal to the name of one of five predefined general entities in
980     XML through the collection as the result of parsing of an XML
981     document that has no error. Duplicate entity declarations are also discarded.
982    
983     The attribute [['''MUST''']] return the [CODE(DOMi)@en[[[NamedNodeMap]]]]
984     object that contains all the [CODE(DOMi)@en[[[Entity]]]] nodes
985     representing general entities belong to the node. The returned
986     [CODE(DOMi)@en[[[NamedNodeMap]]]] object [['''MUST''']] be read-only if and only if
987     the node is read-only. Note that the [CODE(DOMi)@en[[[NamedNodeMap]]]] object is live
988     and therefore any change of read-only flag on the node is immediately
989     reflected by that of the object.
990 wakaba 1.8 -->
991     <dt><dfn id=notations class=dom-attr><code>notations</code></dfn> of type
992     <code>notations</code>, read$B!>(Bonly</code>
993 wakaba 1.22 <dd><p>A <a href="#live">live</a> <code>NamedNodeMap</code> object that
994     contains all the notations belonging to the
995     <a href="#DocumentType"><code>DocumentType</code></a> node.</p>
996 wakaba 1.8
997     <p>On getting, the attribute <em class=rfc2119>MUST</em> return the
998     same value as the <code>notations</code> attribute (defined in the
999 wakaba 1.22 <a href="#DocumentType"><code>DocumentType</code></a> interface) of the same
1000     node.</p>
1001 wakaba 1.8
1002     <div class="note memo">
1003     <p>This attribute is part of the interface for historical reason.</p>
1004     <p>Implementations are not required to implement the
1005 wakaba 1.22 <code>notations</code> attribute twice (for
1006     <a href="#DocumentType"><code>DocumentType</code></a> and
1007     <a href="#DocumentTypeDefinition"><code>DocumentTypeDefinition</code></a>
1008     interfaces); they share exactly same definition.</p>
1009 wakaba 1.8 </div></dd>
1010     <!--
1011 wakaba 1.4 If the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]] node is
1012     created from an XML document, duplicate notation declarations, if any, in DTD
1013     [['''MUST NOT''']] result in a node in the [CODE(DOMi)@en[[[NamedNodeMap]]]]
1014     object and only the first declaration [['''MUST''']] be
1015     made available as a [CODE(DOMi)@en[[[Notation]]]] node.
1016    
1017     ;; This definition is based on one for the
1018     [CODE(DOMa)@en[[[notations]]]] attribute of the
1019     [CODE(DOMi)@en[[[DocumentType]]]] interface in DOM XML module.
1020     Since duplication is violation to the Validity Constraint,
1021     XML parsers might vary on how notations are notified to
1022     the application. In particular, [CODE(InfoProp)@en[[[notations]]]]
1023     property of the document information item in XML Information Set
1024     is so defined that in case ''any'' notation is declared for
1025     multiple times then the property has no value.
1026    
1027     The attribute [['''MUST''']] return the [CODE(DOMi)@en[[[NamedNodeMap]]]]
1028     object that contains all the [CODE(DOMi)@en[[[Notation]]]] nodes
1029     representing notations belong to the node. The returned
1030     [CODE(DOMi)@en[[[NamedNodeMap]]]] object [['''MUST''']] be read-only if and only if
1031     the node is read-only. Note that the [CODE(DOMi)@en[[[NamedNodeMap]]]] object is live
1032     and therefore any change of read-only flag on the node is immediately
1033     reflected by that of the object.
1034 wakaba 1.8 -->
1035 wakaba 1.20 <dt><dfn id=getElementTypeDefinitionNode class=dom-method><code>getElementTypeDefinitionNode</code></dfn>,
1036     method</dt>
1037     <dd><p>Returns the
1038     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> node
1039     with the specified name.</p>
1040    
1041     <p>The
1042     <dfn id=getElementTypeDefinitionNode-name class=dom-param><var>name</var></dfn>
1043     parameter is the name of the element type.</p>
1044    
1045     <p>When invoked, the method <em class=rfc2119>MUST</em> return the
1046     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> node,
1047     whose <a href="#nodeName"><code>nodeName</code></a> is equal to
1048     <a href="#getElementTypeDefinitionNode-name"><var>name</var></a>, in the
1049     <code>NamedNodeMap</code> object in the
1050     <a href="#elementTypes"><code>elementTypes</code></a> attribute of the
1051     node. If there is no such node, it <em class=rfc2119>MUST</em> return
1052     <code>null</code>.</p></dd>
1053     <dt><dfn id=getGeneralEntityNode class=dom-method><code>getGeneralEntityNode</code></dfn>,
1054     method</dt>
1055     <dd><p>Returns the <a href="#Entity"><code>Entity</code></a> node
1056     with the specified name.</p>
1057    
1058 wakaba 1.26 <p>The
1059     <dfn id=getGeneralEntityNode-name class=dom-param><var>name</var></dfn>
1060 wakaba 1.20 parameter is the name of the general entity.</p>
1061    
1062     <p>When invoked, the method <em class=rfc2119>MUST</em> return the
1063     <a href="#Entity"><code>Entity</code></a> node,
1064     whose <a href="#nodeName"><code>nodeName</code></a> is equal to
1065 wakaba 1.26 <a href="#getGeneralEntityNode-name"><var>name</var></a>, in the
1066 wakaba 1.20 <code>NamedNodeMap</code> object in the
1067     <a href="#entities"><code>entities</code></a> attribute of the
1068     node. If there is no such node, it <em class=rfc2119>MUST</em> return
1069     <code>null</code>.</p></dd>
1070     <dt><dfn id=getNotationNode class=dom-method><code>getNotationNode</code></dfn>,
1071     method</dt>
1072 wakaba 1.23 <dd><p>Returns the <a href="#Notation"><code>Notation</code></a> node
1073 wakaba 1.20 with the specified name.</p>
1074 wakaba 1.4
1075 wakaba 1.20 <p>The
1076     <dfn id=getNotationNode-name class=dom-param><var>name</var></dfn>
1077     parameter is the name of the notation.</p>
1078    
1079     <p>When invoked, the method <em class=rfc2119>MUST</em> return the
1080     <a href="#Notation"><code>Notation</code></a> node,
1081     whose <a href="#nodeName"><code>nodeName</code></a> is equal to
1082     <a href="#getNotationNode-name"><var>name</var></a>, in the
1083     <code>NamedNodeMap</code> object in the
1084     <a href="#notations"><code>notations</code></a> attribute of the
1085     node. If there is no such node, it <em class=rfc2119>MUST</em> return
1086     <code>null</code>.</p></dd>
1087     <dt><dfn id=setElementTypeDefinitionNode class=dom-method><code>setElementTypeDefinitionNode</code></dfn>,
1088     method</dt>
1089 wakaba 1.27 <dd><p>Associate an
1090     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>
1091     node with the <a href="#DocumentType"><code>DocumentType</code></a> node.</p>
1092    
1093     <p>The
1094     <dfn id=setElementTypeDefinitionNode-node class=dom-param><var>node</var></dfn>
1095     parameter is the node to associate.</p>
1096    
1097     <p>When invoked, the method <em class=rfc2119>MUST</em> follow the rules
1098     to <a href="#algorithm-attach-node">attach a node</a>, where
1099     <a href="#attach-node-n"><var>n</var></a> is the
1100     <a href="#DocumentType"><code>DocumentType</code></a> node,
1101     <a href="#attach-node-l"><var>l</var></a> is the
1102     <a href="#elementTypes"><code>elementTypes</code></a> attribute value of the
1103     <a href="#DocumentType"><code>DocumentType</code></a> node,
1104     <a href="#attach-node-node"><var>node</var></a> is the
1105     <a href="#setElementTypeDefinitionNode-node"><var>node</var></a>, and
1106     <a href="#attach-node-owner-attr"><var>owner-attr</var></a> is the
1107     <a href="#ownerDocumentTypeDefinition"><code>ownerDocumentTypeDefinition</code></a>
1108     attribute.</p></dd>
1109 wakaba 1.20 <dt><dfn id=setGeneralEntityNode class=dom-method><code>setGeneralEntityNode</code></dfn>,
1110     method</dt>
1111 wakaba 1.27 <dd><p>Associate an <a href="#Entity"><code>Entity</code></a>
1112     node with the <a href="#DocumentType"><code>DocumentType</code></a> node.</p>
1113    
1114     <p>The
1115     <dfn id=setGeneralEntityNode-node class=dom-param><var>node</var></dfn>
1116     parameter is the node to associate.</p>
1117    
1118     <p>When invoked, the method <em class=rfc2119>MUST</em> follow the rules
1119     to <a href="#algorithm-attach-node">attach a node</a>, where
1120     <a href="#attach-node-n"><var>n</var></a> is the
1121     <a href="#DocumentType"><code>DocumentType</code></a> node,
1122     <a href="#attach-node-l"><var>l</var></a> is the
1123     <a href="#entities"><code>entities</code></a> attribute value of the
1124     <a href="#DocumentType"><code>DocumentType</code></a> node,
1125     <a href="#attach-node-node"><var>node</var></a> is the
1126     <a href="#setGeneralEntityNode-node"><var>node</var></a>, and
1127     <a href="#attach-node-owner-attr"><var>owner-attr</var></a> is the
1128     <a href="#ownerDocumentTypeDefinition"><code>ownerDocumentTypeDefinition</code></a>
1129     attribute.</p></dd>
1130 wakaba 1.20 <dt><dfn id=setNotationNode class=dom-method><code>setNotationNode</code></dfn>,
1131     method</dt>
1132 wakaba 1.27 <dd><p>Associate an <a href="#Notation"><code>Notation</code></a>
1133     node with the <a href="#DocumentType"><code>DocumentType</code></a> node.</p>
1134    
1135     <p>The <dfn id=setNotationNode-node class=dom-param><var>node</var></dfn>
1136     parameter is the node to associate.</p>
1137    
1138     <p>When invoked, the method <em class=rfc2119>MUST</em> follow the rules
1139     to <a href="#algorithm-attach-node">attach a node</a>, where
1140     <a href="#attach-node-n"><var>n</var></a> is the
1141     <a href="#DocumentType"><code>DocumentType</code></a> node,
1142     <a href="#attach-node-l"><var>l</var></a> is the
1143     <a href="#notations"><code>notations</code></a> attribute value of the
1144     <a href="#DocumentType"><code>DocumentType</code></a> node,
1145     <a href="#attach-node-node"><var>node</var></a> is the
1146     <a href="#setNotationNode-node"><var>node</var></a>, and
1147     <a href="#attach-node-owner-attr"><var>owner-attr</var></a> is the
1148     <a href="#ownerDocumentTypeDefinition"><code>ownerDocumentTypeDefinition</code></a>
1149     attribute.</p></dd>
1150 wakaba 1.8 </dl>
1151 wakaba 1.4
1152 wakaba 1.27 <p>When a <dfn id=algorithm-attach-node title="attach a node">node is
1153     attached</dfn>, the rules below, with parameters
1154     <dfn id=attach-node-n><var>n</var></dfn>,
1155     <dfn id=attach-node-l><var>l</var></dfn>,
1156     <dfn id=attach-node-node><var>node</var></dfn>, and
1157     <dfn id=attach-node-owner-attr><var>owner-attr</var></dfn>,
1158     <em class=rfc2119>MUST</em> be followed:</p>
1159     <ol>
1160     <li><p>Let
1161     <dfn id=attach-node-r><var>r</var></dfn> be the node in
1162     <var>l</var> whose <code>nodeName</code> attribute value is equal to the
1163     <code>nodeName</code> attribute value of <var>node</var>, if any.</p></li>
1164     <li><p>If <var>r</var> is different from <code>null</code> and <var>r</var>
1165     is same node as <var>node</var>, then abort these steps.</p></li>
1166     <li><p>If <var>n</var> is <a href="#read-only">read$B!>(Bonly</a>, then raise a
1167     <code>NO_MODIFICATION_ALLOWED_ERR</code> and abort these steps.</p></li>
1168     <li><p>If the <code>ownerDocument</code> attribute value of <var>node</var>
1169     is different from that of <var>n</var>, then raise a
1170     <code>WRONG_DOCUMENT_ERR</code> and abort these steps.</p></li>
1171     <li><p>If the value of the attribute <var>owner-attr</var> of <var>node</var>
1172     is different from <code>null</code>, then raise a
1173     <code>HIERARCHY_REQUEST_ERR</code> and abort these steps.</p></li>
1174     <li><p>If <var>r</var> is a node, then remove it from <var>r</var>.</p>
1175    
1176     <div class="note memo">
1177     <p>By the removal of <var>r</var>, the attribute <var>owner-attr</var> of
1178     <var>r</var> is set to <code>null</code>.</p>
1179     </div></li>
1180     <li><p>Add <var>node</var> to <var>l</var>.</p>
1181    
1182     <div class="note memo">
1183     <p>By the addition of <var>node</var>, the attribute <var>owner-attr</var> of
1184     <var>node</var> is set to <var>n</var>.</p>
1185     </div></li>
1186     </ol>
1187    
1188 wakaba 1.8 <div class=ed>
1189     <p>A future version of this interface might define the
1190     <code>parameterEntities</code> and getter/setter for parameter entities.
1191     </div>
1192 wakaba 1.4
1193     </div>
1194    
1195     <div class=section id=section-elementtypedefinition>
1196 wakaba 1.7 <h3>The <code>ElementTypeDefinition</code> Interface</h3>
1197 wakaba 1.4
1198 wakaba 1.17 <p>The nodes of type
1199     <a href="#ELEMENT_TYPE_DEFINITION_NODE"><code>ELEMENT_TYPE_DEFINITION_NODE</code></a>
1200 wakaba 1.21 represents an element type definition. Such a node
1201     <em class=rfc2119>MUST</em> implement the
1202 wakaba 1.17 <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>
1203     interface, which extends the <a href="#Node"><code>Node</code></a>
1204     interface.</p>
1205    
1206     <p>An element type definition represents a definition of the element type.
1207     It is corresponding to the element type declaration in <abbr>DTD</abbr>.
1208     However, an
1209     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> node
1210     does not represent the element type definition in <abbr>DTD</abbr> itself.
1211     Even if there are more than one element type declarations for an element type
1212     in <abbr>DTD</abbr>, the result <abbr>DOM</abbr> will contain only an
1213     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>
1214     node for that element type. In addition, if there are attribute definition
1215     declarations for an element type, even when there is no element type
1216     declaration for that element type, the <abbr>DOM</abbr> will contain an
1217     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>
1218     node for that element type.</p>
1219    
1220 wakaba 1.21 <p>An <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>
1221     node cannot be a child of any node. An
1222     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> node
1223     cannot have any child node.</p>
1224    
1225 wakaba 1.15 <p>The <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>
1226 wakaba 1.24 interface <em class=rfc2119>MUST</em> be implemented as the following
1227     <a href="#idl-fragment"><abbr>IDL</abbr> fragment</a>:</p>
1228 wakaba 1.10 <pre class=idl><code>interface <dfn id=ElementTypeDefinition><code>ElementTypeDefinition</code></dfn> : <a href="#Node">Node</a> {
1229 wakaba 1.19 readonly attribute <a href="#DocumentType">DocumentType</a> <a href="#ownerDocumentTypeDefinition">ownerDocumentTypeDefinition</a>;
1230 wakaba 1.10
1231 wakaba 1.21 readonly attribute NamedNodeMap <a href="#attributeDefinitions">attributeDefinitions</a>;
1232     <a href="#AttributeDefinition">AttributeDefinition</a> <a href="#getAttributeDefinitionNode">getAttributeDefinitionNode</a>
1233     (in DOMString <a href="#getAttributeDefinitionNode-name"><var>name</var></a>);
1234     void <a href="#setAttributeDefinitionNode">setAttributeDefinitionNode</a>
1235 wakaba 1.26 (in <a href="#AttributeDefinition">AttributeDefinition</a> <a href="#setAttributeDefinitionNode-node"><var>node</var></a>)
1236 wakaba 1.21 raises (DOMException);
1237 wakaba 1.4 }</code></pre>
1238    
1239 wakaba 1.19 <dl>
1240     <dt><dfn id=ownerDocumentTypeDefinition class=dom-attr><code>ownerDocumentTypeDefinition</code></dfn>
1241     of type <a href="#DocumentType"><code>DocumentType</code></a>, read$B!>(Bonly</dt>
1242     <dd><p>The
1243     <a href="#ownerDocumentTypeDefinition"><code>ownerDocumentTypeDefinition</code></a>
1244     attribute of
1245     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>,
1246     <a href="#Entity"><code>Entity</code></a>, and
1247 wakaba 1.23 <a href="#Notation"><code>Notation</code></a> interfaces contain the
1248 wakaba 1.19 <a href="#DocumentType"><code>DocumentType</code></a> node to which the node
1249     is attached.</p>
1250    
1251     <p>On getting, the attribute <em class=rfc2119>MUST</em> return a
1252     <a href="#DocumentType"><code>DocumentType</code></a> node. It
1253     <em class=rfc2119>MUST</em> be such a node that whose
1254     <a href="#elementTypes"><code>elementTypes</code></a> (for an
1255     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>
1256     node), <a href="#entities"><code>entities</code></a> (for an
1257     <a href="#Entity"><code>Entity</code></a> node), or
1258     <a href="#notations"><code>notations</code></a> (for a
1259     <a href="#Notation"><code>Notation</code></a> node) attribute contains the
1260     <code>NamedNodeMap</code> object that contains the node. If there is no such
1261     a <a href="#DocumentType"><code>DocumentType</code></a> node,
1262     then <code>null</code> <em class=rfc2119>MUST</em> be returned.</p></dd>
1263 wakaba 1.21 <dt><dfn id=attributeDefinitions class=dom-attr><code>attributeDefinitions</code></dfn>
1264     of type NamedNodeMap, read$B!>(Bonly</dt>
1265 wakaba 1.22 <dd><p>A <a href="#live">live</a> <code>NamedNodeMap</code> object that
1266     contains all the attribute definitions belonging to the
1267 wakaba 1.21 <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>
1268     node.</p>
1269    
1270     <p>On getting, the attribute <em class=rfc2119>MUST</em> return the
1271     <code>NamedNodeMap</code> object that contains all the
1272     <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node
1273     belonging to the
1274     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> node.
1275     The <code>NamedNodeMap</code> object <em class=rfc2119>MUST</em> be
1276 wakaba 1.23 read$B!>(Bonly if and only if the node is <a href="#read-only">read$B!>(Bonly</a>.
1277     The <code>NamedNodeMap</code> object <em class=rfc2119>MUST</em> be
1278 wakaba 1.22 <a href="#live">live</a>.</p>
1279 wakaba 1.21
1280     <p>If the
1281     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> node
1282     is created during the process to create a <abbr>DOM</abbr> from an
1283     <abbr>XML</abbr> document, the following requirements are applied: The
1284     <code>NamedNodeMap</code> object in the
1285     <a href="#attributeDefinitions"><code>attributeDefinitions</code></a>
1286     attribute <em class=rfc2119>MUST</em> be so transformed that the object
1287     contains the
1288     <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node
1289     corresponding to the attribute definitions in the attribute definition
1290 wakaba 1.23 list declarations processed
1291     <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>,
1292     <a href="#ref-XML11">XML11</a>]</cite> by the <abbr>XML</abbr> processor and
1293 wakaba 1.21 associated to the element type represented by the node. If there are more
1294     than one attribute definitions for an attribute, then the definitions other
1295     than the first one <em class=rfc2119>MUST</em> be ignored for the purpose
1296     of constructing the <code>NamedNodeMap</code> object.</p></dd>
1297     <dt><dfn id=getAttributeDefinitionNode class=dom-method><code>getAttributeDefinitionNode</code></dfn>,
1298     method</dt>
1299     <dd><p>Return the
1300     <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node
1301     with the specified name.</p>
1302    
1303     <p>The
1304     <dfn id=getAttributeDefinitionNode-name class=dom-param><var>name</var></dfn>
1305     parameter is the name of the attribute.</p>
1306    
1307     <p>When invoked, the method <em class=rfc2119>MUST</em> return the
1308     <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node,
1309     whose <a href="#nodeName"><code>nodeName</code></a> attribute value is
1310     equal to <a href="#getAttributeDefinitionNode-name"><var>name</var></a>,
1311     in the <code>NamedNodeMap</code> in the
1312     <a href="#attributeDefinitions"><code>attributeDefinitions</code></a>
1313     attribute of the node. If there is no such node, it
1314     <em class=rfc2119>MUST</em> return <code>null</code>.</p></dd>
1315     <dt><dfn id=setAttributeDefinitionNode class=dom-method><code>setAttributeDefinitionNode</code></dfn>,
1316     method</dt>
1317 wakaba 1.27 <dd><p>Associate an
1318     <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node with
1319     the
1320     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>
1321     node.</p>
1322    
1323     <p>The
1324     <dfn id=setAttributeDefinitionNode-node class=dom-param><var>node</var></dfn>
1325     parameter is the node to associate.</p>
1326    
1327     <p>When invoked, the method <em class=rfc2119>MUST</em> follow the rules
1328     to <a href="#algorithm-attach-node">attach a node</a>, where
1329     <a href="#attach-node-n"><var>n</var></a> is the
1330     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>
1331     node, <a href="#attach-node-l"><var>l</var></a> is the
1332     <a href="#attributeDefinitions"><code>attributeDefinitions</code></a>
1333     attribute value of the
1334     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> node,
1335     <a href="#attach-node-node"><var>node</var></a> is the
1336     <a href="#setAttributeDefinitionNode-node"><var>node</var></a>, and
1337     <a href="#attach-node-owner-attr"><var>owner-attr</var></a> is the
1338     <a href="#ownerElementTypeDefinition"><code>ownerElementTypeDefinition</code></a>
1339     attribute.</p></dd>
1340 wakaba 1.19 </dl>
1341 wakaba 1.20
1342     <div class=ed>
1343     <p>A future version of the specification might define a set of attributes
1344     and methods for representing and accessing to the content model of the
1345     element type.</p>
1346     </div>
1347 wakaba 1.4 </div>
1348    
1349     <div class=section id=section-attributedefinition>
1350 wakaba 1.7 <h3>The <code>AttributeDefinition</code> Interface</h3>
1351 wakaba 1.4
1352 wakaba 1.17 <p>The nodes of type
1353     <a href="#ATTRIBUTE_DEFINITION_NODE"><code>ATTRIBUTE_DEFINITION_NODE</code></a>
1354 wakaba 1.21 represents an attribute definition. Such a node
1355     <em class=rfc2119>MUST</em> implement the
1356 wakaba 1.17 <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> interface,
1357     which extends the <a href="#Node"><code>Node</code></a> interface.</p>
1358    
1359     <p>An attribute definition represents a definition of the attribute
1360     associated to an element type. It is corresponding to the attribute definition
1361     in the attribute list declaration in <abbr>DTD</abbr>. However, an
1362     <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node does
1363     not represent the attribute definition in <abbr>DTD</abbr> itself. Even if
1364     there are more than one attribute definitions for an attribute of an element
1365     type in <abbr>DTD</abbr>, the result <abbr>DOM</abbr> will contain only an
1366     <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node for
1367     that attribute.</p>
1368    
1369 wakaba 1.21 <p>An <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>
1370     node cannot be a child of any node. An
1371     <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node
1372     can have zero or more child nodes of same kinds as those allowed for
1373 wakaba 1.23 <code>Attr</code> nodes
1374     <cite class="bibref normative">[<a href="#ref-DOM3CORE">DOM3CORE</a>]</cite>.</p>
1375 wakaba 1.21
1376 wakaba 1.15 <p>The <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>
1377 wakaba 1.24 interface <em class=rfc2119>MUST</em> be implemented as the following
1378     <a href="#idl-fragment"><abbr>IDL</abbr> fragment</a>:</p>
1379 wakaba 1.10 <pre class=idl><code>interface <dfn id=AttributeDefinition><code>AttributeDefinition</code></dfn> : <a href="#Node">Node</a> {
1380 wakaba 1.9 <span class=comment>// <a href="#DeclaredValueType">DeclaredValueType</a></span>
1381     const unsigned short <a href="#NO_TYPE_ATTR">NO_TYPE_ATTR</a> = 0;
1382     const unsigned short <a href="#CDATA_ATTR">CDATA_ATTR</a> = 1;
1383     const unsigned short <a href="#ID_ATTR">ID_ATTR</a> = 2;
1384     const unsigned short <a href="#IDREF_ATTR">IDREF_ATTR</a> = 3;
1385     const unsigned short <a href="#IDREFS_ATTR">IDREFS_ATTR</a> = 4;
1386     const unsigned short <a href="#ENTITY_ATTR">ENTITY_ATTR</a> = 5;
1387     const unsigned short <a href="#ENTITIES_ATTR">ENTITIES_ATTR</a> = 6;
1388     const unsigned short <a href="#NMTOKEN_ATTR">NMTOKEN_ATTR</a> = 7;
1389     const unsigned short <a href="#NMTOKENS_ATTR">NMTOKENS_ATTR</a> = 8;
1390     const unsigned short <a href="#NOTATION_ATTR">NOTATION_ATTR</a> = 9;
1391     const unsigned short <a href="#ENUMERATION_ATTR">ENUMERATION_ATTR</a> = 10;
1392     const unsigned short <a href="#UNKNOWN_ATTR">UNKNOWN_ATTR</a> = 11;
1393 wakaba 1.17
1394     <span class=comment>// <a href="#DefaultValueType">DefaultValueType</a></span>
1395     const unsigned short <a href="#UNKNOWN_DEFAULT">UNKNOWN_DEFAULT</a> = 0;
1396     const unsigned short <a href="#FIXED_DEFAULT">FIXED_DEFAULT</a> = 1;
1397     const unsigned short <a href="#REQUIRED_DEFAULT">REQUIRED_DEFAULT</a> = 2;
1398     const unsigned short <a href="#IMPLIED_DEFAULT">IMPLIED_DEFAULT</a> = 3;
1399     const unsigned short <a href="#EXPLICIT_DEFAULT">EXPLICIT_DEFAULT</a> = 4;
1400 wakaba 1.4
1401 wakaba 1.10 readonly attribute <a href="#ElementTypeDefinition">ElementTypeDefinition</a> <a href="#ownerElementTypeDefinition">ownerElementTypeDefinition</a>;
1402    
1403     readonly attribute unsigned short <a href="#declaredType">declaredType</a>;
1404 wakaba 1.21 readonly attribute DOMStringList <a href="#allowedTokens">allowedTokens</a>;
1405 wakaba 1.10 readonly attribute unsigned short <a href="#defaultType">defaultType</a>;
1406 wakaba 1.4 }</code></pre>
1407    
1408 wakaba 1.11 <dl>
1409     <dt><dfn id=ownerElementTypeDefinition class=dom-attr><code>ownerElementTypeDefinition</code></dfn>
1410     of type
1411     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>,
1412     read$B!>(Bonly</dt>
1413     <dd><p>The
1414     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> to
1415     which the <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>
1416     node belongs.</p>
1417    
1418     <p>On getting, the attribute <em class=rfc2119>MUST</em> return an
1419     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> node.
1420     It <em class=rfc2119>MUST</em> be such a node that whose
1421 wakaba 1.26 <a href="#attributeDefinitions"><code>attributeDefinitions</code></a>
1422 wakaba 1.11 attribute contains the <code>NamedNodeMap</code> object that contains
1423     the <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>
1424     node. If there is no such an
1425     <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> node,
1426     then <code>null</code> <em class=rfc2119>MUST</em> be returned.</p>
1427     <dt><dfn id=declaredType class=dom-attr><code>declaredType</code></dfn> of type
1428     <code>unsigned short</code></dt>
1429 wakaba 1.23 <dd><p>The declared type
1430     <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>,
1431     <a href="#ref-XML11">XML11</a>]</cite> of the attribute. It is expected that
1432     this attribute contains a value from the definition group
1433 wakaba 1.11 <a href="#DeclaredValueType"><code>DeclaredValueType</code></a>.</p>
1434    
1435     <p>On getting, the attribute <em class=rfc2119>MUST</em> return the
1436     value associated to this attribute.</p>
1437    
1438     <p>On setting, the attribute <em class=rfc2119>MUST</em> raise a
1439 wakaba 1.23 <code>NO_MODIFICATION_ALLOWED_ERR</code> if the
1440 wakaba 1.11 <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node
1441 wakaba 1.23 is <a href="#read-only">read$B!>(Bonly</a>. Otherwise, it
1442 wakaba 1.11 <em class=rfc2119>MUST</em> set the specified value as the value
1443     associated to this attribute.</p>
1444    
1445     <p>If the <code>AttributeDefinition</code> node is created during the process
1446     to create a <abbr>DOM</abbr> from an <abbr>XML</abbr> document, an
1447     appropriate value from the
1448     <a href="#DeclaredValueType"><code>DeclaredValueType</code></a> constant
1449     group <em class=rfc2119>MUST</em> be set to the attribute.</p>
1450    
1451     <!-- DeclaredValueType -->
1452 wakaba 1.9 <p>The definition group
1453     <dfn id=DeclaredValueType><code>DeclaredValueType</code></dfn> contains
1454 wakaba 1.11 integers indicating the declared type of attributes. The definition
1455     group contains the following constants:</p>
1456 wakaba 1.9
1457     <table>
1458     <thead>
1459     <tr><th scope=col>Name<th scope=col>Value<th scope=col>Description</tr>
1460     </thead>
1461     <tbody>
1462     <tr>
1463     <th scope=row><dfn id=NO_TYPE_ATTR class=dom-const><code>NO_TYPE_ATTR</code>
1464 wakaba 1.23 <td><code>0</code><td><a href="http://www.w3.org/TR/2004/REC-xml-infoset-20040204/#intro.null">No
1465     value</a>
1466     <cite class="bibref normative">[<a href="#ref-INFOSET">INFOSET</a>]</cite>.</tr>
1467 wakaba 1.9 <tr>
1468     <th scope=row><dfn id=CDATA_ATTR class=dom-const><code>CDATA_ATTR</code>
1469 wakaba 1.23 <td><code>1</code><td><code>CDATA</code>
1470     <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>,
1471     <a href="#ref-XML11">XML11</a>]</cite>.</tr>
1472 wakaba 1.9 <tr>
1473     <th scope=row><dfn id=ID_ATTR class=dom-const><code>ID_ATTR</code>
1474 wakaba 1.23 <td><code>2</code><td><code>ID</code>
1475     <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>,
1476     <a href="#ref-XML11">XML11</a>]</cite>.</tr>
1477 wakaba 1.9 <tr>
1478     <th scope=row><dfn id=IDREF_ATTR class=dom-const><code>IDREF_ATTR</code>
1479 wakaba 1.23 <td><code>3</code><td><code>IDREF</code>
1480     <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>,
1481     <a href="#ref-XML11">XML11</a>]</cite>.</tr>
1482 wakaba 1.9 <tr>
1483     <th scope=row><dfn id=IDREFS_ATTR class=dom-const><code>IDREFS_ATTR</code>
1484 wakaba 1.23 <td><code>4</code><td><code>IDREFS</code>
1485     <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>,
1486     <a href="#ref-XML11">XML11</a>]</cite>.</tr>
1487 wakaba 1.9 <tr>
1488     <th scope=row><dfn id=ENTITY_ATTR class=dom-const><code>ENTITY_ATTR</code>
1489 wakaba 1.23 <td><code>5</code><td><code>ENTITY</code>
1490     <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>,
1491     <a href="#ref-XML11">XML11</a>]</cite>.</tr>
1492 wakaba 1.9 <tr>
1493     <th scope=row><dfn id=ENTITIES_ATTR class=dom-const><code>ENTITIES_ATTR</code>
1494 wakaba 1.23 <td><code>6</code><td><code>ENTITIES</code>
1495     <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>,
1496     <a href="#ref-XML11">XML11</a>]</cite>.</tr>
1497 wakaba 1.9 <tr>
1498     <th scope=row><dfn id=NMTOKEN_ATTR class=dom-const><code>NMTOKEN_ATTR</code>
1499 wakaba 1.23 <td><code>7</code><td><code>NMTOKEN</code>
1500     <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>,
1501     <a href="#ref-XML11">XML11</a>]</cite>.</tr>
1502 wakaba 1.9 <tr>
1503     <th scope=row><dfn id=NMTOKENS_ATTR class=dom-const><code>NMTOKENS_ATTR</code>
1504 wakaba 1.23 <td><code>8</code><td><code>NMTOKENS</code>
1505     <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>,
1506     <a href="#ref-XML11">XML11</a>]</cite>.</tr>
1507 wakaba 1.9 <tr>
1508     <th scope=row><dfn id=NOTATION_ATTR class=dom-const><code>NOTATION_ATTR</code>
1509 wakaba 1.23 <td><code>9</code><td><code>NOTATION</code>
1510     <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>,
1511     <a href="#ref-XML11">XML11</a>]</cite>.</tr>
1512 wakaba 1.9 <tr>
1513     <th scope=row><dfn id=ENUMERATION_ATTR class=dom-const><code>ENUMERATION_ATTR</code>
1514 wakaba 1.23 <td><code>10</code><td>Enumeration
1515     <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>,
1516     <a href="#ref-XML11">XML11</a>]</cite>.</tr>
1517 wakaba 1.9 <tr>
1518     <th scope=row><dfn id=UNKNOWN_ATTR class=dom-const><code>UNKNOWN_ATTR</code>
1519 wakaba 1.23 <td><code>11</code><td><a href="http://www.w3.org/TR/2004/REC-xml-infoset-20040204/#intro.null">Unknown</a>,
1520     because no declaration for the attribute has been read but the
1521     <a href="http://www.w3.org/TR/2004/REC-xml-infoset-20040204/#infoitem.document">[all declaration processed]</a>
1522     property
1523     <cite class="bibref normative">[<a href="#ref-INFOSET">INFOSET</a>]</cite>
1524     would be false.</tr>
1525 wakaba 1.9 </tbody>
1526     </table>
1527    
1528     <p>If no attribute type information is available, or if the source
1529 wakaba 1.23 of the information does not distinguish
1530     <a href="http://www.w3.org/TR/2004/REC-xml-infoset-20040204/#intro.null">no
1531     value</a> and
1532     <a href="http://www.w3.org/TR/2004/REC-xml-infoset-20040204/#intro.null">unknown</a>
1533     <cite class="bibref normative">[<a href="#ref-INFOSET">INFOSET</a>]</cite>,
1534     then the value
1535 wakaba 1.9 <a href="#NO_TYPE_ATTR"><code>NO_TYPE_ATTR</code></a>
1536     <em class=rfc2119>MUST</em> be used.</p>
1537    
1538     <div class="note memo">
1539     <p>An <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node
1540     created by the
1541     <a href="#createAttributeDefinition"><code>createAttributeDefinition</code></a>
1542     method has its <a href="#declaredType"><code>declaredType</code></a> attribute
1543     set to <a href="#NO_TYPE_ATTR"><code>NO_TYPE_ATTR</code></a>.</p>
1544     </div>
1545    
1546 wakaba 1.23 <p>If the source of the information does not distinguish
1547     <a href="http://www.w3.org/TR/2004/REC-xml-infoset-20040204/#intro.null">no
1548     value</a> and/or
1549     <a href="http://www.w3.org/TR/2004/REC-xml-infoset-20040204/#intro.null">unknown</a>
1550     <cite class="bibref normative">[<a href="#ref-INFOSET">INFOSET</a>]</cite> and
1551     <code>CDATA</code>
1552     <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>,
1553     <a href="#ref-XML11">XML11</a>]</cite>, then the value
1554 wakaba 1.9 <a href="#CDATA_ATTR"><code>CDATA_ATTR</code></a> <em class=rfc2119>MUST</em>
1555     be used.</p>
1556    
1557 wakaba 1.24 <p>In Perl binding
1558     <cite class="bibref normative">[<a href="#ref-DOMPERL">DOMPERL</a>]</cite>, the
1559 wakaba 1.9 <code>Attr</code> nodes <em class=rfc2119>MUST</em> implement the
1560     <a href="#DeclaredValueType"><code>DeclaredValueType</code></a>
1561 wakaba 1.11 definition group.</p>
1562 wakaba 1.4
1563 wakaba 1.11 </dd>
1564 wakaba 1.21 <dt><dfn id=allowedTokens class=dom-attr><code>allowedTokens</code></dfn> of
1565     type <code>DOMStringList</code>, read$B!>(Bonly</dt>
1566     <dd><p>The list of allowed attribute values.</p>
1567    
1568     <p>On getting, the attribute <em class=rfc2119>MUST</em> return the
1569     <code>DOMStringList</code> object associated to this attribute. The object
1570     <em class=rfc2119>MAY</em> contain zero or more ordered strings, consist of
1571     zero or more characters respectively, possibly with duplications. The
1572     object <em class=rfc2119>MUST</em> be read$B!>(Bonly if and only if the node
1573 wakaba 1.23 is <a href="#read-only">read$B!>(Bonly</a>.</p>
1574 wakaba 1.21
1575     <p>If the <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>
1576     node is created during the process to create a <abbr>DOM</abbr> from an
1577     <abbr>XML</abbr> document, the object <em class=rfc2119>MUST</em> contain
1578     the names or name tokens allowed for the attribute defined by the node.
1579     If the document is well$B!>(Bformed, the object will be empty unless
1580     the <a href="#declaredType"><code>declaredType</code></a> is
1581     <a href="#ENUMERATION_ATTR"><code>ENUMERATION_ATTR</code></a> or
1582     <a href="#NOTATION_ATTR"><code>NOTATION_ATTR</code></a>.</p>
1583    
1584     <p>If the <a href="#declaredType"><code>declaredType</code></a> is different
1585     from <a href="#ENUMERATION_ATTR"><code>ENUMERATION_ATTR</code></a> or
1586     <a href="#NOTATION_ATTR"><code>NOTATION_ATTR</code></a>, this attribute
1587     <em class=rfc2119>MUST</em> be ignored for the purpose of serializing
1588     into (part of) <abbr>XML</abbr> document.</p>
1589    
1590     <div class="note memo">
1591     <p>When serializing the node it should be noted that the object might
1592     be empty, might contain duplications, and might contain strings that are
1593     not names or name tokens.</p>
1594     </div></dd>
1595 wakaba 1.10 <dt><dfn id=defaultType class=dom-attr><code>defaultType</code></dfn> of
1596     type <code>unsigned short</code></dt>
1597     <dd><p>The type of the default for the attribute. It is expected that this
1598     attribute contains a value from the definition group
1599     <a href="#DefaultValueType"><code>DefaultValueType</code></a>.</p>
1600    
1601     <p>On getting, the attribute <em class=rfc2119>MUST</em> return
1602     the value associated to this attribute.</p>
1603    
1604     <p>On setting, the attribute <em class=rfc2119>MUST</em> raise a
1605 wakaba 1.23 <code>NO_MODIFICATION_ALLOWED_ERR</code> if the
1606 wakaba 1.10 <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node
1607 wakaba 1.23 is <a href="#read-only">read$B!>(Bonly</a>. Otherwise, it
1608 wakaba 1.10 <em class=rfc2119>MUST</em> set the specified value as the value
1609     associated to this attribute.</p>
1610    
1611 wakaba 1.12 <p>If the
1612     <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node is
1613     created during the process to create a <abbr>DOM</abbr> from an
1614     <abbr>XML</abbr> document, an appropriate value from the
1615 wakaba 1.11 <a href="#DefaultValueType"><code>DefaultValueType</code></a> definition
1616     group <em class=rfc2119>MUST</em> be set to the attribute.</p>
1617    
1618     <!-- DefaultValueType -->
1619     <p>The definition group
1620     <dfn id=DefaultValueType><code>DefaultValueType</code></dfn>
1621     contains integers indicating the type of the default for the attribute.
1622 wakaba 1.28 The definition group contains the following constants:</p>
1623 wakaba 1.11
1624     <table>
1625     <thead>
1626     <tr><th scope=col>Name<th scope=col>Value<th scope=col>Description</tr>
1627     </thead>
1628     <tbody>
1629     <tr>
1630     <th scope=row><dfn id=UNKNOWN_DEFAULT class=dom-const><code>UNKNOWN_DEFAULT</code></dfn>
1631     <td><code>0</code><td>Unknown.</tr>
1632     <tr>
1633     <th scope=row><dfn id=FIXED_DEFAULT class=dom-const><code>FIXED_DEFAULT</code></dfn>
1634 wakaba 1.23 <td><code>1</code><td>Provided explicitly and only the value is allowed.
1635     <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>,
1636     <a href="#ref-XML11">XML11</a>]</cite>.</tr>
1637 wakaba 1.11 <tr>
1638     <th scope=row><dfn id=REQUIRED_DEFAULT class=dom-const><code>REQUIRED_DEFAULT</code></dfn>
1639     <td><code>2</code><td>No default value and the attribute have to be
1640     explicitly specified.</tr>
1641     <tr>
1642     <th scope=row><dfn id=IMPLIED_DEFAULT class=dom-const><code>IMPLIED_DEFAULT</code></dfn>
1643 wakaba 1.23 <td><code>3</code><td>Implied
1644     <cite class="bibref normative">[<a href="#ref-XML10">XML10</a>,
1645     <a href="#ref-XML11">XML11</a>]</cite>.</tr>
1646 wakaba 1.11 <tr>
1647     <th scope=row><dfn id=EXPLICIT_DEFAULT class=dom-const><code>EXPLICIT_DEFAULT</code></dfn>
1648     <td><code>4</code><td>Provided explicitly.</tr>
1649     </tbody>
1650     </table>
1651    
1652     <p>If the source of the default type does not distinguish
1653     implied and unknown default types, then the value
1654     <a href="#IMPLIED_DEFAULT"><code>IMPLIED_DEFAULT</code></a>
1655     <em class=rfc2119>MUST</em> be used.</p>
1656    
1657     <div class="note memo">
1658     <p>An <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>
1659     node created by the
1660     <a href="#createAttributeDefinition"><code>createAttributeDefinition</code></a>
1661     method has its <a href="#defaultType"><code>defaultType</code></a>
1662     attribute set to
1663     <a href="#UNKNOWN_DEFAULT"><code>UNKNOWN_DEFAULT</code></a>.</p>
1664     </div></dd>
1665 wakaba 1.10 </dl>
1666 wakaba 1.4
1667 wakaba 1.3 </div>
1668    
1669 wakaba 1.19 <div class=section id=section-entity>
1670     <h3>Modifications to the <code id=Entity>Entity</code> Interface</h3>
1671    
1672     <p>The implementation of the <a href="#Entity"><code>Entity</code></a>
1673 wakaba 1.24 interface <em class=rfc2119>MUST</em> be modified as the following
1674     <a href="#idl-fragment"><abbr>IDL</abbr> fragment</a>:</p>
1675 wakaba 1.19 <pre class=idl><code>// Modifications to the Entity interface
1676     attribute DOMString <a href="#publicId">publicId</a>;
1677     attribute DOMString <a href="#systemId">systemId</a>;
1678     attribute DOMString <a href="#notationName">notationName</a>;
1679    
1680     // Additions to the Entity interface
1681     attribute DOMString <a href="#hasReplacementTree">hasReplacementTree</a>;
1682     readonly attribute <a href="#DocumentType">DocumentType</a> <a href="#ownerDocumentTypeDefinition">ownerDocumentTypeDefinition</a>;
1683 wakaba 1.20
1684     attribute boolean <a href="#isExternallyDeclared">isExternallyDeclared</a>;
1685 wakaba 1.19 </code></pre>
1686    
1687     <p>The <code id=notationName>notationName</code> attribute of the
1688     <a href="#Entity"><code>Entity</code></a> interface is no longer
1689     read$B!>(Bonly.</p>
1690    
1691     <p>On setting, the attribute <em class=rfc2119>MUST</em> raise a
1692 wakaba 1.23 <code>NO_MODIFICATION_ALLOWED_ERR</code> if the node is
1693     <a href="#read-only">read$B!>(Bonly</a>. Otherwise, it <em class=rfc2119>MUST</em>
1694     set the specified value as the value associated to the attribute. No lexical
1695     validation is performed. The new value <em class=rfc2119>MAY</em> be
1696     <code>null</code>.</p>
1697 wakaba 1.19
1698     <dl>
1699     <dt><dfn id=hasReplacementTree class=dom-attr><code>hasReplacementTree</code></dfn>
1700     of type boolean</dt>
1701     <dd><p>Whether the structure of the replacement text of the entity
1702     is available via the <code>NodeList</code> object in the
1703     <code>childNodes</code> attribute of the entity.</p>
1704    
1705     <p>On getting, the attribute <em class=rfc2119>MUST</em> return
1706     the value associated to this attribute.</p>
1707    
1708     <p>On setting, the attribute <em class=rfc2119>MUST</em> raise a
1709 wakaba 1.23 <code>NO_MODIFICATION_ALLOWED_ERR</code> if the node is
1710     <a href="#read-only">read$B!>(Bonly</a>. Otherwise, it
1711     <em class=rfc2119>MUST</em> set the specified value as the
1712 wakaba 1.19 value associated to this attribute.</p>
1713    
1714     <div class="note memo">
1715     <p>The attribute can be set to <code>false</code> even if the
1716     <a href="#Entity"><code>Entity</code></a> node has any child node.
1717     If the attribute is set to <code>false</code>, then any child node of
1718     the <a href="#Entity"><code>Entity</code></a> node ought to be ignored,
1719     say, for the purpose of serialization.</p>
1720     </div>
1721    
1722     <p>When an <code>EntityReference</code> node is created by cloning
1723     the replacement subtree of the <a href="#Entity"><code>Entity</code></a>
1724     node, if the attribute is set to <code>false</code>, then any descendant
1725     of the node <em class=rfc2119>MUST</em> be ignored.</p>
1726    
1727     <p>If the <a href="#Entity"><code>Entity</code></a> node is created during
1728     the process to create a <abbr>DOM</abbr> from an <abbr>XML</abbr> document,
1729     the following requirements are applied: If the entity is an unparsed
1730     entity, then the attribute <em class=rfc2119>MUST</em> be set to
1731     <code>false</code>. Otherwise, if the entity is an external entity whose
1732     replacement text is not available, or whose replacement text is not converted
1733     to a replacement tree, then the attribute <em class=rfc2119>MUST</em> be set
1734     to <code>false</code>. Otherwise, the attribute
1735     <em class=rfc2119>MUST</em> be set to <code>true</code>.</p>
1736    
1737     <div class="note memo">
1738     <p>An <a href="#Entity"><code>Entity</code></a> node created by the
1739     <a href="#createGeneralEntity"><code>createGeneralEntity</code></a> method
1740     has its <a href="#hasReplacementTree"><code>hasReplacementTree</code></a>
1741     attribute set to <code>false</code>.</p>
1742     </div></dd>
1743 wakaba 1.20 <dt><dfn id=isExternallyDeclared class=dom-attr><code>isExternallyDeclared</code></dfn>
1744     of type boolean</dt>
1745     <dd><p>Whether the entity is declared by an external entity declaration or
1746     not. If the value is <code>true</code>, the entity is declared in an entity
1747     declaration in the external subset entity or in an external parameter entity.
1748     If the value is <code>false</code>, the entity is declared in an entity
1749     declaration in the internal subset, or the node is created in memory.</p>
1750    
1751     <p>On getting, the attribute <em class=rfc2119>MUST</em> return
1752     the value associated to this attribute.</p>
1753    
1754     <p>On setting, the attribute <em class=rfc2119>MUST</em> raise a
1755 wakaba 1.23 <code>NO_MODIFICATION_ALLOWED_ERR</code> if the node is
1756     <a href="#read-only">read$B!>(Bonly</a>. Otherwise, it
1757     <em class=rfc2119>MUST</em> set the specified value as the value associated
1758     to this attribute.</p>
1759 wakaba 1.20
1760     <p>If the <a href="#Entity"><code>Entity</code></a> node is created during
1761     the process to create a <abbr>DOM</abbr> from an <abbr>XML</abbr> document,
1762     the following requirements are applied: If the entity is an unparsed
1763     entity, then the attribute <em class=rfc2119>MUST</em> be set to
1764     <code>false</code>. Otherwise, i.e. the entity is a parsed entity, then the
1765     attribute <em class=rfc2119>MUST</em> be set to the value of whether the
1766     entity is declared by an external markup declaration or not.</p></dd>
1767 wakaba 1.19 </dl>
1768 wakaba 1.1 </div>
1769 wakaba 1.3
1770 wakaba 1.19 <div class=section id=section-notation>
1771     <h3>Modifications to the <code id=Notation>Notation</code> Interface</h3>
1772 wakaba 1.3
1773 wakaba 1.19 <p>The implementation of the <a href="#Notation"><code>Notation</code></a>
1774 wakaba 1.24 interface <em class=rfc2119>MUST</em> be modified as the following
1775     <a href="#idl-fragment"><abbr>IDL</abbr> fragment</a>:</p>
1776 wakaba 1.19 <pre class=idl><code>// Modifications to the Notation interface
1777     attribute DOMString <a href="#publicId">publicId</a>;
1778     attribute DOMString <a href="#systemId">systemId</a>;
1779 wakaba 1.1
1780 wakaba 1.19 // Addition to the Notation interface
1781     readonly attribute <a href="#DocumentType">DocumentType</a> <a href="#ownerDocumentTypeDefinition">ownerDocumentTypeDefinition</a>;
1782     </code></pre>
1783     </div>
1784    
1785     </div>
1786 wakaba 1.1
1787     <div id="references" class="section reference">
1788     <h2>References</h2>
1789    
1790     <div id="normative-references" class="section normative reference">
1791     <h3>Normative References</h3>
1792    
1793     <dl>
1794     <dt id=ref-DOM3CORE>DOM3CORE</dt>
1795 wakaba 1.23 <dd><cite><a href="http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407">Document
1796     Object Model (<abbr>DOM</abbr>) Level 3 Core Specification, Version
1797     1.0</a></cite>, <abbr>W3C</abbr> Recommendation, <time datetime=2004-04-07>7
1798     April 2004</time>. <em>This</em> version of the specification is referenced.
1799     The latest version of the specification is available at
1800     <code class=uri>&lt;<a href="http://www.w3.org/TR/DOM-Level-3-Core">http://www.w3.org/TR/DOM-Level-3-Core</a>></code>.</dd>
1801 wakaba 1.24 <dt id=ref-DOMBIND>DOMBIND</dt>
1802     <dd><cite><a href="http://www.w3.org/TR/2007/WD-DOM-Bindings-20071017/">Language
1803     Bindings for <abbr>DOM</abbr> Specifications</a></cite>, <abbr>W3C</abbr>
1804     Working Draft, <time datetime=2007-10-17>17 October 2007</time>.
1805     <em>This</em> version of the specification is referenced. The latest version
1806     of the specification is available at
1807     <code class=uri>&lt;<a href="http://www.w3.org/TR/DOM-Bindings/">http://www.w3.org/TR/DOM-Bindings/</a>></code>.</dd>
1808     <dt id=ref-DOMPERL>DOMPERL</dt>
1809     <dd><cite><a href="http://suika.fam.cx/gate/2005/sw/manakai/DOM%20Perl%20Binding">manakai's
1810     <abbr>DOM</abbr> Perl Binding</a></cite>, editor's draft. Work in
1811     progress.</dd>
1812 wakaba 1.23 <dt id=ref-HTML5>HTML5</dt>
1813     <dd><cite><a href="http://whatwg.org/html5"><abbr>HTML</abbr> 5</a></cite>,
1814     <abbr title="Web Hypertext Application Technology Working Group">WHATWG</abbr>
1815     Working Draft. Work in progress.</dd>
1816     <dt id=ref-INFOSET>INFOSET</dt>
1817     <dd><cite><a href="http://www.w3.org/TR/2004/REC-xml-infoset-20040204"><abbr>XML</abbr>
1818     Information Set (Second Edition)</a></cite>, <abbr>W3C</abbr> Recommendation,
1819     <time datetime=2004-02-04>4 February 2004</time>. <em>This</em> version of
1820     the specification is referenced. The latest version of the specification is
1821     available at
1822     <code class=uri>&lt;<a href="http://www.w3.org/TR/xml-infoset">http://www.w3.org/TR/xml-infoset</a>></code>.</dd>
1823 wakaba 1.1 <dt id="ref-KEYWORDS">KEYWORDS</dt>
1824     <dd><cite><a href="urn:ietf:rfc:2119">Key words for use in
1825     <abbr>RFCs</abbr> to Indicate Requirement Levels</a></cite>,
1826     <abbr title="Internet Engineering Task Force">IETF</abbr>
1827     <a href="urn:ietf:bcp:14"><abbr title="Best Current Practice">BCP</abbr>
1828     14</a>, <abbr title="Request for Comments">RFC</abbr> 2119,
1829     <time datetime=1997-03>March 1997</time>.
1830     <em>This</em> version of the specification is referenced.</dd>
1831 wakaba 1.25 <dt id=ref-MANAKAI>MANAKAI</dt>
1832     <dd><cite><a href="http://suika.fam.cx/gate/2005/sw/manakai/DOM%20Extensions">
1833     manakai's <abbr>DOM</abbr> Extensions</a></cite>, editor's draft. Work in
1834     progress.</dd>
1835 wakaba 1.26 <dt id=ref-XML10>XML10</dt>
1836 wakaba 1.1 <dd><cite><a href="http://www.w3.org/TR/2006/REC-xml-20060816">Extensible
1837     Markup Language (<abbr>XML</abbr>) 1.0 (Fourth Edition)</a></cite>,
1838     <abbr>W3C</abbr> Recommendation, <time datetime=2006-08-16>16 August
1839     2006</time>, edited in place <time datetime=2006-09-29>29 September
1840 wakaba 1.23 2006</time>. <em>This</em> version of the specification is referenced. The
1841     latest version of the specification is available at
1842     <code class=uri>&lt;<a href="http://www.w3.org/TR/xml">http://www.w3.org/TR/xml</a>&gt;</code>.</dd>
1843 wakaba 1.1 <dt id=ref-XML11>XML11</dt>
1844 wakaba 1.23 <dd><cite><a href="http://www.w3.org/TR/2006/REC-xml11-20060816/">Extensible
1845     Markup Language (<abbr>XML</abbr>) 1.1 (Second Edition)</a></cite>,
1846     <abbr>W3C</abbr> Recommendation, <time datetime=2006-08-16>16 August
1847     2006</time>, edited in place <time datetime=2006-09-29>29 September
1848 wakaba 1.24 2006</time>. <em>This</em> version of the specification is referenced. The
1849 wakaba 1.23 latest version of the specification is available at
1850     <code class=uri>&lt;<a href="http://www.w3.org/TR/xml11">http://www.w3.org/TR/xml11</a>></code>.</dd>
1851 wakaba 1.1 </dl>
1852     </div>
1853    
1854     <div id="informative-references" class="section informative reference">
1855     <h3>Non$B!>(Bnormative References</h3>
1856    
1857 wakaba 1.23 <dl>
1858     <dt id=ref-DOM1WD>DOM1WD</dt>
1859     <dd><cite><a href="http://www.w3.org/TR/WD-DOM-971209/">Document Object
1860     Model Specification</a></cite>, <abbr>W3C</abbr> Working Draft,
1861 wakaba 1.29 <time datetime=1997-12-09>9 December 1997</time>.</dd>
1862 wakaba 1.23 <dd><cite><a href="http://www.w3.org/TR/WD-DOM-19980318/">Document Object
1863     Model Specification</a></cite>, <abbr>W3C</abbr> Working Draft,
1864     <time datetime=1998-03-18>18 March 1998</time>.</dd>
1865     <dd><cite><a href="http://www.w3.org/TR/1998/WD-DOM-19980416/">Document
1866     Object Model Specification, Version 1.0</a></cite>, <abbr>W3C</abbr> Working
1867     Draft, <time datetime=1998-04-16>16 April 1998</time>.</dd>
1868     <dt id=ref-DOM3AS>DOM3AS</dt>
1869     <dd><cite><a href="http://www.w3.org/TR/2002/NOTE-DOM-Level-3-AS-20020725/">Document
1870     Object Model (<abbr>DOM</abbr>) Level 3 Abstract Schemas Specification,
1871     Version 1.0</a></cite>, <abbr>W3C</abbr> Note, <time datetime=2002-07-25>25
1872     July 2002</time>. The latest version of the specification is available at
1873     <code class=uri>&lt;<a href="http://www.w3.org/TR/DOM-Level-3-AS">http://www.w3.org/TR/DOM-Level-3-AS</a>></code>.</dd>
1874     <dt id=ref-XSAPI>XSAPI</dt>
1875     <dd><cite><a href="http://www.w3.org/Submission/2004/SUBM-xmlschema-api-20040309/"><abbr>XML</abbr>
1876     Schema <abbr>API</abbr></a></cite>, <abbr>W3C</abbr> Member Submission,
1877     <time datetime=2004-03-09>9 March 2004</time>. The latest version of the
1878     specification is available at
1879     <code class=uri>&lt;<a href="http://www.w3.org/Submission/xmlschema-api/">http://www.w3.org/Submission/xmlschema-api/</a>></code>.</dd>
1880 wakaba 1.1 </dl>
1881     </div>
1882    
1883     </div>
1884    
1885     </body>
1886     </html>

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24