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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

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

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.30

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24