/[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.5 by wakaba, Sun Dec 2 05:32:03 2007 UTC revision 1.14 by wakaba, Tue Dec 4 10:27:26 2007 UTC
# 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-01>1 December 2007</time></h2>  <h2>Working Draft <time datetime=2007-12-03>3 December 2007</time></h2>
14    
15  <dl class="versions-uri">  <dl class="versions-uri">
16  <dt>This Version</dt>  <dt>This Version</dt>
# Line 125  raised is undefined.</p> Line 125  raised is undefined.</p>
125  interface.</p>  interface.</p>
126    
127  <p class=ed>@@ ref to DOM Binding Spec</p>  <p class=ed>@@ ref to DOM Binding Spec</p>
128    
129    <p>If the <code>strictErrorChecking</code> attribute of the
130    <code>Document</code> node is <code>false</code>, the methods are
131    not required to raise exceptions <span class=ed>[DOM3]</span>.</p>
132  </div>  </div>
133    
134  <div class=section id=dom-dtdef>  <div class=section id=dom-dtdef>
# Line 139  consists of three interfaces:</p> Line 143  consists of three interfaces:</p>
143  <li><a href="#AttributeDefinition"><code>AttributeDefinition</code></a></li>  <li><a href="#AttributeDefinition"><code>AttributeDefinition</code></a></li>
144  </ul>  </ul>
145    
146  <p>In addition, it adds methods, attributes, and/or constants to interfaces  <p>In addition, it modifies interfaces
147  <a href="#Node"><code>Node</code></a>,  <a href="#Node"><code>Node</code></a>,
148    <a href="#DocumentType"><code>DocumentType</code></a>,
149  <a href="#Entity"><code>Entity</code></a>,  <a href="#Entity"><code>Entity</code></a>,
150  <a href="#EntityReference"><code>EntityReference</code></a>, and  <a href="#EntityReference"><code>EntityReference</code></a>,
151  <a href="#Notation"><code>Notation</code></a>.  <a href="#Notation"><code>Notation</code></a>, and
152  It modifies semantics of some of methods and attributes in  <a href="#ProcessingInstruction"><code>ProcessingInstruction</code></a>.</p>
 <a href="#Node"><code>Node</code></a> and  
 <a href="#ProcessingInstruction"><code>ProcessingInstruction</code></a>  
 interfaces, for the support of new interfaces.</p>  
153    
154  <div class=section id=features>  <div class=section id=features>
155  <h3>Feature Name</h3>  <h3>Feature Name</h3>
# Line 172  feature names with or without version nu Line 174  feature names with or without version nu
174  aforementioned cases.</p>  aforementioned cases.</p>
175  </div>  </div>
176    
177    <div class=section id=section-node>
178    <h3>Modifications to the <code id=Node>Node</code> Interface</h3>
179    
180    <pre class=idl><code>// Additions to the Node interface
181    
182    // Additions to the NodeType definition group
183    const unsigned short <a href="#ELEMENT_TYPE_DEFINITION_NODE">ELEMENT_TYPE_DEFINITION_NODE</a> = 81001;
184    const unsigned short <a href="#ATTRIBUTE_DEFINITION_NODE">ATTRIBUTE_DEFINITION_NODE</a> = 81002;
185    </pre>
186    
187    <p>This specification adds two new types (subinterfaces) of
188    <a href="#Node"><code>Node</code></a>: element type definition (node type
189    <a href="#ELEMENT_TYPE_DEFINITION_NODE"><code>ELEMENT_TYPE_DEFINITION_NODE</code></a>,
190    interface
191    <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>) and
192    attribute definition (node type
193    <a href="#ATTRIBUTE_DEFINITION_NODE"><code>ATTRIBUTE_DEFINITION_NODE</code></a>,
194    interface
195    <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>).  For
196    these kinds of nodes, methods and attributes in the
197    <a href="#Node"><code>Node</code></a> interface must behave as following:</p>
198    
199    <dl>
200    <dt><code id=nodeType>nodeType</code></dt>
201      <dd>
202        <p>On getting, the attribute <em class=rfc2119>MUST</em> return
203        <a href="#ELEMENT_TYPE_DEFINITION_NODE"><code>ELEMENT_TYPE_DEFINITION_NODE</code></a>
204        (if the node is an
205        <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>) or
206        <a href="#ATTRIBUTE_DEFINITION_NODE"><code>ATTRIBUTE_DEFINITION_NODE</code></a>
207        (if the node is an
208        <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>).</p>
209    
210        <!-- NodeType -->
211    <p>Two constants are added to the <code id=NodeType>NodeType</code>
212    definition group of the <a href="#Node"><code>Node</code></a> interface as
213    following:</p>
214    <table>
215    <thead>
216    <tr><th scope=col>Name<th scope=col>Value<th scope=col>Description</tr>
217    </thead>
218    <tbody>
219    <tr>
220    <th scope=row><dfn id=ELEMENT_TYPE_DEFINITION_NODE class=dom-const><code>ELEMENT_TYPE_DEFINITION_NODE</code></dfn>
221    <td><code>81001</code><td>The node is an
222    <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>.</tr>
223    <tr>
224    <th scope=row><dfn id=ATTRIBUTE_DEFINITION_NODE class=dom-const><code>ATTRIBUTE_DEFINITION_NODE</code></dfn>
225    <td><code>81002</code><td>The node is an
226    <a href="#ElementTypeDefinition"><code>AttributeDefinition</code></a>.</tr>
227    </tbody>
228    </table>
229      </dd>
230    <dt class=ed>@@ ...</dt>
231    </dl>
232    
233    </div>
234    
235  <div class=section id=section-documentxdoctype>  <div class=section id=section-documentxdoctype>
236  <h2>The <code>DocumentXDoctype</code> Interface</h2>  <h3>The <code>DocumentXDoctype</code> Interface</h3>
237    
238  <pre class=idl><code>interface <dfn id=DocumentXDoctype><code>DocumentXDoctype</code></dfn> {  <pre class=idl><code>interface <dfn id=DocumentXDoctype><code>DocumentXDoctype</code></dfn> {
239    DocumentType <a href="#createDocumentTypeDefinition">createDocumentTypeDefinition</a>    DocumentType <a href="#createDocumentTypeDefinition">createDocumentTypeDefinition</a>
240      (in DOMString <a href="#createDocumentTypeDefinition-name"><var>name</var></a>)      (in DOMString <a href="#createDocumentTypeDefinition-name"><var>name</var></a>)
241      raises (DOMException);      raises (DOMException);
242    ElementTypeDefinition <a href="#createElementTypeDefinition">createElementTypeDefinition</a>    <a href="#ElementTypeDefinition">ElementTypeDefinition</a> <a href="#createElementTypeDefinition">createElementTypeDefinition</a>
243      (in DOMString <a href="#createElementTypeDefinition-name"><var>name</var></a>)      (in DOMString <a href="#createElementTypeDefinition-name"><var>name</var></a>)
244      raises (DOMException);      raises (DOMException);
245    AttributeDefinition <a href="#createAttributeDefinition">createAttributeDefinition</a>    <a href="#AttributeDefinition">AttributeDefinition</a> <a href="#createAttributeDefinition">createAttributeDefinition</a>
246      (in DOMString <a href="#createAttributeDefinition-name"><var>name</var></a>)      (in DOMString <a href="#createAttributeDefinition-name"><var>name</var></a>)
247      raises (DOMException);      raises (DOMException);
248    Entity <a href="#createGeneralEntity">createGeneralEntityDefinition</a>    <a href="#Entity">Entity</a> <a href="#createGeneralEntity">createGeneralEntityDefinition</a>
249      (in DOMString <a href="#createGeneralEntity-name"><var>name</var></a>)      (in DOMString <a href="#createGeneralEntity-name"><var>name</var></a>)
250      raises (DOMException);      raises (DOMException);
251    Notation <a href="#createNotation">createNotation</a>    <a href="#Notation">Notation</a> <a href="#createNotation">createNotation</a>
252      (in DOMString <a href="#createNotation-name"><var>name</var></a>)      (in DOMString <a href="#createNotation-name"><var>name</var></a>)
253      raises (DOMException);      raises (DOMException);
254  }</code></pre>  }</code></pre>
# Line 239  method</dt> Line 299  method</dt>
299      <p>The <dfn id=createElementTypeDefinition-name class=dom-param><var>name</var></dfn>      <p>The <dfn id=createElementTypeDefinition-name class=dom-param><var>name</var></dfn>
300      parameter is the name of the element type defined by the element      parameter is the name of the element type defined by the element
301      type definition.</p>      type definition.</p>
302    
303        <p>When invoked, the method <em class=rfc2119>MUST</em> create and
304        return an
305        <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>
306        node with the following attributes:</p>
307        <dl>
308        <dt><a href="#attributeDefinitions"><code>attributeDefinitions</code></a></dt>
309          <dd>An empty <code>NamedNodeMap</code> object.</dd>
310        <dt><code>attributes</code>, <code>parentNode</code></dt>
311          <dd><code>null</code>.</dd>
312        <dt><code>childNodes</code></dt>
313          <dd>An empty <code>NodeList</code> object.</dd>
314        <dt><code>manakaiReadOnly</code> <span class=ed>[manakai]</span></dt>
315          <dd><code>false</code>.</dd>
316        <dt><code>nodeName</code></dt>
317          <dd><a href="#createElementTypeDefinition-name"><var>name</var></a>.</dd>
318        <dt><code>ownerDocument</code></dt>
319          <dd>The <code>Document</code> node over which the method is invoked.</dd>
320        <dt><a href="#ownerDocumentTypeDefinition"><code>ownerDocumentTypeDefinition</code></a></dt>
321          <dd><code>null</code>.</dd>
322        <dt class=ed>@@ Ensure all attributes are defined</dt>
323        </dl>
324    </dd>    </dd>
325  <dt><dfn id=createAttributeDefinition class=dom-method><code>createAttributeDefinition</code></dfn>,  <dt><dfn id=createAttributeDefinition class=dom-method><code>createAttributeDefinition</code></dfn>,
326  method</dt>  method</dt>
# Line 248  method</dt> Line 330  method</dt>
330      <p>The <dfn id=createAttributeDefinition-name class=dom-param><var>name</var></dfn>      <p>The <dfn id=createAttributeDefinition-name class=dom-param><var>name</var></dfn>
331      parameter is the name of the attribute defined by the attribute      parameter is the name of the attribute defined by the attribute
332      definition.</p>      definition.</p>
333    
334        <p>When invoked, the method <em class=rfc2119>MUST</em> create and
335        return an
336        <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>
337        node with the following attributes:</p>
338        <dl>
339        <dt><code>allowedTokens</code></dt>
340          <dd>An empty <code>DOMStringList</code> object.</dd>
341        <dt><code>attributes</code>,
342        <a href="#ownerElementTypeDefinition"><code>ownerElementTypeDefinition</code></a>,
343        and <code>parentNode</code></dt>
344          <dd><code>null</code>.</dd>
345        <dt><code>childNodes</code></dt>
346          <dd>An empty <code>NodeList</code> object.</dd>
347        <dt><code>declaredType</code></dt>
348          <dd><a href="#NO_TYPE_ATTR"><code>NO_TYPE_ATTR</code></a>.</dd>
349        <dt><code>defaultType</code></dt>
350          <dd><a href="#UNKNOWN_DEFAULT"><code>UNKNOWN_DEFAULT</code></a>.</dd>
351        <dt><code>manakaiReadOnly</code> <span class=ed>[manakai]</span></dt>
352          <dd><code>false</code>.</dd>
353        <dt><code>nodeName</code></dt>
354          <dd><a href="#createAttributeDefinition-name"><var>name</var></a>.</dd>
355        <dt><code>ownerDocument</code></dt>
356          <dd>The <code>Document</code> node over which the method is invoked.</dd>
357        <dt class=ed>@@ Ensure all attributes are defined</dt>
358        </dl>
359    
360        <div class=ed>
361        <p>@@ Should we keep these statements?:
362    However, if the &lt;cfg::cfg|xml-id> configuration
363    parameter is set to <code>true</code> and the <var>name</var>
364    is <code>xml:id</code>, then the [CODE(DOMa)@en[[[declaredType]]]]
365    attribute is set to <code>ID_ATTR</code>.
366    [CODE(DOMa)@en[[[defaultType]]]]?</p>
367        </div>
368    </dd>    </dd>
369  <dt><dfn id=createGeneralEntity class=dom-method><code>createGeneralEntity</code></dfn>,  <dt><dfn id=createGeneralEntity class=dom-method><code>createGeneralEntity</code></dfn>,
370  method</dt>  method</dt>
371    <dd>    <dd>
372      <p>This method creates a <code>Entity</code> node with the      <p>This method creates a <a href="#Entity"><code>Entity</code></a> node
373      specified name, which represents a general entity, belonging to the      with the specified name, which represents a general entity, belonging to
374      document.</p>      the document.</p>
375      <p>The <dfn id=createGeneralEntity-name class=dom-param><var>name</var></dfn>      <p>The <dfn id=createGeneralEntity-name class=dom-param><var>name</var></dfn>
376      parameter is the name of the general entity.</p>      parameter is the name of the general entity.</p>
377    
378        <p>When invoked, the method <em class=rfc2119>MUST</em> create and return
379        an <a href="#Entity"><code>Entity</code></a> node with the following
380        attributes:</p>
381        <dl>
382        <dt><code>attributes</code>, <code>notationName</code>,
383        <a href="#ownerDocumentTypeDefinition"><code>ownerDocumentTypeDefinition</code></a>,
384        and <code>parentNode</code></dt>
385          <dd><code>null</code>.</dd>
386        <dt><code>childNodes</code></dt>
387          <dd>An empty <code>NodeList</code> object.</dd>
388        <dt><code>manakaiDeclarationBaseURI</code>,
389        <code>manakaiEntityBaseURI</code>, and
390        <code>manakaiEntityURI</code> <span class=ed>@@ ref</span></dt>
391          <dd>No explicit value is set.</dd>
392        <dt><code>manakaiHasReplacementTree</code> and
393        <code>manakaiReadOnly</code> <span class=ed>[manakai]</span></dt>
394          <dd><code>false</code>.</dd>
395        <dt><code>nodeName</code></dt>
396          <dd><a href="#createGeneralEntity-name"><var>name</var></a>.</dd>
397          <dd>
398            <div class="note memo">
399              <p>It is not an error for
400              <a href="#createGeneralEntity-name"><var>name</var></a> matching
401              to the name of one of predefined general parsed entities in
402              <abbr>XML</abbr> or <abbr>HTML</abbr>.  For example,
403              <a href="#createGeneralEntity-name"><var>name</var></a> might be
404              <code>amp</code>, resulting in an
405              <a href="#Entity"><code>Entity</code></a> node
406              with its <code>nodeName</code> attribute set to <code>amp</code>.</p>
407            </div>
408          </dd>
409        <dt><code>ownerDocument</code></dt>
410          <dd>The <code>Document</code> node over which the method is invoked.</dd>
411        <dt><code>publicId</code>, and <code>systemId</code></dt>
412          <dd><code>null</code>.</dd>
413          <dd class=ed>@@ publicId and systemId should be empty string?</dd>
414        <dt class=ed>@@ Ensure all attributes are defined</dd>
415        </dl>
416    </dd>    </dd>
417  <dt><dfn id=createNotation class=dom-method><code>createNotation</code></dfn>,  <dt><dfn id=createNotation class=dom-method><code>createNotation</code></dfn>,
418  method</dt>  method</dt>
# Line 265  method</dt> Line 421  method</dt>
421      specified name, belonging to the document.</p>      specified name, belonging to the document.</p>
422      <p>The <dfn id=createNotation-name class=dom-param><var>name</var></dfn>      <p>The <dfn id=createNotation-name class=dom-param><var>name</var></dfn>
423      parameter is the name of the notation.</p>      parameter is the name of the notation.</p>
424    
425        <p>When invoked, the method <em class=rfc2119>MUST</em> create and return
426        a <code>Notation</code> node with the following attributes:</p>
427        <dl>
428        <dt><code>attributes</code>,
429        <a href="#ownerDocumentTypeDefinition"><code>ownerDocumentTypeDefinition</code></a>,
430        and <code>parentNode</code></dt>
431          <dd><code>null</code>.</dd>
432        <dt><code>childNodes</code></dt>
433          <dd>An empty <code>NodeList</code> object.</dd>
434        <dt><code>manakaiDeclarationBaseURI</code></dt>
435          <dd>No explicit value is set.</dd>
436        <dt><code>manakaiReadOnly</code> <span class=ed>[manakai]</span></dt>
437          <dd><code>false</code>.</dd>
438        <dt><code>nodeName</code></dt>
439          <dd><a href="#createNotation-name"><var>name</var></a>.</dd>
440        <dt><code>ownerDocument</code></dt>
441          <dd>The <code>Document</code> node over which the method is invoked.</dd>
442        <dt><code>publicId</code> and <code>systemId</code></dt>
443          <dd><code>null</code>.</dd>
444          <dd class=ed>@@ publicId and systemId should be empty string?</dd>
445        <dt class=ed>@@ Ensure all attributes are defined</dt>
446        </dl>
447    </dd>    </dd>
448  </dl>  </dl>
449    
450  <pre class=ed>  <p>These methods <em class=rfc2119>MUST</em> raise an
451    <code>INVALID_CHARACTER_ERR</code> exception <span class=ed>@@ ref</span>
452  [8]  if <var>name</var> is <em>not</em> a legal <code>Name</code> according to
453  The [CODE(DOMm)@en[[[createElementTypeDefinition]]]]  the <abbr>XML</abbr> version in use, as specified in the
454  method [['''MUST''']] create an  <code>xmlVersion</code> attribute of the <code>Document</code> node.</p>
455  [CODE(DOMi)@en[[[ElementTypeDefinition]]]]  
456  object with the following attribute values:  <div class="note memo">
457  - [CODE(DOMa)@en[[[attributeDefinitions]]]]:  <p>Non$B!>(B<abbr>XML</abbr> case is intentionally left unspecified for now,
458  An empty [CODE(DOMi)@en[[[NamedNodeMap]]]].  since <abbr>DOM3</abbr> specification <span class=ed>@@ ref</span> does not
459  - [CODE(DOMa)@en[[[attributes]]]],  define it for <code>Document</code> methods.</p>
 [CODE(DOMa)@en[[[parentNode]]]]: [CODE(DOM)@en[[[null]]]].  
 - [CODE(DOMa)@en[[[childNodes]]]]: An empty  
 [CODE(DOMi)@en[[[NodeList]]]].  
 - [CODE(DOMa)@en[[[manakaiReadOnly]]]]:  
 [CODE(IDL)@en[[[false]]]].  
 - [CODE(DOMa)@en[[[nodeName]]]]: [CODE(DOMp)@en[[[name]]]].  
 - [CODE(DOMa)@en[[[ownerDocument]]]]: The  
 [CODE(DOMi)@en[[[Document]]]] node on which the method  
 is invoked.  
 - [CODE(DOMa)@en[[[ownerDocumentTypeDefinition]]]]:  
 [CODE(IDL)@en[[[null]]]].  
   
 @@ Ensure all attributes are defined  
   
 [9] The [CODE(DOMm)@en[[[createAttributeDefinition]]]]  
 method [['''MUST''']] create an  
 [CODE(DOMi)@en[[[AttributeDefinition]]]]  
 object with the following attribute values:  
 - [CODE(DOMa)@en[[[allowedTokens]]]]:  
 An empty [CODE(DOMi)@en[[[DOMStringList]]]].  
 - [CODE(DOMa)@en[[[attributes]]]],  
 [CODE(DOMa)@en[[[parentNode]]]]: [CODE(DOM)@en[[[null]]]].  
 - [CODE(DOMa)@en[[[childNodes]]]]: An empty  
 [CODE(DOMi)@en[[[NodeList]]]].  
 - [CODE(DOMa)@en[[[declaredType]]]]:  
 [CODE(DOMc)@en[[[NO_TYPE_ATTR]]]].  
 - [CODE(DOMa)@en[[[defaultType]]]]:  
 [CODE(DOMc)@en[[[UNKNOWN_DEFAULT]]]].  
 - [CODE(DOMa)@en[[[manakaiReadOnly]]]]:  
 [CODE(IDL)@en[[[false]]]].  
 - [CODE(DOMa)@en[[[nodeName]]]]: [CODE(DOMp)@en[[[name]]]].  
 - [CODE(DOMa)@en[[[ownerDocument]]]]: The  
 [CODE(DOMi)@en[[[Document]]]] node on which the method  
 is invoked.  
 - [CODE(DOMa)@en[[[ownerElementTypeDefinition]]]]:  
 [CODE(IDL)@en[[[null]]]].  
   
 @@ Ensure all attributes are defined  
   
 @@ Should we keep these statements?:  
 However, if the <cfg::cfg|xml-id> configuration  
 parameter is set to <DOM::true> and the <P::name>  
 is <XA::xml:id>, then the [CODE(DOMa)@en[[[declaredType]]]]  
 attribute is set to  
 <C::AttributeDefinition.ID_ATTR>.  
 [CODE(DOMa)@en[[[defaultType]]]]?  
   
 [11] The [CODE(DOMm)@en[[[createGeneralEntity]]]]  
 method [['''MUST''']] create an [CODE(DOMi)@en[[[Entity]]]]  
 node with the following attribute values:  
 - [CODE(DOMa)@en[[[attributes]]]],  
 [CODE(DOMa)@en[[[parentNode]]]]: [CODE(DOM)@en[[[null]]]].  
 - [CODE(DOMa)@en[[[childNodes]]]]: An empty  
 [CODE(DOMi)@en[[[NodeList]]]].  
 - [CODE(DOMa)@en[[[manakaiDeclarationBaseURI]]]]:  
 No explicit value is set.  
 - [CODE(DOMa)@en[[[manakaiEntityBaseURI]]]]:  
 No explicit value is set.  
 - [CODE(DOMa)@en[[[manakaiEntityURI]]]]:  
 No explicit value is set.  
 - [CODE(DOMa)@en[[[manakaiHasReplacementTree]]]]:  
 [CODE(IDL)@en[[[false]]]].  
 - [CODE(DOMa)@en[[[manakaiReadOnly]]]]:  
 [CODE(IDL)@en[[[false]]]].  
 - [CODE(DOMa)@en[[[nodeName]]]]: [CODE(DOMp)@en[[[name]]]].  
 - [CODE(DOMa)@en[[[notationName]]]]: [CODE(DOM)@en[[[null]]]].  
 - [CODE(DOMa)@en[[[ownerDocument]]]]: The  
 [CODE(DOMi)@en[[[Document]]]] node on which the method  
 is invoked.  
 - [CODE(DOMa)@en[[[ownerDocumentTypeDefinition]]]]:  
 [CODE(IDL)@en[[[null]]]].  
 - [CODE(DOMa)@en[[[publicId]]]]: [CODE(DOM)@en[[[null]]]].  
 - [CODE(DOMa)@en[[[systemId]]]]: [CODE(DOM)@en[[[null]]]].  
   
 @@ Ensure all attributes are defined  
   
 @@ publicId and systemId should be empty string?  
   
 [13] The [CODE(DOMm)@en[[[createNotation]]]]  
 method [['''MUST''']] create a [CODE(DOMi)@en[[[Notation]]]]  
 node with the following attribute values:  
 - [CODE(DOMa)@en[[[attributes]]]],  
 [CODE(DOMa)@en[[[parentNode]]]]: [CODE(DOM)@en[[[null]]]].  
 - [CODE(DOMa)@en[[[childNodes]]]]: An empty  
 [CODE(DOMi)@en[[[NodeList]]]].  
 - [CODE(DOMa)@en[[[manakaiDeclarationBaseURI]]]]:  
 No explicit value is set.  
 - [CODE(DOMa)@en[[[manakaiReadOnly]]]]:  
 [CODE(IDL)@en[[[false]]]].  
 - [CODE(DOMa)@en[[[nodeName]]]]: [CODE(DOMp)@en[[[name]]]].  
 - [CODE(DOMa)@en[[[ownerDocument]]]]: The  
 [CODE(DOMi)@en[[[Document]]]] node on which the method  
 is invoked.  
 - [CODE(DOMa)@en[[[ownerDocumentTypeDefinition]]]]:  
 [CODE(IDL)@en[[[null]]]].  
 - [CODE(DOMa)@en[[[publicId]]]]: [CODE(DOM)@en[[[null]]]].  
 - [CODE(DOMa)@en[[[systemId]]]]: [CODE(DOM)@en[[[null]]]].  
   
 @@ Ensure all attributes are defined  
   
 [7]  
 These method [['''MUST''']] raise an  
 [CODE(DOMi)@en[[[INVALID_CHARACTER_ERR]]]]  
 [CODE(DOMi)@en[[[DOMException]]]]  
 if the [CODE(DOMp)@en[[[name]]]] is not a legal  
 name according to the XML version in use as  
 specified in the [CODE(DOMa)@en[[[xmlVersion]]]]  
 attribute of the [CODE(DOMi)@en[[[Document]]]] node.  
   
 ;; Non-XML case is intentionally left unspecified for now  
 since DOM3 does not define it.  
   
 ;; [CODE(DOMp)@en[[[name]]]] does not have to  
 be a namespace qualified name.  
   
 ;; Note also that it is not an error for the  
 [CODE(DOMp)@en[[[name]]]] parameter value  
 to match to the name of one of predefined general  
 parsed entities in XML or HTML.  
   
 ;; If the [CODE(DOMa)@en[[[strictErrorChecking]]]] attribute  
 is set to [CODE(IDL)@en[[[false]]]], then the implementation  
 is not required to raise this exception.  
460    
461  Otherwise, these method [['''MUST''']] return  <p><var>name</var> does not have to be a namespace qualified name.</p>
462  the newly created node.  </div>
 </pre>  
463    
464  </div>  </div>
465    
466  <div class=section id=section-documenttypedefinition>  <div class=section id=section-documenttypedefinition>
467  <h2>The <code>DocumentTypeDefinition</code> Interface</h2>  <h3>The <code>DocumentTypeDefinition</code> Interface</h3>
468    
469  <pre class=idl><code>interface <dfn id=DocumentTypeDefinition><code>DocumentTypeDefinition</code></dfn> {  <pre class=idl><code>interface <dfn id=DocumentTypeDefinition><code>DocumentTypeDefinition</code></dfn> {
470        readonly attribute NamedNodeMap <a href="#elementTypes">elementTypes</a>;
471      readonly attribute NamedNodeMap <a href="#generalEntities">generalEntities</a>;
472      readonly attribute NamedNodeMap <a href="#notations">notations</a>;
473    
474      <a href="#ElementTypeDefinition">ElementTypeDefinition</a> <a href="#getElementTypeDefinitionNode">getElementTypeDefinitionNode</a>
475        (in DOMString <a href="#getElementTypeDefinitionNode-name"><var>name</var></a>);
476      <a href="#Entity">Entity</a> <a href="#getGeneralEntityNode">getGeneralEntityNode</a>
477        (in DOMString <a href="#getGeneralEntityNode-name"><var>name</var></a>);
478      <a href="#Notation">Notation</a> <a href="#getNotationNode">getNotationNode</a>
479        (in DOMString <a href="#getNotationNode-name"><var>name</var></a>);
480    
481      void <a href="#setElementTypeDefinitionNode">setElementTypeDefinitionNode</a>
482        (in DOMString <a href="#setElementTypeDefinitionNode-node"><var>node</var></a>)
483        raises (DOMException);
484      void <a href="#setGeneralEntityNode">setGeneralEntityNode</a>
485        (in DOMString <a href="#setGeneralEntityNode-node"><var>node</var></a>)
486        raises (DOMException);
487      void <a href="#setNotationNode">setNotationNode</a>
488        (in DOMString <a href="#setNotationNode-node"><var>node</var></a>)
489        raises (DOMException);
490  }</code></pre>  }</code></pre>
491    
492  <pre class=ed>  <pre class=ed>
# Line 422  feature, a [CODE(DOMi)@en[[[DocumentType Line 496  feature, a [CODE(DOMi)@en[[[DocumentType
496  must implement the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]]  must implement the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]]
497  interface.  See [[DOM XML Document Type Definition]>>3] for  interface.  See [[DOM XML Document Type Definition]>>3] for
498  details.  details.
499    </pre>
500    
501    <dl>
502  ** Children  <dt><dfn id=elementTypes class=dom-attr><code>elementTypes</code></dfn> of
503    type <code>NamedNodeMap</code>, read$B!>(Bonly</dt>
504  [2] The [DFN@en[[CODE(DOMa)@en[[[elementTypes]]]] attribute]]    <dd><p>A live <code>NamedNodeMap</code> object that contains all the element
505  of the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]] interface    type definitions belonging to the <code>DocumentType</code> node.</p>
506  is a live [CODE(DOMi)@en[[[NamedNodeMap]]]] object that  
507  contains all element types belongs to the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]]    <p>On getting, the attribute <em class=rfc2119>MUST</em> return the
508  node.  The type of the attribute is [CODE(DOMi)@en[[[NamedNodeMap]]]].    <code>NamedNodeMap</code> object that contains all the
509  The attribute is read-only.    <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>
510      nodes belonging to the <code>DocumentType</code> node.  The
511  What are contained in this collection depends on how    <code>NamedNodeMap</code> object <em class=rfc2119>MUST</em> be read$B!>(Bonly
512  the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]] node was created.  If the    if and only if the node is read$B!>(Bonly.  The <code>NamedNodeMap</code>
513  node was created as the result of parsing of an XML document,    object <em class=rfc2119>MUST</em> be live and the same object
514  it [['''MUST''']]  contain all element types whose element type and / or    <em class=rfc2119>MUST</em> be returned for any invocation.</p>
515  attribute definition list declaration are encountered by and provided for the DOM  
516  implementation from the XML processor.  Note that the XML processor might not    <p>If the <code>DocumentType</code> node is created during the process
517  provide a part of or entire such information depending on the configuration.    to create a <abbr>DOM</abbr> from an <abbr>XML</abbr> document, the following
518  If more than one declarations for an element type or an attribute is available    requirements are applied:  The <code>NamedNodeMap</code> object in the
519  at the time of the definition node construction, then declarations other than    <a href="#elementTypes"><code>elementType</code></a> attribute
520  the first ones [['''MUST''']] be discarded.    <em class=rfc2119>MUST</em> be so transformed that the object contains
521      the <code>ElementTypeDefinition</code> nodes for the element types
522  The attribute [['''MUST''']] return the [CODE(DOMi)@en[[[NamedNodeMap]]]]    whose name is presented as the <code>Name</code> of the element type or
523  object that contains all the [CODE(DOMi)@en[[[ElementTypeDefinition]]]] nodes    attribute definition list declarations processed by the <abbr>XML</abbr>
524  belong to the node.  The returned [CODE(DOMi)@en[[[NamedNodeMap]]]] object    processor.  If there is more than one element type declarations for an
525  [['''MUST''']] be read-only if and only if the node is read-only.    element type, then the declarations other than the first one
526  Note that the [CODE(DOMi)@en[[[NamedNodeMap]]]] object is live    <em class=rfc2119>MUST</em> be ignored for the purpose of constructing the
527  and therefore any change of read-only flag on the node is immediately    <code>NamedNodeMap</code> object.</p></dd>
528  reflected by that of the object.  <dt><dfn id=generalEntities class=dom-attr><code>generalEntities</code></dfn>
529    of type <code>NamedNodeMap</code>, read$B!>(Bonly</dt>
530  [3] The [DFN@en[[CODE(DOMa)@en[[[generalEntities]]]] attribute]]    <dd><p>A live <code>NamedNodeMap</code> object that contains all the general
531  of the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]] interface    entities belonging to the <code>DocumentType</code> node.</p>
532  is a live [CODE(DOMi)@en[[[NamedNodeMap]]]] object that contains all the    
533  general entities belong to the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]] node.    <p>On getting, the attribute <em class=rfc2119>MUST</em> return the
534  The type of the attribute is [CODE(DOMi)@en[[[NamedNodeMap]]]].    same value as the <code>entities</code> attribute (defined in the
535  The attribute is read-only.    <code>DocumentType</code> interface) of the same node.</p>
536    
537      <div class="note memo">
538        <p>This attribute is part of the interface for historical reason.</p>
539      </div></dd>
540    <!--
541  All entities declared in the document type definition  All entities declared in the document type definition
542  contained in or referenced from the document entity  contained in or referenced from the document entity
543  might not be exposed through this collection, depending  might not be exposed through this collection, depending
# Line 478  representing general entities belong to Line 557  representing general entities belong to
557  the node is read-only. Note that the [CODE(DOMi)@en[[[NamedNodeMap]]]] object is live  the node is read-only. Note that the [CODE(DOMi)@en[[[NamedNodeMap]]]] object is live
558  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
559  reflected by that of the object.  reflected by that of the object.
560    -->
561  The attribute [['''MUST''']] return the same value as the  <dt><dfn id=notations class=dom-attr><code>notations</code></dfn> of type
562  [CODE(DOMa)@en[[[entites]]]] attribute of the  <code>notations</code>, read$B!>(Bonly</code>
563  [CODE(DOMi)@en[[[DocumentType]]]] interface on the same node.    <dd><p>A live <code>NamedNodeMap</code> object that contains all the
564      notations belonging to the <code>DocumentType</code> node.</p>
565  [4] The [DFN@en[[CODE(DOMa)@en[[[notations]]]] attribute]]    
566  of the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]] interface    <p>On getting, the attribute <em class=rfc2119>MUST</em> return the
567  is a live [CODE(DOMi)@en[[[NamedNodeMap]]]] object that contains    same value as the <code>notations</code> attribute (defined in the
568  all the notations belong to the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]]    <code>DocumentType</code> interface) of the same node.</p>
569  node.  The type of the attribute is [CODE(DOMi)@en[[[NamedNodeMap]]]].  
570  The attribute is read-only.    <div class="note memo">
571        <p>This attribute is part of the interface for historical reason.</p>
572        <p>Implementations are not required to implement the
573        <code>notations</code> attribute twice (for <code>DocumentType</code>
574        and <code>DocumentTypeDefinition</code> interfaces); they share exactly
575        same definition.</p>
576      </div></dd>
577    <!--
578  If the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]] node is  If the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]] node is
579  created from an XML document, duplicate notation declarations, if any, in DTD  created from an XML document, duplicate notation declarations, if any, in DTD
580  [['''MUST NOT''']] result in a node in the [CODE(DOMi)@en[[[NamedNodeMap]]]]  [['''MUST NOT''']] result in a node in the [CODE(DOMi)@en[[[NamedNodeMap]]]]
# Line 513  representing notations belong to the nod Line 598  representing notations belong to the nod
598  the node is read-only. Note that the [CODE(DOMi)@en[[[NamedNodeMap]]]] object is live  the node is read-only. Note that the [CODE(DOMi)@en[[[NamedNodeMap]]]] object is live
599  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
600  reflected by that of the object.  reflected by that of the object.
601    -->
602    
603  A DOM implementation is not required to implement the  <dt class=ed>@@ other members...
604  [CODE(DOMa)@en[[[notations]]]] attribute twice  </dl>
 for the [CODE(DOMi)@en[[[DocumentType]]]] and  
 the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]] interfaces;  
 the latter is defined to contain the same value as the former.  
605    
606    <div class=ed>
607    <p>A future version of this interface might define the
608    <code>parameterEntities</code> and getter/setter for parameter entities.
609    </div>
610    
 ** Open Issues (informative)  
   
 [5] A future version of the interface might define the  
 [CODE(DOMa)@en[[[parameterEntities]]]] attribute and  
 getter/setter for parameter entities.  
 </pre>  
611  </div>  </div>
612    
613  <div class=section id=section-elementtypedefinition>  <div class=section id=section-elementtypedefinition>
614  <h2>The <code>ElementTypeDefinition</code> Interface</h2>  <h3>The <code>ElementTypeDefinition</code> Interface</h3>
615    
616  <pre class=idl><code>interface <dfn id=ElementTypeDefinition><code>ElementTypeDefinition</code></dfn> {  <pre class=idl><code>interface <dfn id=ElementTypeDefinition><code>ElementTypeDefinition</code></dfn> : <a href="#Node">Node</a> {
617        readonly attribute <a href="#ownerDocumentTypeDefinition">ownerDocumentTypeDefinition</a>;
618    
619      <span class=ed>@@ more</span>
620  }</code></pre>  }</code></pre>
621    
622  <pre class=ed>** Modifications to [CODE(DOMi)@en[[[Node]]]] members  <pre class=ed>** Modifications to [CODE(DOMi)@en[[[Node]]]] members
# Line 574  interface is defined in [[manakai//DOM E Line 657  interface is defined in [[manakai//DOM E
657  </div>  </div>
658    
659  <div class=section id=section-attributedefinition>  <div class=section id=section-attributedefinition>
660  <h2>The <code>AttributeDefinition</code> Interface</h2>  <h3>The <code>AttributeDefinition</code> Interface</h3>
661    
662  <pre class=idl><code>interface <dfn id=AttributeDefinition><code>AttributeDefinition</code></dfn> {  <pre class=idl><code>interface <dfn id=AttributeDefinition><code>AttributeDefinition</code></dfn> : <a href="#Node">Node</a> {
663      <span class=comment>// <a href="#DeclaredValueType">DeclaredValueType</a></span>
664      const unsigned short <a href="#NO_TYPE_ATTR">NO_TYPE_ATTR</a> = 0;
665      const unsigned short <a href="#CDATA_ATTR">CDATA_ATTR</a> = 1;
666      const unsigned short <a href="#ID_ATTR">ID_ATTR</a> = 2;
667      const unsigned short <a href="#IDREF_ATTR">IDREF_ATTR</a> = 3;
668      const unsigned short <a href="#IDREFS_ATTR">IDREFS_ATTR</a> = 4;
669      const unsigned short <a href="#ENTITY_ATTR">ENTITY_ATTR</a> = 5;
670      const unsigned short <a href="#ENTITIES_ATTR">ENTITIES_ATTR</a> = 6;
671      const unsigned short <a href="#NMTOKEN_ATTR">NMTOKEN_ATTR</a> = 7;
672      const unsigned short <a href="#NMTOKENS_ATTR">NMTOKENS_ATTR</a> = 8;
673      const unsigned short <a href="#NOTATION_ATTR">NOTATION_ATTR</a> = 9;
674      const unsigned short <a href="#ENUMERATION_ATTR">ENUMERATION_ATTR</a> = 10;
675      const unsigned short <a href="#UNKNOWN_ATTR">UNKNOWN_ATTR</a> = 11;
676        
677      readonly attribute <a href="#ElementTypeDefinition">ElementTypeDefinition</a> <a href="#ownerElementTypeDefinition">ownerElementTypeDefinition</a>;
678    
679      readonly attribute unsigned short <a href="#declaredType">declaredType</a>;
680      readonly attribute unsigned short <a href="#defaultType">defaultType</a>;
681    
682      <span class=ed>...</span>
683  }</code></pre>  }</code></pre>
684    
685  <pre class=ed>** Modifications to [CODE(DOMi)@en[[[Node]]]] members  <pre class=ed>** Modifications to [CODE(DOMi)@en[[[Node]]]] members
# Line 621  object is read-only, then throw an Line 723  object is read-only, then throw an
723  then create a [CODE(DOMi)@en[[[Text]]]] node  then create a [CODE(DOMi)@en[[[Text]]]] node
724  whose [CODE(DOMa)@en[[[data]]]] is the new value  whose [CODE(DOMa)@en[[[data]]]] is the new value
725  and append it to the [CODE(DOMi)@en[[[AttributeDefinition]]]].  and append it to the [CODE(DOMi)@en[[[AttributeDefinition]]]].
726    </pre>
727    
728    <dl>
729    <dt><dfn id=ownerElementTypeDefinition class=dom-attr><code>ownerElementTypeDefinition</code></dfn>
730    of type
731    <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>,
732    read$B!>(Bonly</dt>
733      <dd><p>The
734      <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> to
735      which the <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>
736      node belongs.</p>
737    
738      <p>On getting, the attribute <em class=rfc2119>MUST</em> return an
739      <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> node.
740      It <em class=rfc2119>MUST</em> be such a node that whose
741      <a href="#attributeDefinitons"><code>attributeDefinitions</code></a>
742      attribute contains the <code>NamedNodeMap</code> object that contains
743      the <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>
744      node.  If there is no such an
745      <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> node,
746      then <code>null</code> <em class=rfc2119>MUST</em> be returned.</p>
747    <dt><dfn id=declaredType class=dom-attr><code>declaredType</code></dfn> of type
748    <code>unsigned short</code></dt>
749      <dd><p>The declared type <span class=ed>@@ ref</span> of the attribute.
750      It is expected that this attribute contains a value from the definition group
751      <a href="#DeclaredValueType"><code>DeclaredValueType</code></a>.</p>
752    
753      <p>On getting, the attribute <em class=rfc2119>MUST</em> return the
754      value associated to this attribute.</p>
755    
756      <p>On setting, the attribute <em class=rfc2119>MUST</em> raise a
757      <code>NO_MODIFICATION_ALLOWED_ERR</code> <span class=ed>@@ ref</span>
758      exception if the
759      <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node
760      is read$B!>(Bonly <span class=ed>@@ ref</span>.  Otherwise, it
761      <em class=rfc2119>MUST</em> set the specified value as the value
762      associated to this attribute.</p>
763    
764      <p>If the <code>AttributeDefinition</code> node is created during the process
765      to create a <abbr>DOM</abbr> from an <abbr>XML</abbr> document, an
766      appropriate value from the
767      <a href="#DeclaredValueType"><code>DeclaredValueType</code></a> constant
768      group <em class=rfc2119>MUST</em> be set to the attribute.</p>
769    
770      <!-- DeclaredValueType -->
771    <p>The definition group
772    <dfn id=DeclaredValueType><code>DeclaredValueType</code></dfn> contains
773    integers indicating the declared type of attributes.  The definition
774    group contains the following constants:</p>
775    
776    <table>
777    <thead>
778    <tr><th scope=col>Name<th scope=col>Value<th scope=col>Description</tr>
779    </thead>
780    <tbody>
781    <tr>
782    <th scope=row><dfn id=NO_TYPE_ATTR class=dom-const><code>NO_TYPE_ATTR</code>
783    <td><code>0</code><td>No value <span class=ed>[INFOSET]</span>.</tr>
784    <tr>
785    <th scope=row><dfn id=CDATA_ATTR class=dom-const><code>CDATA_ATTR</code>
786    <td><code>1</code><td><code>CDATA</code> <span class=ed>[XML]</span>.</tr>
787    <tr>
788    <th scope=row><dfn id=ID_ATTR class=dom-const><code>ID_ATTR</code>
789    <td><code>2</code><td><code>ID</code> <span class=ed>[XML]</span>.</tr>
790    <tr>
791    <th scope=row><dfn id=IDREF_ATTR class=dom-const><code>IDREF_ATTR</code>
792    <td><code>3</code><td><code>IDREF</code> <span class=ed>[XML]</span>.</tr>
793    <tr>
794    <th scope=row><dfn id=IDREFS_ATTR class=dom-const><code>IDREFS_ATTR</code>
795    <td><code>4</code><td><code>IDREFS</code> <span class=ed>[XML]</span>.</tr>
796    <tr>
797    <th scope=row><dfn id=ENTITY_ATTR class=dom-const><code>ENTITY_ATTR</code>
798    <td><code>5</code><td><code>ENTITY</code> <span class=ed>[XML]</span>.</tr>
799    <tr>
800    <th scope=row><dfn id=ENTITIES_ATTR class=dom-const><code>ENTITIES_ATTR</code>
801    <td><code>6</code><td><code>ENTITIES</code> <span class=ed>[XML]</span>.</tr>
802    <tr>
803    <th scope=row><dfn id=NMTOKEN_ATTR class=dom-const><code>NMTOKEN_ATTR</code>
804    <td><code>7</code><td><code>NMTOKEN</code> <span class=ed>[XML]</span>.</tr>
805    <tr>
806    <th scope=row><dfn id=NMTOKENS_ATTR class=dom-const><code>NMTOKENS_ATTR</code>
807    <td><code>8</code><td><code>NMTOKENS</code> <span class=ed>[XML]</span>.</tr>
808    <tr>
809    <th scope=row><dfn id=NOTATION_ATTR class=dom-const><code>NOTATION_ATTR</code>
810    <td><code>9</code><td><code>NOTATION</code> <span class=ed>[XML]</span>.</tr>
811    <tr>
812    <th scope=row><dfn id=ENUMERATION_ATTR class=dom-const><code>ENUMERATION_ATTR</code>
813    <td><code>10</code><td>Enumeration <span class=ed>[XML]</span>.</tr>
814    <tr>
815    <th scope=row><dfn id=UNKNOWN_ATTR class=dom-const><code>UNKNOWN_ATTR</code>
816    <td><code>11</code><td>Unknown, because no declaration for the attribute
817    has been read but the [all declaration processed] property
818    <span class=ed>[INFOSET]</span> would be false.</tr>
819    </tbody>
820    </table>
821    
822    <p>If no attribute type information is available, or if the source
823    of the information does not distinguish <q>no value</q> and <q>unknown</q>
824    <span class=ed>[INFOSET]</span>, then the value
825    <a href="#NO_TYPE_ATTR"><code>NO_TYPE_ATTR</code></a>
826    <em class=rfc2119>MUST</em> be used.</p>
827    
828    <div class="note memo">
829    <p>An <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node
830    created by the
831    <a href="#createAttributeDefinition"><code>createAttributeDefinition</code></a>
832    method has its <a href="#declaredType"><code>declaredType</code></a> attribute
833    set to <a href="#NO_TYPE_ATTR"><code>NO_TYPE_ATTR</code></a>.</p>
834    </div>
835    
836    <p>If the source of the information does not distinguish <q>no value</q>
837    and/or <q>unknown</q> <span class=ed>[INFOSET]</span> and
838    <code>CDATA</code> <span class=ed>[XML]</span>, then the value
839    <a href="#CDATA_ATTR"><code>CDATA_ATTR</code></a> <em class=rfc2119>MUST</em>
840    be used.</p>
841    
842    <p>In Perl binding <span class=ed>[PERLBINDING]</span>, the
843    <code>Attr</code> nodes <em class=rfc2119>MUST</em> implement the
844    <a href="#DeclaredValueType"><code>DeclaredValueType</code></a>
845    definition group.</p>
846    
847      </dd>
848    <dt><dfn id=defaultType class=dom-attr><code>defaultType</code></dfn> of
849    type <code>unsigned short</code></dt>
850      <dd><p>The type of the default for the attribute.  It is expected that this
851      attribute contains a value from the definition group
852      <a href="#DefaultValueType"><code>DefaultValueType</code></a>.</p>
853    
854      <p>On getting, the attribute <em class=rfc2119>MUST</em> return
855      the value associated to this attribute.</p>
856    
857      <p>On setting, the attribute <em class=rfc2119>MUST</em> raise a
858      <code>NO_MODIFICATION_ALLOWED_ERR</code> <span class=ed>@@ ref</span>
859      exception if the
860      <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node
861      is read$B!>(Bonly <span class=ed>@@ ref</span>.  Otherwise, it
862      <em class=rfc2119>MUST</em> set the specified value as the value
863      associated to this attribute.</p>
864    
865      <p>If the
866      <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node is
867      created during the process to create a <abbr>DOM</abbr> from an
868      <abbr>XML</abbr> document, an appropriate value from the
869      <a href="#DefaultValueType"><code>DefaultValueType</code></a> definition
870      group <em class=rfc2119>MUST</em> be set to the attribute.</p>
871    
872      <!-- DefaultValueType -->
873      <p>The definition group
874      <dfn id=DefaultValueType><code>DefaultValueType</code></dfn>
875      contains integers indicating the type of the default for the attribute.
876      The definition group contains the following constans:</p>
877    
878      <table>
879      <thead>
880      <tr><th scope=col>Name<th scope=col>Value<th scope=col>Description</tr>
881      </thead>
882      <tbody>
883      <tr>
884      <th scope=row><dfn id=UNKNOWN_DEFAULT class=dom-const><code>UNKNOWN_DEFAULT</code></dfn>
885      <td><code>0</code><td>Unknown.</tr>
886      <tr>
887      <th scope=row><dfn id=FIXED_DEFAULT class=dom-const><code>FIXED_DEFAULT</code></dfn>
888      <td><code>1</code><td>Provided explicitly and fixed
889      <span class=ed>@@ ref</span> to that value.</tr>
890      <tr>
891      <th scope=row><dfn id=REQUIRED_DEFAULT class=dom-const><code>REQUIRED_DEFAULT</code></dfn>
892      <td><code>2</code><td>No default value and the attribute have to be
893      explicitly specified.</tr>
894      <tr>
895      <th scope=row><dfn id=IMPLIED_DEFAULT class=dom-const><code>IMPLIED_DEFAULT</code></dfn>
896      <td><code>3</code><td>Implied <span class=ed>@@ ref</span>.</tr>
897      <tr>
898      <th scope=row><dfn id=EXPLICIT_DEFAULT class=dom-const><code>EXPLICIT_DEFAULT</code></dfn>
899      <td><code>4</code><td>Provided explicitly.</tr>
900      </tbody>
901      </table>
902    
903      <p>If the source of the default type does not distinguish
904      implied and unknown default types, then the value
905      <a href="#IMPLIED_DEFAULT"><code>IMPLIED_DEFAULT</code></a>
906      <em class=rfc2119>MUST</em> be used.</p>
907    
908      <div class="note memo">
909      <p>An <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>
910      node created by the
911      <a href="#createAttributeDefinition"><code>createAttributeDefinition</code></a>
912      method has its <a href="#defaultType"><code>defaultType</code></a>
913      attribute set to
914      <a href="#UNKNOWN_DEFAULT"><code>UNKNOWN_DEFAULT</code></a>.</p>
915      </div></dd>
916    </dl>
917    
918    </div>
919    
920  ** Definition groups  <div class=section id=section-documenttype>
921    <h3>Modifications to the <code id=DocumentType>DocumentType</code>
922    Interface</h3>
923    
924    <p>A <a href="#DocumentType"><code>DocumentType</code></a> interface
925    <em class=rfc2119>MAY</em> contain zero or more
926    <a href="#ProcessingInstruction"><code>ProcessingInstruction</code></a>
927    nodes in the <code>NodeList</code> object contained in the
928    <code>childNodes</code> attribute of the
929    <a href="#DocumentType"><code>DocumentType</code></a> node.</p>
930    
931    <p>If the <a href="#DocumentType"><code>DocumentType</code></a> node is created
932    during the process to create a <abbr>DOM</abbr> from an <abbr>XML</abbr>
933    document, the <code>NodeList</code> object in the <code>childNodes</code>
934    object <em class=rfc2119>MUST</em> contains the
935    <a href="#ProcessingInstruction"><code>ProcessingInstruction</code></a>
936    nodes representing the processing instructions in the document type
937    definition of the document processed <span class=ed>@@ ref</span> by
938    the <abbr>XML</abbr> processor.  If the
939    <a href="#DocumentType"><code>DocumentType</code></a> node is marked
940    as read$B!>(Bonly, then all the child nodes <em class=rfc2119>MUST</em>
941    also be marked as read$B!>(Bonly.</p>
942    
943    <p>If a <a href="#DocumentType"><code>DocumentType</code></a> node is created
944    from a document type declaration information item <span class=ed>@@ ref</span>,
945    the <code>NodeList</code> object in the <code>childNodes</code> attribute
946    of the node <em class=rfc2119>MUST</em> contain the
947    <a href="#ProcessingInstruction"><code>ProcessingInstruction</code></a> nodes
948    created from the processing instruction information items in the list in the
949    [children] property of the document type declaration item in the same
950    order.</p>
951    
952    <p>If a <a href="#DocumentType"><code>DocumentType</code></a> node is mapped to
953    a document type declaration information item, the list in the [children]
954    property <em class=rfc2119>MUST</em> contain the processng instruction
955    information items created from the
956    <a href="#ProcessingInstruction"><code>ProcessingInstruction</code></a> nodes
957    in the <code>NodeList</code> object in the <code>childNodes</code> attribute
958    of the <a href="#DocumentType"><code>DocumentType</code></a> node.</p>
959    
960    <pre class=idl><code>// Modifications to the DocumentType interface
961      attribute DOMString <a href="#publicId">publicId</a>;
962      attribute DOMString <a href="#systemId">systemId</a>;
963    
964      attribute DOMString <a href="#internalSubset">internalSubset</a>;
965    </code></pre>
966    
967    <p>The <code id=publicId>publicId</code> attribute and the
968    <code id=systemId>systemId</code> attribute of
969    <a href="#DocumentType"><code>DocumentType</code></a>,
970    <a href="#Entity"><code>Entity</code></a>, and
971    <a href="#Notation"><code>Notation</code></a> interfaces are no longer
972    read$B!>(Bonly.</p>
973    
974    <p>On setting, the attribute <em class=rfc2119>MUST</em> raise a
975    <code>NO_MODIFICATION_ALLOWED_ERR</code> <span class=ed>@@ ref</span>
976    exception if the node is read$B!>(Bonly <span class=ed>@@ ref</span>.  
977    Otherwise, it <em class=rfc2119>MUST</em> set the specified value as the value
978    associated to the attribute.  No normalization, relative reference resolution,
979    or lexical validation is performed. <span class=ed>@@ If the new
980    value is <code>null</code>, ...</span></p>
981    
982    <div class="note memo">
983    <p>Setting an invalid identifier might make the node unserializable.
984    Setting a public identifier while leaveing system identifier unspecified
985    would also make the <a href="#DocumentType"><code>DocumentType</code></a>
986    or <a href="#Entity"><code>Entity</code></a> node unserializable.</p>
987    </div>
988    
989    <div class=ed>
990    <p>ISSUE: In HTML5, Firefox 1.5, and Opera 9, not specifying public or system identifier results in empty strings.</p>
991    </div>
992    
993    <p>The <code id=internalSubset>internalSubset</code> attribute of the
994    <a href="#DocumentType"><code>DocumentType</code></a> interface is no longer
995    read$B!>(Bonly.</p>
996    
997    <p>On setting, the attribute <em class=rfc2119>MUST</em> raise a
998    <code>NO_MODIFICATION_ALLOWED_ERR</code> <span class=ed>@@ ref</span>
999    exception if the node is read$B!>(Bonly <span class=ed>@@ ref</span>.  
1000    Otherwise, it <em class=rfc2119>MUST</em> set the specified value as the value
1001    associated to the attribute.  No normalization, or lexical validation is
1002    performed. <span class=ed>@@ If the new value is <code>null</code>,
1003    ...</span></p>
1004    
 [6] The  
 [DFN@en[definition group [CODE(DOM)@en[[[DeclaredValueType]]]]]]  
 contains integers indicating the type of  
 attribute value:  
 ,[CODE(DOMc)@en[[[NO_TYPE_ATTR]]]],[CODE(IDL)[[[0]]]],The attribute value type corresponding to [[no value]] in XML Information Set.  
 ,[CODE(DOMc)@en[[[CDATA_ATTR]]]],[CODE(IDL)[[[1]]]],The attribute value type is [CODE(XML)@en[[[CDATA]]]].  
 ,[CODE(DOMc)@en[[[ID_ATTR]]]],[CODE(IDL)[[[2]]]],The attribute value type is [CODE(XML)@en[[[ID]]]].  
 ,[CODE(DOMc)@en[[[IDREF_ATTR]]]],[CODE(IDL)[[[3]]]],The attribute value type is [CODE(XML)@en[[[IDREF]]]].  
 ,[CODE(DOMc)@en[[[IDREFS_ATTR]]]],[CODE(IDL)[[[4]]]],The attribute value type is [CODE(XML)@en[[[IDREFS]]]].  
 ,[CODE(DOMc)@en[[[ENTITY_ATTR]]]],[CODE(IDL)[[[5]]]],The attribute value type is [CODE(XML)@en[[[ENTITY]]]].  
 ,[CODE(DOMc)@en[[[ENTITIES_ATTR]]]],[CODE(IDL)[[[6]]]],The attribute value type is [CODE(XML)@en[[[ENTITIES]]]].  
 ,[CODE(DOMc)@en[[[NMTOKEN_ATTR]]]],[CODE(IDL)[[[7]]]],The attribute value type is [CODE(XML)@en[[[NMTOKEN]]]].  
 ,[CODE(DOMc)@en[[[NMTOKENS_ATTR]]]],[CODE(IDL)[[[8]]]],The attribute value type is [CODE(XML)@en[[[NMTOKENS]]]].  
 ,[CODE(DOMc)@en[[[NOTATION_ATTR]]]],[CODE(IDL)[[[9]]]],The attribute value type is [CODE(XML)@en[[[NOTATION]]]].  
 ,[CODE(DOMc)@en[[[ENUMERATION_ATTR]]]],[CODE(IDL)[[[10]]]],The attribute value is enumeration type.  
 ,[CODE(DOMc)@en[[[UNKNOWN_ATTR]]]],[CODE(IDL)[[[11]]]],"The attribute value type is unknown, because no declaration for the attribute has been read but not [CODE(InfoProp)@en[[[all declarations processed]]]] property would be false."  
   
 The type of these constants are  
 [CODE(IDL)@en[[[unsigned]] [[short]]]].  
   
 If no attribute type information is provided,  
 or if the source of that information does not  
 distinguish [[no value]] and [[unknown]] as in  
 XML Information Set, then the  
 [CODE(DOMc)@en[[[NO_TYPE_ATTR]]]] 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]]]].  
   
 If the source of the attribute type information  
 does not distinguish [[no value]] and / or [[unknown]]  
 and [CODE(XML)@en[[[CDATA]]]], then the  
 [CODE(DOMc)@en[[[CDATA_ATTR]]]] value [['''MUST''']]  
 be used.  
   
 [11]  
 In Perl binding, the objects implementing the  
 [CODE(DOMi)@en[[[Attr]]]] interface [['''MUST''']]  
 also implement the [CODE(DOM)@en[[[DeclaredValueType]]]]  
 constant group.  
   
 [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]]]].  
   
 ** Tree-relationship Attributes  
   
 [10]  
 The  
 [DFN@en[[CODE(DOMa)@en[[[ownerElementTypeDefinition]]]] attribute]]  
 of the [CODE(DOMi)@en[[[AttributeDefinition]]]] interface  
 is read-only and of type  
 [CODE(DOMi)@en[[[ElementTypeDefinition]]]].  
 It is the [CODE(DOMi)@en[[[ElementTypeDefinition]]]] node  
 which the [CODE(DOMi)@en[[[AttributeDefinition]]]] node  
 belong to.  
   
 If the [CODE(DOMi)@en[[[AttributeDefinition]]]] node  
 is included in the [CODE(DOMa)@en[[[attributeDefinitions]]]]  
 list of an [CODE(DOMi)@en[[[ElementTypeDefinition]]]] node,  
 then the attribute [['''MUST''']] return the  
 [CODE(DOMi)@en[[[ElementTypeDefinition]]]] node.  
 Otherwise, it [['''MUST''']] return [CODE(DOM)@en[[[null]]]].  
   
 ;; This attribute is analogue to the  
 [CODE(DOMa)@en[[[ownerDocumentTypeDefinition]]]] attribute  
 for [CODE(DOMi)@en[[[ElementTypeDefinition]]]],  
 [CODE(DOMi)@en[[[Entity]]]], and [CODE(DOMi)@en[[[Notation]]]]  
 nodes, or the [CODE(DOMa)@en[[[ownerElement]]]]  
 attribute for [CODE(DOMi)@en[[[Attr]]]] nodes.  
   
 ** Attributes  
   
 [5]  
 The [DFN@en[[CODE(DOMa)@en[[[declaredType]]]] attribute]]  
 of an [CODE(DOMi)@en[[[AttributeDefinition]]]] object  
 represents the type of the attribute value.  
   
 This attribute is read-write.  
 The type of the attribute is  
 [CODE(IDL)@en[[[unsigned]] [[short]]]].  It is expected  
 that this attribute has a value from the definition group  
 [CODE(DOM)@en[[[DeclaredValueType]]]].  
   
 The getter [['''MUST''']] return a value associated  
 to this attribute.  
   
 The setter [['''MUST''']]  
 throw a [CODE(DOMc)@en[[[NO_MODIFICATION_ALLOWED_ERR]]]]  
 [CODE(DOMi)@en[[[DOMException]]]] if the  
 [CODE(DOMi)@en[[[AttributeDefinition]]]] object is read-only.  
 Otherwise, the setter [['''MUST''']] set the specified  
 value as the value associated to this attribute.  
   
 If a parser create an [CODE(DOMi)@en[[[AttributeDefinition]]]]  
 object, then it [['''MUST''']] set a value  
 from the [CODE(DOM)@en[[[DeclaredValueType]]]]  
 definition group.  
   
 [8]  
 The [DFN@en[[CODE(DOMa)@en[[[defaultType]]]] attribute]]  
 of an [CODE(DOMi)@en[[[AttributeDefinition]]]] object  
 represents the type of the attribute default value.  
   
 This attribute is read-write.  
 The type of the attribute is  
 [CODE(IDL)@en[[[unsigned]] [[short]]]].  It is expected  
 that this attribute has a value from the definition group  
 [CODE(DOM)@en[[[DefaultValueType]]]].  
   
 The getter [['''MUST''']] return a value associated  
 to this attribute.  
   
 The setter [['''MUST''']]  
 throw a [CODE(DOMc)@en[[[NO_MODIFICATION_ALLOWED_ERR]]]]  
 [CODE(DOMi)@en[[[DOMException]]]] if the  
 [CODE(DOMi)@en[[[AttributeDefinition]]]] object is read-only.  
 Otherwise, the setter [['''MUST''']] set the specified  
 value as the value associated to this attribute.  
   
 If a parser create an [CODE(DOMi)@en[[[AttributeDefinition]]]]  
 object, then it [['''MUST''']] set a value  
 from the [CODE(DOM)@en[[[DefaultValueType]]]]  
 definition group.</pre>  
1005  </div>  </div>
1006    
1007  </div>  </div>

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.14

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24