/[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.3 by wakaba, Sun Dec 2 04:46:21 2007 UTC revision 1.13 by wakaba, Mon Dec 3 11:57:22 2007 UTC
# Line 3  Line 3 
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">
6    <link rel="stylesheet" href="http://suika.fam.cx/www/style/def/dom">
7  <link rel="license" href="http://suika.fam.cx/c/gnu/fdl">  <link rel="license" href="http://suika.fam.cx/c/gnu/fdl">
8  </head>  </head>
9  <body class="has-abstract">  <body class="has-abstract">
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 124  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 138  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 171  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-documentxdoctype>
178    <h3>The <code>DocumentXDoctype</code> Interface</h3>
179    
180    <pre class=idl><code>interface <dfn id=DocumentXDoctype><code>DocumentXDoctype</code></dfn> {
181      DocumentType <a href="#createDocumentTypeDefinition">createDocumentTypeDefinition</a>
182        (in DOMString <a href="#createDocumentTypeDefinition-name"><var>name</var></a>)
183        raises (DOMException);
184      <a href="#ElementTypeDefinition">ElementTypeDefinition</a> <a href="#createElementTypeDefinition">createElementTypeDefinition</a>
185        (in DOMString <a href="#createElementTypeDefinition-name"><var>name</var></a>)
186        raises (DOMException);
187      <a href="#AttributeDefinition">AttributeDefinition</a> <a href="#createAttributeDefinition">createAttributeDefinition</a>
188        (in DOMString <a href="#createAttributeDefinition-name"><var>name</var></a>)
189        raises (DOMException);
190      <a href="#Entity">Entity</a> <a href="#createGeneralEntity">createGeneralEntityDefinition</a>
191        (in DOMString <a href="#createGeneralEntity-name"><var>name</var></a>)
192        raises (DOMException);
193      <a href="#Notation">Notation</a> <a href="#createNotation">createNotation</a>
194        (in DOMString <a href="#createNotation-name"><var>name</var></a>)
195        raises (DOMException);
196    }</code></pre>
197    
198    <div class=ed>@@ cast definition</div>
199    
200    <dl>
201    <dt><dfn id=createDocumentTypeDefinition class=dom-method><code>createDocumentTypeDefinition</code></dfn>,
202    method</dt>
203      <dd>
204        <p>This method creates a <code>DocumentType</code> node with the specified
205        name, belonging to the document.</p>
206        <p>The <dfn id=createDocumentTypeDefinition-name class=dom-param><var>name</var></dfn>
207        parameter is the name of the document type.</p>
208    
209        <p>When invoked, the method <em class=rfc2119>MUST</em> create and
210        return a <code>DocumentType</code> node with the following attributes:</p>
211        <dl>
212        <dt><code>attributes</code>, <code>parentNode</code></dt>
213          <dd><code>null</code>.</dd>
214        <dt><code>elementTypes</code>, <code>generalEntities</code>, and
215        <code>notations</code></dt>
216          <dd>Empty <code>NamedNodeMap</code> objects.</dd>
217        <dt><code>entities</code></dt>
218          <dd>The same value as the <code>generalEntities</code> attribute.</dd>
219        <dt><code>childNodes</code></dt>
220          <dd>An empty <code>NodeList</code> object.</dd>
221        <dt><code>internalSubset</code>, <code>publicId</code>, and
222        <code>systemId</code></dt>
223          <dd>Empty strings.</dd>
224        <dt><code>manakaiReadOnly</code> <span class=ed>[manakai]</span></dt>
225          <dd><code>false</code>.</dd>
226        <dt><code>nodeName</code></dt>
227          <dd><a href="#createDocumentTypeDefinition-name"><var>name</var></a>.</dd>
228        <dt><code>ownerDocument</code></dt>
229          <dd>The <code>Document</code> over which the method is invoked.</dd>
230        </dl>
231        <p>In addition, the method <em class=rfc2119>MUST</em> be marked as
232        containing five general entity declarations: <code>amp</code>,
233        <code>lt</code>, <code>gt</code>, <code>quot</code>, and
234        <code>apos</code>.</p>
235      </dd>
236    <dt><dfn id=createElementTypeDefinition class=dom-method><code>createElementTypeDefinition</code></dfn>,
237    method</dt>
238      <dd>
239        <p>This method creates a <code>ElementTypeDefinition</code> node with the
240        specified name, belonging to the document.</p>
241        <p>The <dfn id=createElementTypeDefinition-name class=dom-param><var>name</var></dfn>
242        parameter is the name of the element type defined by the element
243        type definition.</p>
244    
245        <p>When invoked, the method <em class=rfc2119>MUST</em> create and
246        return an
247        <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>
248        node with the following attributes:</p>
249        <dl>
250        <dt><a href="#attributeDefinitions"><code>attributeDefinitions</code></a></dt>
251          <dd>An empty <code>NamedNodeMap</code> object.</dd>
252        <dt><code>attributes</code>, <code>parentNode</code></dt>
253          <dd><code>null</code>.</dd>
254        <dt><code>childNodes</code></dt>
255          <dd>An empty <code>NodeList</code> object.</dd>
256        <dt><code>manakaiReadOnly</code> <span class=ed>[manakai]</span></dt>
257          <dd><code>false</code>.</dd>
258        <dt><code>nodeName</code></dt>
259          <dd><a href="#createElementTypeDefinition-name"><var>name</var></a>.</dd>
260        <dt><code>ownerDocument</code></dt>
261          <dd>The <code>Document</code> node over which the method is invoked.</dd>
262        <dt><a href="#ownerDocumentTypeDefinition"><code>ownerDocumentTypeDefinition</code></a></dt>
263          <dd><code>null</code>.</dd>
264        <dt class=ed>@@ Ensure all attributes are defined</dt>
265        </dl>
266      </dd>
267    <dt><dfn id=createAttributeDefinition class=dom-method><code>createAttributeDefinition</code></dfn>,
268    method</dt>
269      <dd>
270        <p>This method creates a <code>AttributeDefinition</code> node with the
271        specified name, belonging to the document.</p>
272        <p>The <dfn id=createAttributeDefinition-name class=dom-param><var>name</var></dfn>
273        parameter is the name of the attribute defined by the attribute
274        definition.</p>
275    
276        <p>When invoked, the method <em class=rfc2119>MUST</em> create and
277        return an
278        <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>
279        node with the following attributes:</p>
280        <dl>
281        <dt><code>allowedTokens</code></dt>
282          <dd>An empty <code>DOMStringList</code> object.</dd>
283        <dt><code>attributes</code>,
284        <a href="#ownerElementTypeDefinition"><code>ownerElementTypeDefinition</code></a>,
285        and <code>parentNode</code></dt>
286          <dd><code>null</code>.</dd>
287        <dt><code>childNodes</code></dt>
288          <dd>An empty <code>NodeList</code> object.</dd>
289        <dt><code>declaredType</code></dt>
290          <dd><a href="#NO_TYPE_ATTR"><code>NO_TYPE_ATTR</code></a>.</dd>
291        <dt><code>defaultType</code></dt>
292          <dd><a href="#UNKNOWN_DEFAULT"><code>UNKNOWN_DEFAULT</code></a>.</dd>
293        <dt><code>manakaiReadOnly</code> <span class=ed>[manakai]</span></dt>
294          <dd><code>false</code>.</dd>
295        <dt><code>nodeName</code></dt>
296          <dd><a href="#createAttributeDefinition-name"><var>name</var></a>.</dd>
297        <dt><code>ownerDocument</code></dt>
298          <dd>The <code>Document</code> node over which the method is invoked.</dd>
299        <dt class=ed>@@ Ensure all attributes are defined</dt>
300        </dl>
301    
302        <div class=ed>
303        <p>@@ Should we keep these statements?:
304    However, if the &lt;cfg::cfg|xml-id> configuration
305    parameter is set to <code>true</code> and the <var>name</var>
306    is <code>xml:id</code>, then the [CODE(DOMa)@en[[[declaredType]]]]
307    attribute is set to <code>ID_ATTR</code>.
308    [CODE(DOMa)@en[[[defaultType]]]]?</p>
309        </div>
310      </dd>
311    <dt><dfn id=createGeneralEntity class=dom-method><code>createGeneralEntity</code></dfn>,
312    method</dt>
313      <dd>
314        <p>This method creates a <a href="#Entity"><code>Entity</code></a> node
315        with the specified name, which represents a general entity, belonging to
316        the document.</p>
317        <p>The <dfn id=createGeneralEntity-name class=dom-param><var>name</var></dfn>
318        parameter is the name of the general entity.</p>
319    
320        <p>When invoked, the method <em class=rfc2119>MUST</em> create and return
321        an <a href="#Entity"><code>Entity</code></a> node with the following
322        attributes:</p>
323        <dl>
324        <dt><code>attributes</code>, <code>notationName</code>,
325        <a href="#ownerDocumentTypeDefinition"><code>ownerDocumentTypeDefinition</code></a>,
326        and <code>parentNode</code></dt>
327          <dd><code>null</code>.</dd>
328        <dt><code>childNodes</code></dt>
329          <dd>An empty <code>NodeList</code> object.</dd>
330        <dt><code>manakaiDeclarationBaseURI</code>,
331        <code>manakaiEntityBaseURI</code>, and
332        <code>manakaiEntityURI</code> <span class=ed>@@ ref</span></dt>
333          <dd>No explicit value is set.</dd>
334        <dt><code>manakaiHasReplacementTree</code> and
335        <code>manakaiReadOnly</code> <span class=ed>[manakai]</span></dt>
336          <dd><code>false</code>.</dd>
337        <dt><code>nodeName</code></dt>
338          <dd><a href="#createGeneralEntity-name"><var>name</var></a>.</dd>
339          <dd>
340            <div class="note memo">
341              <p>It is not an error for
342              <a href="#createGeneralEntity-name"><var>name</var></a> matching
343              to the name of one of predefined general parsed entities in
344              <abbr>XML</abbr> or <abbr>HTML</abbr>.  For example,
345              <a href="#createGeneralEntity-name"><var>name</var></a> might be
346              <code>amp</code>, resulting in an
347              <a href="#Entity"><code>Entity</code></a> node
348              with its <code>nodeName</code> attribute set to <code>amp</code>.</p>
349            </div>
350          </dd>
351        <dt><code>ownerDocument</code></dt>
352          <dd>The <code>Document</code> node over which the method is invoked.</dd>
353        <dt><code>publicId</code>, and <code>systemId</code></dt>
354          <dd><code>null</code>.</dd>
355          <dd class=ed>@@ publicId and systemId should be empty string?</dd>
356        <dt class=ed>@@ Ensure all attributes are defined</dd>
357        </dl>
358      </dd>
359    <dt><dfn id=createNotation class=dom-method><code>createNotation</code></dfn>,
360    method</dt>
361      <dd>
362        <p>This method creates a <code>Notation</code> node with the
363        specified name, belonging to the document.</p>
364        <p>The <dfn id=createNotation-name class=dom-param><var>name</var></dfn>
365        parameter is the name of the notation.</p>
366    
367        <p>When invoked, the method <em class=rfc2119>MUST</em> create and return
368        a <code>Notation</code> node with the following attributes:</p>
369        <dl>
370        <dt><code>attributes</code>,
371        <a href="#ownerDocumentTypeDefinition"><code>ownerDocumentTypeDefinition</code></a>,
372        and <code>parentNode</code></dt>
373          <dd><code>null</code>.</dd>
374        <dt><code>childNodes</code></dt>
375          <dd>An empty <code>NodeList</code> object.</dd>
376        <dt><code>manakaiDeclarationBaseURI</code></dt>
377          <dd>No explicit value is set.</dd>
378        <dt><code>manakaiReadOnly</code> <span class=ed>[manakai]</span></dt>
379          <dd><code>false</code>.</dd>
380        <dt><code>nodeName</code></dt>
381          <dd><a href="#createNotation-name"><var>name</var></a>.</dd>
382        <dt><code>ownerDocument</code></dt>
383          <dd>The <code>Document</code> node over which the method is invoked.</dd>
384        <dt><code>publicId</code> and <code>systemId</code></dt>
385          <dd><code>null</code>.</dd>
386          <dd class=ed>@@ publicId and systemId should be empty string?</dd>
387        <dt class=ed>@@ Ensure all attributes are defined</dt>
388        </dl>
389      </dd>
390    </dl>
391    
392    <p>These methods <em class=rfc2119>MUST</em> raise an
393    <code>INVALID_CHARACTER_ERR</code> exception <span class=ed>@@ ref</span>
394    if <var>name</var> is <em>not</em> a legal <code>Name</code> according to
395    the <abbr>XML</abbr> version in use, as specified in the
396    <code>xmlVersion</code> attribute of the <code>Document</code> node.</p>
397    
398    <div class="note memo">
399    <p>Non$B!>(B<abbr>XML</abbr> case is intentionally left unspecified for now,
400    since <abbr>DOM3</abbr> specification <span class=ed>@@ ref</span> does not
401    define it for <code>Document</code> methods.</p>
402    
403    <p><var>name</var> does not have to be a namespace qualified name.</p>
404    </div>
405    
406    </div>
407    
408    <div class=section id=section-documenttypedefinition>
409    <h3>The <code>DocumentTypeDefinition</code> Interface</h3>
410    
411    <pre class=idl><code>interface <dfn id=DocumentTypeDefinition><code>DocumentTypeDefinition</code></dfn> {
412      readonly attribute NamedNodeMap <a href="#elementTypes">elementTypes</a>;
413      readonly attribute NamedNodeMap <a href="#generalEntities">generalEntities</a>;
414      readonly attribute NamedNodeMap <a href="#notations">notations</a>;
415    
416      <a href="#ElementTypeDefinition">ElementTypeDefinition</a> <a href="#getElementTypeDefinitionNode">getElementTypeDefinitionNode</a>
417        (in DOMString <a href="#getElementTypeDefinitionNode-name"><var>name</var></a>);
418      <a href="#Entity">Entity</a> <a href="#getGeneralEntityNode">getGeneralEntityNode</a>
419        (in DOMString <a href="#getGeneralEntityNode-name"><var>name</var></a>);
420      <a href="#Notation">Notation</a> <a href="#getNotationNode">getNotationNode</a>
421        (in DOMString <a href="#getNotationNode-name"><var>name</var></a>);
422    
423      void <a href="#setElementTypeDefinitionNode">setElementTypeDefinitionNode</a>
424        (in DOMString <a href="#setElementTypeDefinitionNode-node"><var>node</var></a>)
425        raises (DOMException);
426      void <a href="#setGeneralEntityNode">setGeneralEntityNode</a>
427        (in DOMString <a href="#setGeneralEntityNode-node"><var>node</var></a>)
428        raises (DOMException);
429      void <a href="#setNotationNode">setNotationNode</a>
430        (in DOMString <a href="#setNotationNode-node"><var>node</var></a>)
431        raises (DOMException);
432    }</code></pre>
433    
434    <pre class=ed>
435    [1] In an implementation that supports the
436    [CODE(URI)@en[[[http://suika.fam.cx/www/2006/feature/XDoctype]]]]
437    feature, a [CODE(DOMi)@en[[[DocumentType]]]] node
438    must implement the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]]
439    interface.  See [[DOM XML Document Type Definition]>>3] for
440    details.
441    </pre>
442    
443    <dl>
444    <dt><dfn id=elementTypes class=dom-attr><code>elementTypes</code></dfn> of
445    type <code>NamedNodeMap</code>, read$B!>(Bonly</dt>
446      <dd><p>A live <code>NamedNodeMap</code> object that contains all the element
447      type definitions belonging to the <code>DocumentType</code> node.</p>
448    
449      <p>On getting, the attribute <em class=rfc2119>MUST</em> return the
450      <code>NamedNodeMap</code> object that contains all the
451      <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>
452      nodes belonging to the <code>DocumentType</code> node.  The
453      <code>NamedNodeMap</code> object <em class=rfc2119>MUST</em> be read$B!>(Bonly
454      if and only if the node is read$B!>(Bonly.  The <code>NamedNodeMap</code>
455      object <em class=rfc2119>MUST</em> be live and the same object
456      <em class=rfc2119>MUST</em> be returned for any invocation.</p>
457    
458      <p>If the <code>DocumentType</code> node is created during the process
459      to create a <abbr>DOM</abbr> from an <abbr>XML</abbr> document, the following
460      requirements are applied:  The <code>NamedNodeMap</code> object in the
461      <a href="#elementTypes"><code>elementType</code></a> attribute
462      <em class=rfc2119>MUST</em> be so transformed that the object contains
463      the <code>ElementTypeDefinition</code> nodes for the element types
464      whose name is presented as the <code>Name</code> of the element type or
465      attribute definition list declarations processed by the <abbr>XML</abbr>
466      processor.  If there is more than one element type declarations for an
467      element type, then the declarations other than the first one
468      <em class=rfc2119>MUST</em> be ignored for the purpose of constructing the
469      <code>NamedNodeMap</code> object.</p></dd>
470    <dt><dfn id=generalEntities class=dom-attr><code>generalEntities</code></dfn>
471    of type <code>NamedNodeMap</code>, read$B!>(Bonly</dt>
472      <dd><p>A live <code>NamedNodeMap</code> object that contains all the general
473      entities belonging to the <code>DocumentType</code> node.</p>
474      
475      <p>On getting, the attribute <em class=rfc2119>MUST</em> return the
476      same value as the <code>entities</code> attribute (defined in the
477      <code>DocumentType</code> interface) of the same node.</p>
478    
479      <div class="note memo">
480        <p>This attribute is part of the interface for historical reason.</p>
481      </div></dd>
482    <!--
483    All entities declared in the document type definition
484    contained in or referenced from the document entity
485    might not be exposed through this collection, depending
486    on the information provided by the XML processor for
487    the DOM implementation.  In particular, it might not
488    contain any entity if entity references are expanded
489    at the parse time.  An implementation [['''MUST NOT''']]
490    expose an [CODE(DOMi)@en[[[Entity]]]] node whose [CODE(DOMa)@en[[[nodeName]]]]
491    is equal to the name of one of five predefined general entities in
492    XML through the collection as the result of parsing of an XML
493    document that has no error.  Duplicate entity declarations are also discarded.
494    
495    The attribute [['''MUST''']] return the [CODE(DOMi)@en[[[NamedNodeMap]]]]
496    object that contains all the [CODE(DOMi)@en[[[Entity]]]] nodes
497    representing general entities belong to the node.  The returned
498    [CODE(DOMi)@en[[[NamedNodeMap]]]] object [['''MUST''']] be read-only if and only if
499    the node is read-only. Note that the [CODE(DOMi)@en[[[NamedNodeMap]]]] object is live
500    and therefore any change of read-only flag on the node is immediately
501    reflected by that of the object.
502    -->
503    <dt><dfn id=notations class=dom-attr><code>notations</code></dfn> of type
504    <code>notations</code>, read$B!>(Bonly</code>
505      <dd><p>A live <code>NamedNodeMap</code> object that contains all the
506      notations belonging to the <code>DocumentType</code> node.</p>
507      
508      <p>On getting, the attribute <em class=rfc2119>MUST</em> return the
509      same value as the <code>notations</code> attribute (defined in the
510      <code>DocumentType</code> interface) of the same node.</p>
511    
512      <div class="note memo">
513        <p>This attribute is part of the interface for historical reason.</p>
514        <p>Implementations are not required to implement the
515        <code>notations</code> attribute twice (for <code>DocumentType</code>
516        and <code>DocumentTypeDefinition</code> interfaces); they share exactly
517        same definition.</p>
518      </div></dd>
519    <!--
520    If the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]] node is
521    created from an XML document, duplicate notation declarations, if any, in DTD
522    [['''MUST NOT''']] result in a node in the [CODE(DOMi)@en[[[NamedNodeMap]]]]
523    object and only the first declaration [['''MUST''']] be
524    made available as a [CODE(DOMi)@en[[[Notation]]]] node.
525    
526    ;; This definition is based on one for the
527    [CODE(DOMa)@en[[[notations]]]] attribute of the
528    [CODE(DOMi)@en[[[DocumentType]]]] interface in DOM XML module.
529    Since duplication is violation to the Validity Constraint,
530    XML parsers might vary on how notations are notified to
531    the application.  In particular, [CODE(InfoProp)@en[[[notations]]]]
532    property of the document information item in XML Information Set
533    is so defined that in case ''any'' notation is declared for
534    multiple times then the property has no value.
535    
536    The attribute [['''MUST''']] return the [CODE(DOMi)@en[[[NamedNodeMap]]]]
537    object that contains all the [CODE(DOMi)@en[[[Notation]]]] nodes
538    representing notations belong to the node.  The returned
539    [CODE(DOMi)@en[[[NamedNodeMap]]]] object [['''MUST''']] be read-only if and only if
540    the node is read-only. Note that the [CODE(DOMi)@en[[[NamedNodeMap]]]] object is live
541    and therefore any change of read-only flag on the node is immediately
542    reflected by that of the object.
543    -->
544    
545    <dt class=ed>@@ other members...
546    </dl>
547    
548    <div class=ed>
549    <p>A future version of this interface might define the
550    <code>parameterEntities</code> and getter/setter for parameter entities.
551    </div>
552    
553    </div>
554    
555    <div class=section id=section-elementtypedefinition>
556    <h3>The <code>ElementTypeDefinition</code> Interface</h3>
557    
558    <pre class=idl><code>interface <dfn id=ElementTypeDefinition><code>ElementTypeDefinition</code></dfn> : <a href="#Node">Node</a> {
559      readonly attribute <a href="#ownerDocumentTypeDefinition">ownerDocumentTypeDefinition</a>;
560    
561      <span class=ed>@@ more</span>
562    }</code></pre>
563    
564    <pre class=ed>** Modifications to [CODE(DOMi)@en[[[Node]]]] members
565    
566    [3] The getter of the [CODE(DOMa)@en[[[attributes]]]] attribute
567    of an [CODE(DOMi)@en[[[ElementTypeDefinition]]]] object
568    [['''MUST''']] return [CODE(IDL)@en[[[null]]]].
569    
570    [4] The getter of the [CODE(DOMa)@en[[[baseURI]]]] attribute
571    of an [CODE(DOMi)@en[[[ElementTypeDefinition]]]] object
572    [['''MUST''']] return the [CODE(DOMa)@en[[[baseURI]]]]
573    of the [CDOE(DOMa)@en[[[ownerDocument]]]] of the
574    [CODE(DOMi)@en[[[ElementTypeDefinition]]]] object.
575    Note that it might be [CODE(IDL)@en[[[null]]]].
576    
577    [1] The getter of the [CODE(DOMa)@en[[[nodeName]]]] attribute
578    of an [CODE(DOMi)@en[[[ElementTypeDefinition]]]] object
579    [['''MUST''']] return the name of the element type.
580    
581    [2] The getters of the [CODE(DOMa)@en[[[nodeValue]]]]
582    and [CODE(DOMa)@en[[[textContent]]]] attributes
583    of an [CODE(DOMi)@en[[[ElementTypeDefinition]]]]
584    object [['''MUST''']] return [CODE(IDL)@en[[[null]]]].
585    
586    ;; Thus, the setter of these attributes do nothing.
587    
588    The setter of the [CODE(DOMa)@en[[[textContent]]]]
589    attribute of an [CODE(DOMi)@en[[[ElementTypeDefinition]]]]
590    object [['''MUST NOT''']] throw a
591    [CODE(DOMc)@en[[[NO_MODIFICATION_ALLOWED_ERR]]]].
592    
593    ** The [CODE(DOMi)@en[ElementTypeDefinition]] Interface
594    
595    [5] The
596    [DFN@en[[CODE(DOMa)@en[[[ownerDocumentTypeDefinition]]]] attribute]]
597    of the [CODE(DOMi)@en[[[ElementTypeDefinition]]]]
598    interface is defined in [[manakai//DOM Extensions]>>50].</pre>
599    </div>
600    
601    <div class=section id=section-attributedefinition>
602    <h3>The <code>AttributeDefinition</code> Interface</h3>
603    
604    <pre class=idl><code>interface <dfn id=AttributeDefinition><code>AttributeDefinition</code></dfn> : <a href="#Node">Node</a> {
605      <span class=comment>// <a href="#DeclaredValueType">DeclaredValueType</a></span>
606      const unsigned short <a href="#NO_TYPE_ATTR">NO_TYPE_ATTR</a> = 0;
607      const unsigned short <a href="#CDATA_ATTR">CDATA_ATTR</a> = 1;
608      const unsigned short <a href="#ID_ATTR">ID_ATTR</a> = 2;
609      const unsigned short <a href="#IDREF_ATTR">IDREF_ATTR</a> = 3;
610      const unsigned short <a href="#IDREFS_ATTR">IDREFS_ATTR</a> = 4;
611      const unsigned short <a href="#ENTITY_ATTR">ENTITY_ATTR</a> = 5;
612      const unsigned short <a href="#ENTITIES_ATTR">ENTITIES_ATTR</a> = 6;
613      const unsigned short <a href="#NMTOKEN_ATTR">NMTOKEN_ATTR</a> = 7;
614      const unsigned short <a href="#NMTOKENS_ATTR">NMTOKENS_ATTR</a> = 8;
615      const unsigned short <a href="#NOTATION_ATTR">NOTATION_ATTR</a> = 9;
616      const unsigned short <a href="#ENUMERATION_ATTR">ENUMERATION_ATTR</a> = 10;
617      const unsigned short <a href="#UNKNOWN_ATTR">UNKNOWN_ATTR</a> = 11;
618      
619      readonly attribute <a href="#ElementTypeDefinition">ElementTypeDefinition</a> <a href="#ownerElementTypeDefinition">ownerElementTypeDefinition</a>;
620    
621      readonly attribute unsigned short <a href="#declaredType">declaredType</a>;
622      readonly attribute unsigned short <a href="#defaultType">defaultType</a>;
623    
624      <span class=ed>...</span>
625    }</code></pre>
626    
627    <pre class=ed>** Modifications to [CODE(DOMi)@en[[[Node]]]] members
628    
629    [3] The getter of the [CODE(DOMa)@en[[[attributes]]]] attribute
630    of an [CODE(DOMi)@en[[[AttributeDefinition]]]] object
631    [['''MUST''']] return [CODE(IDL)@en[[[null]]]].
632    
633    [9] The getter of the [CODE(DOMa)@en[[[baseURI]]]] attribute
634    of an [CODE(DOMi)@en[[[AttributeDefinition]]]] object
635    [['''MUST''']] return the [CODE(DOMa)@en[[[baseURI]]]]
636    of the [CDOE(DOMa)@en[[[ownerDocument]]]] of the
637    [CODE(DOMi)@en[[[AttributeDefinition]]]] object.
638    Note that it might be [CODE(IDL)@en[[[null]]]].
639    
640    [1] The getter of the [CODE(DOMa)@en[[[nodeName]]]] attribute
641    of an [CODE(DOMi)@en[[[AttributeDefinition]]]] object
642    [['''MUST''']] return the name of the attribute.
643    
644    [2] The getter of the [CODE(DOMa)@en[[[nodeValue]]]] attribute
645    of an [CODE(DOMi)@en[[[AttributeDefinition]]]] object
646    [['''MUST''']] return the normalized default value
647    of the attribute.
648    
649    @@
650    
651    [4] The getter of the [CODE(DOMa)@en[[[textContent]]]]
652    attribute of an [CODE(DOMi)@en[[[AttributeDefinition]]]]
653    object [['''MUST''']] behave as if it were an
654    [CODE(DOMi)@en[[[Attr]]]] object.
655    
656    The setter of the [CODE(DOMa)@en[[[textContent]]]] attribute
657    of an [CODE(DOMi)@en[[[AttributeDefinition]]]] object
658    [['''MUST''']] behave as if the following algorithm
659    is performed:
660    = If the [CODE(DOMi)@en[[[AttributeDefinition]]]]
661    object is read-only, then throw an
662    [CODE(DOMc)@en[[[NO_MODIFICATION_ALLOWED_ERR]]]].
663    = Remove any child node the node has.
664    = If the new value is not empty and not [CODE(IDL)@en[[[null]]]],
665    then create a [CODE(DOMi)@en[[[Text]]]] node
666    whose [CODE(DOMa)@en[[[data]]]] is the new value
667    and append it to the [CODE(DOMi)@en[[[AttributeDefinition]]]].
668    </pre>
669    
670    <dl>
671    <dt><dfn id=ownerElementTypeDefinition class=dom-attr><code>ownerElementTypeDefinition</code></dfn>
672    of type
673    <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>,
674    read$B!>(Bonly</dt>
675      <dd><p>The
676      <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> to
677      which the <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>
678      node belongs.</p>
679    
680      <p>On getting, the attribute <em class=rfc2119>MUST</em> return an
681      <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> node.
682      It <em class=rfc2119>MUST</em> be such a node that whose
683      <a href="#attributeDefinitons"><code>attributeDefinitions</code></a>
684      attribute contains the <code>NamedNodeMap</code> object that contains
685      the <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>
686      node.  If there is no such an
687      <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> node,
688      then <code>null</code> <em class=rfc2119>MUST</em> be returned.</p>
689    <dt><dfn id=declaredType class=dom-attr><code>declaredType</code></dfn> of type
690    <code>unsigned short</code></dt>
691      <dd><p>The declared type <span class=ed>@@ ref</span> of the attribute.
692      It is expected that this attribute contains a value from the definition group
693      <a href="#DeclaredValueType"><code>DeclaredValueType</code></a>.</p>
694    
695      <p>On getting, the attribute <em class=rfc2119>MUST</em> return the
696      value associated to this attribute.</p>
697    
698      <p>On setting, the attribute <em class=rfc2119>MUST</em> raise a
699      <code>NO_MODIFICATION_ALLOWED_ERR</code> <span class=ed>@@ ref</span>
700      exception if the
701      <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node
702      is read$B!>(Bonly <span class=ed>@@ ref</span>.  Otherwise, it
703      <em class=rfc2119>MUST</em> set the specified value as the value
704      associated to this attribute.</p>
705    
706      <p>If the <code>AttributeDefinition</code> node is created during the process
707      to create a <abbr>DOM</abbr> from an <abbr>XML</abbr> document, an
708      appropriate value from the
709      <a href="#DeclaredValueType"><code>DeclaredValueType</code></a> constant
710      group <em class=rfc2119>MUST</em> be set to the attribute.</p>
711    
712      <!-- DeclaredValueType -->
713    <p>The definition group
714    <dfn id=DeclaredValueType><code>DeclaredValueType</code></dfn> contains
715    integers indicating the declared type of attributes.  The definition
716    group contains the following constants:</p>
717    
718    <table>
719    <thead>
720    <tr><th scope=col>Name<th scope=col>Value<th scope=col>Description</tr>
721    </thead>
722    <tbody>
723    <tr>
724    <th scope=row><dfn id=NO_TYPE_ATTR class=dom-const><code>NO_TYPE_ATTR</code>
725    <td><code>0</code><td>No value <span class=ed>[INFOSET]</span>.</tr>
726    <tr>
727    <th scope=row><dfn id=CDATA_ATTR class=dom-const><code>CDATA_ATTR</code>
728    <td><code>1</code><td><code>CDATA</code> <span class=ed>[XML]</span>.</tr>
729    <tr>
730    <th scope=row><dfn id=ID_ATTR class=dom-const><code>ID_ATTR</code>
731    <td><code>2</code><td><code>ID</code> <span class=ed>[XML]</span>.</tr>
732    <tr>
733    <th scope=row><dfn id=IDREF_ATTR class=dom-const><code>IDREF_ATTR</code>
734    <td><code>3</code><td><code>IDREF</code> <span class=ed>[XML]</span>.</tr>
735    <tr>
736    <th scope=row><dfn id=IDREFS_ATTR class=dom-const><code>IDREFS_ATTR</code>
737    <td><code>4</code><td><code>IDREFS</code> <span class=ed>[XML]</span>.</tr>
738    <tr>
739    <th scope=row><dfn id=ENTITY_ATTR class=dom-const><code>ENTITY_ATTR</code>
740    <td><code>5</code><td><code>ENTITY</code> <span class=ed>[XML]</span>.</tr>
741    <tr>
742    <th scope=row><dfn id=ENTITIES_ATTR class=dom-const><code>ENTITIES_ATTR</code>
743    <td><code>6</code><td><code>ENTITIES</code> <span class=ed>[XML]</span>.</tr>
744    <tr>
745    <th scope=row><dfn id=NMTOKEN_ATTR class=dom-const><code>NMTOKEN_ATTR</code>
746    <td><code>7</code><td><code>NMTOKEN</code> <span class=ed>[XML]</span>.</tr>
747    <tr>
748    <th scope=row><dfn id=NMTOKENS_ATTR class=dom-const><code>NMTOKENS_ATTR</code>
749    <td><code>8</code><td><code>NMTOKENS</code> <span class=ed>[XML]</span>.</tr>
750    <tr>
751    <th scope=row><dfn id=NOTATION_ATTR class=dom-const><code>NOTATION_ATTR</code>
752    <td><code>9</code><td><code>NOTATION</code> <span class=ed>[XML]</span>.</tr>
753    <tr>
754    <th scope=row><dfn id=ENUMERATION_ATTR class=dom-const><code>ENUMERATION_ATTR</code>
755    <td><code>10</code><td>Enumeration <span class=ed>[XML]</span>.</tr>
756    <tr>
757    <th scope=row><dfn id=UNKNOWN_ATTR class=dom-const><code>UNKNOWN_ATTR</code>
758    <td><code>11</code><td>Unknown, because no declaration for the attribute
759    has been read but the [all declaration processed] property
760    <span class=ed>[INFOSET]</span> would be false.</tr>
761    </tbody>
762    </table>
763    
764    <p>If no attribute type information is available, or if the source
765    of the information does not distinguish <q>no value</q> and <q>unknown</q>
766    <span class=ed>[INFOSET]</span>, then the value
767    <a href="#NO_TYPE_ATTR"><code>NO_TYPE_ATTR</code></a>
768    <em class=rfc2119>MUST</em> be used.</p>
769    
770    <div class="note memo">
771    <p>An <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node
772    created by the
773    <a href="#createAttributeDefinition"><code>createAttributeDefinition</code></a>
774    method has its <a href="#declaredType"><code>declaredType</code></a> attribute
775    set to <a href="#NO_TYPE_ATTR"><code>NO_TYPE_ATTR</code></a>.</p>
776    </div>
777    
778    <p>If the source of the information does not distinguish <q>no value</q>
779    and/or <q>unknown</q> <span class=ed>[INFOSET]</span> and
780    <code>CDATA</code> <span class=ed>[XML]</span>, then the value
781    <a href="#CDATA_ATTR"><code>CDATA_ATTR</code></a> <em class=rfc2119>MUST</em>
782    be used.</p>
783    
784    <p>In Perl binding <span class=ed>[PERLBINDING]</span>, the
785    <code>Attr</code> nodes <em class=rfc2119>MUST</em> implement the
786    <a href="#DeclaredValueType"><code>DeclaredValueType</code></a>
787    definition group.</p>
788    
789      </dd>
790    <dt><dfn id=defaultType class=dom-attr><code>defaultType</code></dfn> of
791    type <code>unsigned short</code></dt>
792      <dd><p>The type of the default for the attribute.  It is expected that this
793      attribute contains a value from the definition group
794      <a href="#DefaultValueType"><code>DefaultValueType</code></a>.</p>
795    
796      <p>On getting, the attribute <em class=rfc2119>MUST</em> return
797      the value associated to this attribute.</p>
798    
799      <p>On setting, the attribute <em class=rfc2119>MUST</em> raise a
800      <code>NO_MODIFICATION_ALLOWED_ERR</code> <span class=ed>@@ ref</span>
801      exception if the
802      <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node
803      is read$B!>(Bonly <span class=ed>@@ ref</span>.  Otherwise, it
804      <em class=rfc2119>MUST</em> set the specified value as the value
805      associated to this attribute.</p>
806    
807      <p>If the
808      <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node is
809      created during the process to create a <abbr>DOM</abbr> from an
810      <abbr>XML</abbr> document, an appropriate value from the
811      <a href="#DefaultValueType"><code>DefaultValueType</code></a> definition
812      group <em class=rfc2119>MUST</em> be set to the attribute.</p>
813    
814      <!-- DefaultValueType -->
815      <p>The definition group
816      <dfn id=DefaultValueType><code>DefaultValueType</code></dfn>
817      contains integers indicating the type of the default for the attribute.
818      The definition group contains the following constans:</p>
819    
820      <table>
821      <thead>
822      <tr><th scope=col>Name<th scope=col>Value<th scope=col>Description</tr>
823      </thead>
824      <tbody>
825      <tr>
826      <th scope=row><dfn id=UNKNOWN_DEFAULT class=dom-const><code>UNKNOWN_DEFAULT</code></dfn>
827      <td><code>0</code><td>Unknown.</tr>
828      <tr>
829      <th scope=row><dfn id=FIXED_DEFAULT class=dom-const><code>FIXED_DEFAULT</code></dfn>
830      <td><code>1</code><td>Provided explicitly and fixed
831      <span class=ed>@@ ref</span> to that value.</tr>
832      <tr>
833      <th scope=row><dfn id=REQUIRED_DEFAULT class=dom-const><code>REQUIRED_DEFAULT</code></dfn>
834      <td><code>2</code><td>No default value and the attribute have to be
835      explicitly specified.</tr>
836      <tr>
837      <th scope=row><dfn id=IMPLIED_DEFAULT class=dom-const><code>IMPLIED_DEFAULT</code></dfn>
838      <td><code>3</code><td>Implied <span class=ed>@@ ref</span>.</tr>
839      <tr>
840      <th scope=row><dfn id=EXPLICIT_DEFAULT class=dom-const><code>EXPLICIT_DEFAULT</code></dfn>
841      <td><code>4</code><td>Provided explicitly.</tr>
842      </tbody>
843      </table>
844    
845      <p>If the source of the default type does not distinguish
846      implied and unknown default types, then the value
847      <a href="#IMPLIED_DEFAULT"><code>IMPLIED_DEFAULT</code></a>
848      <em class=rfc2119>MUST</em> be used.</p>
849    
850      <div class="note memo">
851      <p>An <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>
852      node created by the
853      <a href="#createAttributeDefinition"><code>createAttributeDefinition</code></a>
854      method has its <a href="#defaultType"><code>defaultType</code></a>
855      attribute set to
856      <a href="#UNKNOWN_DEFAULT"><code>UNKNOWN_DEFAULT</code></a>.</p>
857      </div></dd>
858    </dl>
859    
860    </div>
861    
862    <div class=section id=section-documenttype>
863    <h3>Modifications to the <code id=DocumentType>DocumentType</code>
864    Interface</h3>
865    
866    <p>A <a href="#DocumentType"><code>DocumentType</code></a> interface
867    <em class=rfc2119>MAY</em> contain zero or more
868    <a href="#ProcessingInstruction"><code>ProcessingInstruction</code></a>
869    nodes in the <code>NodeList</code> object contained in the
870    <code>childNodes</code> attribute of the
871    <a href="#DocumentType"><code>DocumentType</code></a> node.</p>
872    
873    <p>If the <a href="#DocumentType"><code>DocumentType</code></a> node is created
874    during the process to create a <abbr>DOM</abbr> from an <abbr>XML</abbr>
875    document, the <code>NodeList</code> object in the <code>childNodes</code>
876    object <em class=rfc2119>MUST</em> contains the
877    <a href="#ProcessingInstruction"><code>ProcessingInstruction</code></a>
878    nodes representing the processing instructions in the document type
879    definition of the document processed <span class=ed>@@ ref</span> by
880    the <abbr>XML</abbr> processor.  If the
881    <a href="#DocumentType"><code>DocumentType</code></a> node is marked
882    as read$B!>(Bonly, then all the child nodes <em class=rfc2119>MUST</em>
883    also be marked as read$B!>(Bonly.</p>
884    
885    <p>If a <a href="#DocumentType"><code>DocumentType</code></a> node is created
886    from a document type declaration information item <span class=ed>@@ ref</span>,
887    the <code>NodeList</code> object in the <code>childNodes</code> attribute
888    of the node <em class=rfc2119>MUST</em> contain the
889    <a href="#ProcessingInstruction"><code>ProcessingInstruction</code></a> nodes
890    created from the processing instruction information items in the list in the
891    [children] property of the document type declaration item in the same
892    order.</p>
893    
894    <p>If a <a href="#DocumentType"><code>DocumentType</code></a> node is mapped to
895    a document type declaration information item, the list in the [children]
896    property <em class=rfc2119>MUST</em> contain the processng instruction
897    information items created from the
898    <a href="#ProcessingInstruction"><code>ProcessingInstruction</code></a> nodes
899    in the <code>NodeList</code> object in the <code>childNodes</code> attribute
900    of the <a href="#DocumentType"><code>DocumentType</code></a> node.</p>
901    
902    <pre class=idl><code>// Modifications to the DocumentType interface
903      attribute DOMString <a href="#publicId">publicId</a>;
904      attribute DOMString <a href="#systemId">systemId</a>;
905    
906      attribute DOMString <a href="#internalSubset">internalSubset</a>;
907    </code></pre>
908    
909    <p>The <code id=publicId>publicId</code> attribute and the
910    <code id=systemId>systemId</code> attribute of
911    <a href="#DocumentType"><code>DocumentType</code></a>,
912    <a href="#Entity"><code>Entity</code></a>, and
913    <a href="#Notation"><code>Notation</code></a> interfaces are no longer
914    read$B!>(Bonly.</p>
915    
916    <p>On setting, the attribute <em class=rfc2119>MUST</em> raise a
917    <code>NO_MODIFICATION_ALLOWED_ERR</code> <span class=ed>@@ ref</span>
918    exception if the node is read$B!>(Bonly <span class=ed>@@ ref</span>.  
919    Otherwise, it <em class=rfc2119>MUST</em> set the specified value as the value
920    associated to the attribute.  No normalization, relative reference resolution,
921    or lexical validation is performed. <span class=ed>@@ If the new
922    value is <code>null</code>, ...</span></p>
923    
924    <div class="note memo">
925    <p>Setting an invalid identifier might make the node unserializable.
926    Setting a public identifier while leaveing system identifier unspecified
927    would also make the <a href="#DocumentType"><code>DocumentType</code></a>
928    or <a href="#Entity"><code>Entity</code></a> node unserializable.</p>
929    </div>
930    
931    <div class=ed>
932    <p>ISSUE: In HTML5, Firefox 1.5, and Opera 9, not specifying public or system identifier results in empty strings.</p>
933    </div>
934    
935    <p>The <code id=internalSubset>internalSubset</code> attribute of the
936    <a href="#DocumentType"><code>DocumentType</code></a> interface is no longer
937    read$B!>(Bonly.</p>
938    
939    <p>On setting, the attribute <em class=rfc2119>MUST</em> raise a
940    <code>NO_MODIFICATION_ALLOWED_ERR</code> <span class=ed>@@ ref</span>
941    exception if the node is read$B!>(Bonly <span class=ed>@@ ref</span>.  
942    Otherwise, it <em class=rfc2119>MUST</em> set the specified value as the value
943    associated to the attribute.  No normalization, or lexical validation is
944    performed. <span class=ed>@@ If the new value is <code>null</code>,
945    ...</span></p>
946    
947    </div>
948    
949  </div>  </div>
950    
951    

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.13

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24