/[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.31 - (hide annotations) (download) (as text)
Sun Jun 15 08:08:05 2008 UTC (15 years, 11 months ago) by wakaba
Branch: MAIN
CVS Tags: HEAD
Changes since 1.30: +14 -12 lines
File MIME type: text/html
Minor editorial fixes

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

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24