/[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.2 by wakaba, Sun Dec 2 04:25:43 2007 UTC revision 1.7 by wakaba, Sun Dec 2 09:47:05 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">
# Line 83  normative version.</p> Line 84  normative version.</p>
84  <p>This is a work-in-progress specification for DOM Document Type  <p>This is a work-in-progress specification for DOM Document Type
85  Definition module, as implemented by manakai and  Definition module, as implemented by manakai and
86  <a href="http://suika.fam.cx/gate/2005/sw/DOM%20XML%20Document%20Type%20Definition">partially documented in the SuikaWiki</a>.</p>  <a href="http://suika.fam.cx/gate/2005/sw/DOM%20XML%20Document%20Type%20Definition">partially documented in the SuikaWiki</a>.</p>
   
 <p>...</p>  
87  </div>  </div>
88    
89    <p>The <dfn id=term-dom-dtdef><abbr>DOM</abbr> Document Type Definition</dfn>
90    module is a set of <abbr>DOM</abbr> interfaces, including both new
91    interfaces and modifications to existing <abbr>DOM</abbr> interfaces,
92    over which <abbr>DOM</abbr> applications are able to access to the
93    definitions of the document type.</p>
94    
95    <p>Interfaces defined in this specification are partially modeled from
96    early drafts of <abbr>DOM</abbr> level 1 <span class=ed>@@ ref</span>,
97    <abbr>DOM</abbr> Abstract Schema level 3 <span class=ed>@@ ref</span>, and
98    <abbr>XML</abbr> Schema <abbr>API</abbr>, but are not compatible with
99    any of them as a whole.</p>
100  </div>  </div>
101    
102  <div class="section" id="terminology">  <div class="section" id="terminology">
# Line 110  else in this specification is normative. Line 120  else in this specification is normative.
120  <p><span class=ed>Algorithm is normative but non-normative</span>.  <p><span class=ed>Algorithm is normative but non-normative</span>.
121  In addition, the order in which <a href="#errors">errors</a> are  In addition, the order in which <a href="#errors">errors</a> are
122  raised is undefined.</p>  raised is undefined.</p>
123    
124    <p class=ed><var>A</var> object is an object implementing <var>A</var>
125    interface.</p>
126    
127    <p class=ed>@@ ref to DOM Binding Spec</p>
128    </div>
129    
130    <div class=section id=dom-dtdef>
131    <h2><abbr>DOM</abbr> Document Type Definition Module</h2>
132    
133    <p>The <abbr>DOM</abbr> Document Type Definition module, version 3.0,
134    consists of three interfaces:</p>
135    <ul>
136    <li><a href="#DocumentXDoctype"><code>DocumentXDoctype</code></a></li>
137    <li><a href="#DocumentTypeDefinition"><code>DocumentTypeDefinition</code></a></li>
138    <li><a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a></li>
139    <li><a href="#AttributeDefinition"><code>AttributeDefinition</code></a></li>
140    </ul>
141    
142    <p>In addition, it adds methods, attributes, and/or constants to interfaces
143    <a href="#Node"><code>Node</code></a>,
144    <a href="#Entity"><code>Entity</code></a>,
145    <a href="#EntityReference"><code>EntityReference</code></a>, and
146    <a href="#Notation"><code>Notation</code></a>.
147    It modifies semantics of some of methods and attributes in
148    <a href="#Node"><code>Node</code></a> and
149    <a href="#ProcessingInstruction"><code>ProcessingInstruction</code></a>
150    interfaces, for the support of new interfaces.</p>
151    
152    <div class=section id=features>
153    <h3>Feature Name</h3>
154    
155    <p>In a <abbr>DOM</abbr> implementation that supports the version 3.0 of
156    the <abbr>DOM</abbr> Document Type Definition module, the
157    <code>hasFeature</code> method of a <code>DOMImplementation</code> object
158    <em class=rfc2119>MUST</em> return <code>true</code> when the parameters are
159    set to <code>http://suika.fam.cx/www/2006/feature/XDoctype</code> and
160    <code>3.0</code> respectively.</p>
161    
162    <p>In such an implementation, the <code>getFeature</code> method of a
163    <code>Document</code> object <em class=rfc2119>MUST</em> return the (at least
164    conceptually) same object implementing the
165    <a href="#DocumentXDoctype"><code>DocumentXDoctype</code></a> interface when
166    the parameters are set to
167    <code>http://suika.fam.cx/www/2006/feature/XDoctype</code> and
168    <code>3.0</code> respectively.  Likewise, any method that takes one or more
169    feature names with or without version number, including the methods
170    <code>hasFeature</code> and <code>getFeature</code>,
171    <em class=rfc2119>MUST</em> behave in a manner consistent with the
172    aforementioned cases.</p>
173    </div>
174    
175    <div class=section id=section-documentxdoctype>
176    <h3>The <code>DocumentXDoctype</code> Interface</h3>
177    
178    <pre class=idl><code>interface <dfn id=DocumentXDoctype><code>DocumentXDoctype</code></dfn> {
179      DocumentType <a href="#createDocumentTypeDefinition">createDocumentTypeDefinition</a>
180        (in DOMString <a href="#createDocumentTypeDefinition-name"><var>name</var></a>)
181        raises (DOMException);
182      ElementTypeDefinition <a href="#createElementTypeDefinition">createElementTypeDefinition</a>
183        (in DOMString <a href="#createElementTypeDefinition-name"><var>name</var></a>)
184        raises (DOMException);
185      AttributeDefinition <a href="#createAttributeDefinition">createAttributeDefinition</a>
186        (in DOMString <a href="#createAttributeDefinition-name"><var>name</var></a>)
187        raises (DOMException);
188      Entity <a href="#createGeneralEntity">createGeneralEntityDefinition</a>
189        (in DOMString <a href="#createGeneralEntity-name"><var>name</var></a>)
190        raises (DOMException);
191      Notation <a href="#createNotation">createNotation</a>
192        (in DOMString <a href="#createNotation-name"><var>name</var></a>)
193        raises (DOMException);
194    }</code></pre>
195    
196    <div class=ed>@@ cast definition</div>
197    
198    <dl>
199    <dt><dfn id=createDocumentTypeDefinition class=dom-method><code>createDocumentTypeDefinition</code></dfn>,
200    method</dt>
201      <dd>
202        <p>This method creates a <code>DocumentType</code> node with the specified
203        name, belonging to the document.</p>
204        <p>The <dfn id=createDocumentTypeDefinition-name class=dom-param><var>name</var></dfn>
205        parameter is the name of the document type.</p>
206    
207        <p>When invoked, the method <em class=rfc2119>MUST</em> create and
208        return a <code>DocumentType</code> node with the following attributes:</p>
209        <dl>
210        <dt><code>attributes</code>, <code>parentNode</code></dt>
211          <dd><code>null</code>.</dd>
212        <dt><code>elementTypes</code>, <code>generalEntities</code>, and
213        <code>notations</code></dt>
214          <dd>Empty <code>NamedNodeMap</code> objects.</dd>
215        <dt><code>entities</code></dt>
216          <dd>The same value as the <code>generalEntities</code> attribute.</dd>
217        <dt><code>childNodes</code></dt>
218          <dd>An empty <code>NodeList</code> object.</dd>
219        <dt><code>internalSubset</code>, <code>publicId</code>, and
220        <code>systemId</code></dt>
221          <dd>Empty strings.</dd>
222        <dt><code>manakaiReadOnly</code> <span class=ed>[manakai]</span></dt>
223          <dd><code>false</code>.</dd>
224        <dt><code>nodeName</code></dt>
225          <dd><a href="#createDocumentTypeDefinition-name"><var>name</var></a>.</dd>
226        <dt><code>ownerDocument</code></dt>
227          <dd>The <code>Document</code> over which the method is invoked.</dd>
228        </dl>
229        <p>In addition, the method <em class=rfc2119>MUST</em> be marked as
230        containing five general entity declarations: <code>amp</code>,
231        <code>lt</code>, <code>gt</code>, <code>quot</code>, and
232        <code>apos</code>.</p>
233      </dd>
234    <dt><dfn id=createElementTypeDefinition class=dom-method><code>createElementTypeDefinition</code></dfn>,
235    method</dt>
236      <dd>
237        <p>This method creates a <code>ElementTypeDefinition</code> node with the
238        specified name, belonging to the document.</p>
239        <p>The <dfn id=createElementTypeDefinition-name class=dom-param><var>name</var></dfn>
240        parameter is the name of the element type defined by the element
241        type definition.</p>
242    
243        <p>When invoked, the method <em class=rfc2119>MUST</em> create and
244        return an
245        <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a>
246        node with the following attributes:</p>
247        <dl>
248        <dt><a href="#attributeDefinitions"><code>attributeDefinitions</code></a></dt>
249          <dd>An empty <code>NamedNodeMap</code> object.</dd>
250        <dt><code>attributes</code>, <code>parentNode</code></dt>
251          <dd><code>null</code>.</dd>
252        <dt><code>childNodes</code></dt>
253          <dd>An empty <code>NodeList</code> object.</dd>
254        <dt><code>manakaiReadOnly</code> <span class=ed>[manakai]</span></dt>
255          <dd><code>false</code>.</dd>
256        <dt><code>nodeName</code></dt>
257          <dd><a href="#createElementTypeDefinition-name"><var>name</var></a>.</dd>
258        <dt><code>ownerDocument</code></dt>
259          <dd>The <code>Document</code> node over which the method is invoked.</dd>
260        <dt><a href="#ownerDocumentTypeDefinition"><code>ownerDocumentTypeDefinition</code></a></dt>
261          <dd><code>null</code>.</dd>
262        <dt class=ed>@@ Ensure all attributes are defined</dt>
263        </dl>
264      </dd>
265    <dt><dfn id=createAttributeDefinition class=dom-method><code>createAttributeDefinition</code></dfn>,
266    method</dt>
267      <dd>
268        <p>This method creates a <code>AttributeDefinition</code> node with the
269        specified name, belonging to the document.</p>
270        <p>The <dfn id=createAttributeDefinition-name class=dom-param><var>name</var></dfn>
271        parameter is the name of the attribute defined by the attribute
272        definition.</p>
273    
274        <p>When invoked, the method <em class=rfc2119>MUST</em> create and
275        return an
276        <a href="#AttributeDefinition"><code>AttributeDefinition</code></a>
277        node with the following attributes:</p>
278        <dl>
279        <dt><code>allowedTokens</code></dt>
280          <dd>An empty <code>DOMStringList</code> object.</dd>
281        <dt><code>attributes</code>,
282        <a href="#ownerElementTypeDefinition"><code>ownerElementTypeDefinition</code></a>,
283        and <code>parentNode</code></dt>
284          <dd><code>null</code>.</dd>
285        <dt><code>childNodes</code></dt>
286          <dd>An empty <code>NodeList</code> object.</dd>
287        <dt><code>declaredType</code></dt>
288          <dd><a href="#NO_TYPE_ATTR"><code>NO_TYPE_ATTR</code></a>.</dd>
289        <dt><code>defaultType</code></dt>
290          <dd><a href="#UNKNOWN_DEFAULT"><code>UNKNOWN_DEFAULT</code></a>.</dd>
291        <dt><code>manakaiReadOnly</code> <span class=ed>[manakai]</span></dt>
292          <dd><code>false</code>.</dd>
293        <dt><code>nodeName</code></dt>
294          <dd><a href="#createAttributeDefinition-name"><var>name</var></a>.</dd>
295        <dt><code>ownerDocument</code></dt>
296          <dd>The <code>Document</code> node over which the method is invoked.</dd>
297        <dt class=ed>@@ Ensure all attributes are defined</dt>
298        </dl>
299    
300        <div class=ed>
301        <p>@@ Should we keep these statements?:
302    However, if the &lt;cfg::cfg|xml-id> configuration
303    parameter is set to <code>true</code> and the <var>name</var>
304    is <code>xml:id</code>, then the [CODE(DOMa)@en[[[declaredType]]]]
305    attribute is set to <code>ID_ATTR</code>.
306    [CODE(DOMa)@en[[[defaultType]]]]?</p>
307        </div>
308      </dd>
309    <dt><dfn id=createGeneralEntity class=dom-method><code>createGeneralEntity</code></dfn>,
310    method</dt>
311      <dd>
312        <p>This method creates a <a href="#Entity"><code>Entity</code></a> node
313        with the specified name, which represents a general entity, belonging to
314        the document.</p>
315        <p>The <dfn id=createGeneralEntity-name class=dom-param><var>name</var></dfn>
316        parameter is the name of the general entity.</p>
317    
318        <p>When invoked, the method <em class=rfc2119>MUST</em> create and return
319        an <a href="#Entity"><code>Entity</code></a> node with the following
320        attributes:</p>
321        <dl>
322        <dt><code>attributes</code>, <code>notationName</code>,
323        <a href="#ownerDocumentTypeDefinition"><code>ownerDocumentTypeDefinition</code></a>,
324        and <code>parentNode</code></dt>
325          <dd><code>null</code>.</dd>
326        <dt><code>childNodes</code></dt>
327          <dd>An empty <code>NodeList</code> object.</dd>
328        <dt><code>manakaiDeclarationBaseURI</code>,
329        <code>manakaiEntityBaseURI</code>, and
330        <code>manakaiEntityURI</code> <span class=ed>@@ ref</span></dt>
331          <dd>No explicit value is set.</dd>
332        <dt><code>manakaiHasReplacementTree</code> and
333        <code>manakaiReadOnly</code> <span class=ed>[manakai]</span></dt>
334          <dd><code>false</code>.</dd>
335        <dt><code>nodeName</code></dt>
336          <dd><a href="#createGeneralEntity-name"><var>name</var></a>.</dd>
337          <dd>
338            <div class="note memo">
339              <p>It is not an error for
340              <a href="#createGeneralEntity-name"><var>name</var></a> matching
341              to the name of one of predefined general parsed entities in
342              <abbr>XML</abbr> or <abbr>HTML</abbr>.  For example,
343              <a href="#createGeneralEntity-name"><var>name</var></a> might be
344              <code>amp</code>, resulting in an
345              <a href="#Entity"><code>Entity</code></a> node
346              with its <code>nodeName</code> attribute set to <code>amp</code>.</p>
347            </div>
348          </dd>
349        <dt><code>ownerDocument</code></dt>
350          <dd>The <code>Document</code> node over which the method is invoked.</dd>
351        <dt><code>publicId</code>, and <code>systemId</code></dt>
352          <dd><code>null</code>.</dd>
353          <dd class=ed>@@ publicId and systemId should be empty string?</dd>
354        <dt class=ed>@@ Ensure all attributes are defined</dd>
355        </dl>
356      </dd>
357    <dt><dfn id=createNotation class=dom-method><code>createNotation</code></dfn>,
358    method</dt>
359      <dd>
360        <p>This method creates a <code>Notation</code> node with the
361        specified name, belonging to the document.</p>
362        <p>The <dfn id=createNotation-name class=dom-param><var>name</var></dfn>
363        parameter is the name of the notation.</p>
364    
365        <p>When invoked, the method <em class=rfc2119>MUST</em> create and return
366        a <code>Notation</code> node with the following attributes:</p>
367        <dl>
368        <dt><code>attributes</code>,
369        <a href="#ownerDocumentTypeDefinition"><code>ownerDocumentTypeDefinition</code></a>,
370        and <code>parentNode</code></dt>
371          <dd><code>null</code>.</dd>
372        <dt><code>childNodes</code></dt>
373          <dd>An empty <code>NodeList</code> object.</dd>
374        <dt><code>manakaiDeclarationBaseURI</code></dt>
375          <dd>No explicit value is set.</dd>
376        <dt><code>manakaiReadOnly</code> <span class=ed>[manakai]</span></dt>
377          <dd><code>false</code>.</dd>
378        <dt><code>nodeName</code></dt>
379          <dd><a href="#createNotation-name"><var>name</var></a>.</dd>
380        <dt><code>ownerDocument</code></dt>
381          <dd>The <code>Document</code> node over which the method is invoked.</dd>
382        <dt><code>publicId</code> and <code>systemId</code></dt>
383          <dd><code>null</code>.</dd>
384          <dd class=ed>@@ publicId and systemId should be empty string?</dd>
385        <dt class=ed>@@ Ensure all attributes are defined</dt>
386        </dl>
387      </dd>
388    </dl>
389    
390    <p>These methods <em class=rfc2119>MUST</em> raise an
391    <code>INVALID_CHARACTER_ERR</code> exception <span class=ed>@@ ref</span>
392    if <var>name</var> is <em>not</em> a legal <code>Name</code> according to
393    the <abbr>XML</abbr> version in use, as specified in the
394    <code>xmlVersion</code> attribute of the <code>Document</code> node.</p>
395    
396    <div class="note memo">
397    <p>Non$B!>(B<abbr>XML</abbr> case is intentionally left unspecified for now,
398    since <abbr>DOM3</abbr> specification <span class=ed>@@ ref</span> does not
399    define it for <code>Document</code> methods.</p>
400    
401    <p><var>name</var> does not have to be a namespace qualified name.</p>
402    
403    <p>If the <code>strictErrorChecking</code> attribute of the
404    <code>Document</code> node is <code>false</code>, the methods are
405    not required to raise the exception <span class=ed>[DOM3]</span>.</p>
406    </div>
407    
408  </div>  </div>
409    
410    <div class=section id=section-documenttypedefinition>
411    <h3>The <code>DocumentTypeDefinition</code> Interface</h3>
412    
413    <pre class=idl><code>interface <dfn id=DocumentTypeDefinition><code>DocumentTypeDefinition</code></dfn> {
414      
415    }</code></pre>
416    
417    <pre class=ed>
418    [1] In an implementation that supports the
419    [CODE(URI)@en[[[http://suika.fam.cx/www/2006/feature/XDoctype]]]]
420    feature, a [CODE(DOMi)@en[[[DocumentType]]]] node
421    must implement the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]]
422    interface.  See [[DOM XML Document Type Definition]>>3] for
423    details.
424    
425    
426    ** Children
427    
428    [2] The [DFN@en[[CODE(DOMa)@en[[[elementTypes]]]] attribute]]
429    of the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]] interface
430    is a live [CODE(DOMi)@en[[[NamedNodeMap]]]] object that
431    contains all element types belongs to the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]]
432    node.  The type of the attribute is [CODE(DOMi)@en[[[NamedNodeMap]]]].
433    The attribute is read-only.
434    
435    What are contained in this collection depends on how
436    the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]] node was created.  If the
437    node was created as the result of parsing of an XML document,
438    it [['''MUST''']]  contain all element types whose element type and / or
439    attribute definition list declaration are encountered by and provided for the DOM
440    implementation from the XML processor.  Note that the XML processor might not
441    provide a part of or entire such information depending on the configuration.
442    If more than one declarations for an element type or an attribute is available
443    at the time of the definition node construction, then declarations other than
444    the first ones [['''MUST''']] be discarded.
445    
446    The attribute [['''MUST''']] return the [CODE(DOMi)@en[[[NamedNodeMap]]]]
447    object that contains all the [CODE(DOMi)@en[[[ElementTypeDefinition]]]] nodes
448    belong to the node.  The returned [CODE(DOMi)@en[[[NamedNodeMap]]]] object
449    [['''MUST''']] be read-only if and only if the node is read-only.
450    Note that the [CODE(DOMi)@en[[[NamedNodeMap]]]] object is live
451    and therefore any change of read-only flag on the node is immediately
452    reflected by that of the object.
453    
454    [3] The [DFN@en[[CODE(DOMa)@en[[[generalEntities]]]] attribute]]
455    of the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]] interface
456    is a live [CODE(DOMi)@en[[[NamedNodeMap]]]] object that contains all the
457    general entities belong to the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]] node.
458    The type of the attribute is [CODE(DOMi)@en[[[NamedNodeMap]]]].
459    The attribute is read-only.
460    
461    All entities declared in the document type definition
462    contained in or referenced from the document entity
463    might not be exposed through this collection, depending
464    on the information provided by the XML processor for
465    the DOM implementation.  In particular, it might not
466    contain any entity if entity references are expanded
467    at the parse time.  An implementation [['''MUST NOT''']]
468    expose an [CODE(DOMi)@en[[[Entity]]]] node whose [CODE(DOMa)@en[[[nodeName]]]]
469    is equal to the name of one of five predefined general entities in
470    XML through the collection as the result of parsing of an XML
471    document that has no error.  Duplicate entity declarations are also discarded.
472    
473    The attribute [['''MUST''']] return the [CODE(DOMi)@en[[[NamedNodeMap]]]]
474    object that contains all the [CODE(DOMi)@en[[[Entity]]]] nodes
475    representing general entities belong to the node.  The returned
476    [CODE(DOMi)@en[[[NamedNodeMap]]]] object [['''MUST''']] be read-only if and only if
477    the node is read-only. Note that the [CODE(DOMi)@en[[[NamedNodeMap]]]] object is live
478    and therefore any change of read-only flag on the node is immediately
479    reflected by that of the object.
480    
481    The attribute [['''MUST''']] return the same value as the
482    [CODE(DOMa)@en[[[entites]]]] attribute of the
483    [CODE(DOMi)@en[[[DocumentType]]]] interface on the same node.
484    
485    [4] The [DFN@en[[CODE(DOMa)@en[[[notations]]]] attribute]]
486    of the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]] interface
487    is a live [CODE(DOMi)@en[[[NamedNodeMap]]]] object that contains
488    all the notations belong to the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]]
489    node.  The type of the attribute is [CODE(DOMi)@en[[[NamedNodeMap]]]].
490    The attribute is read-only.
491    
492    If the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]] node is
493    created from an XML document, duplicate notation declarations, if any, in DTD
494    [['''MUST NOT''']] result in a node in the [CODE(DOMi)@en[[[NamedNodeMap]]]]
495    object and only the first declaration [['''MUST''']] be
496    made available as a [CODE(DOMi)@en[[[Notation]]]] node.
497    
498    ;; This definition is based on one for the
499    [CODE(DOMa)@en[[[notations]]]] attribute of the
500    [CODE(DOMi)@en[[[DocumentType]]]] interface in DOM XML module.
501    Since duplication is violation to the Validity Constraint,
502    XML parsers might vary on how notations are notified to
503    the application.  In particular, [CODE(InfoProp)@en[[[notations]]]]
504    property of the document information item in XML Information Set
505    is so defined that in case ''any'' notation is declared for
506    multiple times then the property has no value.
507    
508    The attribute [['''MUST''']] return the [CODE(DOMi)@en[[[NamedNodeMap]]]]
509    object that contains all the [CODE(DOMi)@en[[[Notation]]]] nodes
510    representing notations belong to the node.  The returned
511    [CODE(DOMi)@en[[[NamedNodeMap]]]] object [['''MUST''']] be read-only if and only if
512    the node is read-only. Note that the [CODE(DOMi)@en[[[NamedNodeMap]]]] object is live
513    and therefore any change of read-only flag on the node is immediately
514    reflected by that of the object.
515    
516    A DOM implementation is not required to implement the
517    [CODE(DOMa)@en[[[notations]]]] attribute twice
518    for the [CODE(DOMi)@en[[[DocumentType]]]] and
519    the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]] interfaces;
520    the latter is defined to contain the same value as the former.
521    
522    
523    ** Open Issues (informative)
524    
525    [5] A future version of the interface might define the
526    [CODE(DOMa)@en[[[parameterEntities]]]] attribute and
527    getter/setter for parameter entities.
528    </pre>
529    </div>
530    
531    <div class=section id=section-elementtypedefinition>
532    <h3>The <code>ElementTypeDefinition</code> Interface</h3>
533    
534    <pre class=idl><code>interface <dfn id=ElementTypeDefinition><code>ElementTypeDefinition</code></dfn> {
535      
536    }</code></pre>
537    
538    <pre class=ed>** Modifications to [CODE(DOMi)@en[[[Node]]]] members
539    
540    [3] The getter of the [CODE(DOMa)@en[[[attributes]]]] attribute
541    of an [CODE(DOMi)@en[[[ElementTypeDefinition]]]] object
542    [['''MUST''']] return [CODE(IDL)@en[[[null]]]].
543    
544    [4] The getter of the [CODE(DOMa)@en[[[baseURI]]]] attribute
545    of an [CODE(DOMi)@en[[[ElementTypeDefinition]]]] object
546    [['''MUST''']] return the [CODE(DOMa)@en[[[baseURI]]]]
547    of the [CDOE(DOMa)@en[[[ownerDocument]]]] of the
548    [CODE(DOMi)@en[[[ElementTypeDefinition]]]] object.
549    Note that it might be [CODE(IDL)@en[[[null]]]].
550    
551    [1] The getter of the [CODE(DOMa)@en[[[nodeName]]]] attribute
552    of an [CODE(DOMi)@en[[[ElementTypeDefinition]]]] object
553    [['''MUST''']] return the name of the element type.
554    
555    [2] The getters of the [CODE(DOMa)@en[[[nodeValue]]]]
556    and [CODE(DOMa)@en[[[textContent]]]] attributes
557    of an [CODE(DOMi)@en[[[ElementTypeDefinition]]]]
558    object [['''MUST''']] return [CODE(IDL)@en[[[null]]]].
559    
560    ;; Thus, the setter of these attributes do nothing.
561    
562    The setter of the [CODE(DOMa)@en[[[textContent]]]]
563    attribute of an [CODE(DOMi)@en[[[ElementTypeDefinition]]]]
564    object [['''MUST NOT''']] throw a
565    [CODE(DOMc)@en[[[NO_MODIFICATION_ALLOWED_ERR]]]].
566    
567    ** The [CODE(DOMi)@en[ElementTypeDefinition]] Interface
568    
569    [5] The
570    [DFN@en[[CODE(DOMa)@en[[[ownerDocumentTypeDefinition]]]] attribute]]
571    of the [CODE(DOMi)@en[[[ElementTypeDefinition]]]]
572    interface is defined in [[manakai//DOM Extensions]>>50].</pre>
573    </div>
574    
575    <div class=section id=section-attributedefinition>
576    <h3>The <code>AttributeDefinition</code> Interface</h3>
577    
578    <pre class=idl><code>interface <dfn id=AttributeDefinition><code>AttributeDefinition</code></dfn> {
579      
580    }</code></pre>
581    
582    <pre class=ed>** Modifications to [CODE(DOMi)@en[[[Node]]]] members
583    
584    [3] The getter of the [CODE(DOMa)@en[[[attributes]]]] attribute
585    of an [CODE(DOMi)@en[[[AttributeDefinition]]]] object
586    [['''MUST''']] return [CODE(IDL)@en[[[null]]]].
587    
588    [9] The getter of the [CODE(DOMa)@en[[[baseURI]]]] attribute
589    of an [CODE(DOMi)@en[[[AttributeDefinition]]]] object
590    [['''MUST''']] return the [CODE(DOMa)@en[[[baseURI]]]]
591    of the [CDOE(DOMa)@en[[[ownerDocument]]]] of the
592    [CODE(DOMi)@en[[[AttributeDefinition]]]] object.
593    Note that it might be [CODE(IDL)@en[[[null]]]].
594    
595    [1] The getter of the [CODE(DOMa)@en[[[nodeName]]]] attribute
596    of an [CODE(DOMi)@en[[[AttributeDefinition]]]] object
597    [['''MUST''']] return the name of the attribute.
598    
599    [2] The getter of the [CODE(DOMa)@en[[[nodeValue]]]] attribute
600    of an [CODE(DOMi)@en[[[AttributeDefinition]]]] object
601    [['''MUST''']] return the normalized default value
602    of the attribute.
603    
604    @@
605    
606    [4] The getter of the [CODE(DOMa)@en[[[textContent]]]]
607    attribute of an [CODE(DOMi)@en[[[AttributeDefinition]]]]
608    object [['''MUST''']] behave as if it were an
609    [CODE(DOMi)@en[[[Attr]]]] object.
610    
611    The setter of the [CODE(DOMa)@en[[[textContent]]]] attribute
612    of an [CODE(DOMi)@en[[[AttributeDefinition]]]] object
613    [['''MUST''']] behave as if the following algorithm
614    is performed:
615    = If the [CODE(DOMi)@en[[[AttributeDefinition]]]]
616    object is read-only, then throw an
617    [CODE(DOMc)@en[[[NO_MODIFICATION_ALLOWED_ERR]]]].
618    = Remove any child node the node has.
619    = If the new value is not empty and not [CODE(IDL)@en[[[null]]]],
620    then create a [CODE(DOMi)@en[[[Text]]]] node
621    whose [CODE(DOMa)@en[[[data]]]] is the new value
622    and append it to the [CODE(DOMi)@en[[[AttributeDefinition]]]].
623    
624    ** Definition groups
625    
626    [6] The
627    [DFN@en[definition group [CODE(DOM)@en[[[DeclaredValueType]]]]]]
628    contains integers indicating the type of
629    attribute value:
630    ,[CODE(DOMc)@en[[[NO_TYPE_ATTR]]]],[CODE(IDL)[[[0]]]],The attribute value type corresponding to [[no value]] in XML Information Set.
631    ,[CODE(DOMc)@en[[[CDATA_ATTR]]]],[CODE(IDL)[[[1]]]],The attribute value type is [CODE(XML)@en[[[CDATA]]]].
632    ,[CODE(DOMc)@en[[[ID_ATTR]]]],[CODE(IDL)[[[2]]]],The attribute value type is [CODE(XML)@en[[[ID]]]].
633    ,[CODE(DOMc)@en[[[IDREF_ATTR]]]],[CODE(IDL)[[[3]]]],The attribute value type is [CODE(XML)@en[[[IDREF]]]].
634    ,[CODE(DOMc)@en[[[IDREFS_ATTR]]]],[CODE(IDL)[[[4]]]],The attribute value type is [CODE(XML)@en[[[IDREFS]]]].
635    ,[CODE(DOMc)@en[[[ENTITY_ATTR]]]],[CODE(IDL)[[[5]]]],The attribute value type is [CODE(XML)@en[[[ENTITY]]]].
636    ,[CODE(DOMc)@en[[[ENTITIES_ATTR]]]],[CODE(IDL)[[[6]]]],The attribute value type is [CODE(XML)@en[[[ENTITIES]]]].
637    ,[CODE(DOMc)@en[[[NMTOKEN_ATTR]]]],[CODE(IDL)[[[7]]]],The attribute value type is [CODE(XML)@en[[[NMTOKEN]]]].
638    ,[CODE(DOMc)@en[[[NMTOKENS_ATTR]]]],[CODE(IDL)[[[8]]]],The attribute value type is [CODE(XML)@en[[[NMTOKENS]]]].
639    ,[CODE(DOMc)@en[[[NOTATION_ATTR]]]],[CODE(IDL)[[[9]]]],The attribute value type is [CODE(XML)@en[[[NOTATION]]]].
640    ,[CODE(DOMc)@en[[[ENUMERATION_ATTR]]]],[CODE(IDL)[[[10]]]],The attribute value is enumeration type.
641    ,[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."
642    
643    The type of these constants are
644    [CODE(IDL)@en[[[unsigned]] [[short]]]].
645    
646    If no attribute type information is provided,
647    or if the source of that information does not
648    distinguish [[no value]] and [[unknown]] as in
649    XML Information Set, then the
650    [CODE(DOMc)@en[[[NO_TYPE_ATTR]]]] value
651    [['''MUST''']] be used.
652    
653    ;; A newly created [CODE(DOMi)@en[[[AttributeDefinition]]]]
654    object by [CODE(DOMm)@en[[[createAttributeDefinition]]]]
655    method has [CODE(DOMa)@en[[[declaredType]]]] attribute
656    set to [CODE(DOMc)@en[[[NO_TYPE_ATTR]]]].
657    
658    If the source of the attribute type information
659    does not distinguish [[no value]] and / or [[unknown]]
660    and [CODE(XML)@en[[[CDATA]]]], then the
661    [CODE(DOMc)@en[[[CDATA_ATTR]]]] value [['''MUST''']]
662    be used.
663    
664    [11]
665    In Perl binding, the objects implementing the
666    [CODE(DOMi)@en[[[Attr]]]] interface [['''MUST''']]
667    also implement the [CODE(DOM)@en[[[DeclaredValueType]]]]
668    constant group.
669    
670    [7] The
671    [DFN@en[definition group [CODE(DOM)@en[[[DefaultValueType]]]]]]
672    contains integers indicating the type of
673    default attribute value:
674    ,[CODE(DOMc)@en[[[UNKNOWN_DEFAULT]]]],[CODE(IDL)[[[0]]]],The default value is unknown.
675    ,[CODE(DOMc)@en[[[FIXED_DEFAULT]]]],[CODE(IDL)[[[1]]]],The default value is provided and the attribute is [CODE(XML)@en[#[[FIXED]]]] to that value.
676    ,[CODE(DOMc)@en[[[REQUIRED_DEFAULT]]]],[CODE(IDL)[[[2]]]],An attribute specification is [CODE(XML)@en[#[[REQUIRED]]]] for the attribute.
677    ,[CODE(DOMc)@en[[[IMPLIED_DEFAULT]]]],[CODE(IDL)[[[3]]]],The default value is [CODE(XML)@en[#[[IMPLIED]]]].
678    ,[CODE(DOMc)@en[[[EXPLICIT_DEFAULT]]]],[CODE(IDL)[[[4]]]],The default value is provided but the attribute is not fixed to it.
679    
680    The type of these constants are
681    [CODE(IDL)@en[[[unsigned]] [[short]]]].
682    
683    If the source of the attribute default value type
684    does not distinguish the [CODE(XML)@en[#[[IMPLIED]]]]
685    default and unknown default, then the
686    [CODE(DOMc)@en[[[IMPLIED_DEFAULT]]]] value
687    [['''MUST''']] be used.
688    
689    ;; A newly created [CODE(DOMi)@en[[[AttributeDefinition]]]]
690    object by [CODE(DOMm)@en[[[createAttributeDefinition]]]]
691    method has [CODE(DOMa)@en[[[declaredType]]]] attribute
692    set to [CODE(DOMc)@en[[[NO_TYPE_ATTR]]]].
693    
694    ** Tree-relationship Attributes
695    
696    [10]
697    The
698    [DFN@en[[CODE(DOMa)@en[[[ownerElementTypeDefinition]]]] attribute]]
699    of the [CODE(DOMi)@en[[[AttributeDefinition]]]] interface
700    is read-only and of type
701    [CODE(DOMi)@en[[[ElementTypeDefinition]]]].
702    It is the [CODE(DOMi)@en[[[ElementTypeDefinition]]]] node
703    which the [CODE(DOMi)@en[[[AttributeDefinition]]]] node
704    belong to.
705    
706    If the [CODE(DOMi)@en[[[AttributeDefinition]]]] node
707    is included in the [CODE(DOMa)@en[[[attributeDefinitions]]]]
708    list of an [CODE(DOMi)@en[[[ElementTypeDefinition]]]] node,
709    then the attribute [['''MUST''']] return the
710    [CODE(DOMi)@en[[[ElementTypeDefinition]]]] node.
711    Otherwise, it [['''MUST''']] return [CODE(DOM)@en[[[null]]]].
712    
713    ;; This attribute is analogue to the
714    [CODE(DOMa)@en[[[ownerDocumentTypeDefinition]]]] attribute
715    for [CODE(DOMi)@en[[[ElementTypeDefinition]]]],
716    [CODE(DOMi)@en[[[Entity]]]], and [CODE(DOMi)@en[[[Notation]]]]
717    nodes, or the [CODE(DOMa)@en[[[ownerElement]]]]
718    attribute for [CODE(DOMi)@en[[[Attr]]]] nodes.
719    
720    ** Attributes
721    
722    [5]
723    The [DFN@en[[CODE(DOMa)@en[[[declaredType]]]] attribute]]
724    of an [CODE(DOMi)@en[[[AttributeDefinition]]]] object
725    represents the type of the attribute value.
726    
727    This attribute is read-write.
728    The type of the attribute is
729    [CODE(IDL)@en[[[unsigned]] [[short]]]].  It is expected
730    that this attribute has a value from the definition group
731    [CODE(DOM)@en[[[DeclaredValueType]]]].
732    
733    The getter [['''MUST''']] return a value associated
734    to this attribute.
735    
736    The setter [['''MUST''']]
737    throw a [CODE(DOMc)@en[[[NO_MODIFICATION_ALLOWED_ERR]]]]
738    [CODE(DOMi)@en[[[DOMException]]]] if the
739    [CODE(DOMi)@en[[[AttributeDefinition]]]] object is read-only.
740    Otherwise, the setter [['''MUST''']] set the specified
741    value as the value associated to this attribute.
742    
743    If a parser create an [CODE(DOMi)@en[[[AttributeDefinition]]]]
744    object, then it [['''MUST''']] set a value
745    from the [CODE(DOM)@en[[[DeclaredValueType]]]]
746    definition group.
747    
748    [8]
749    The [DFN@en[[CODE(DOMa)@en[[[defaultType]]]] attribute]]
750    of an [CODE(DOMi)@en[[[AttributeDefinition]]]] object
751    represents the type of the attribute default value.
752    
753    This attribute is read-write.
754    The type of the attribute is
755    [CODE(IDL)@en[[[unsigned]] [[short]]]].  It is expected
756    that this attribute has a value from the definition group
757    [CODE(DOM)@en[[[DefaultValueType]]]].
758    
759    The getter [['''MUST''']] return a value associated
760    to this attribute.
761    
762    The setter [['''MUST''']]
763    throw a [CODE(DOMc)@en[[[NO_MODIFICATION_ALLOWED_ERR]]]]
764    [CODE(DOMi)@en[[[DOMException]]]] if the
765    [CODE(DOMi)@en[[[AttributeDefinition]]]] object is read-only.
766    Otherwise, the setter [['''MUST''']] set the specified
767    value as the value associated to this attribute.
768    
769    If a parser create an [CODE(DOMi)@en[[[AttributeDefinition]]]]
770    object, then it [['''MUST''']] set a value
771    from the [CODE(DOM)@en[[[DefaultValueType]]]]
772    definition group.</pre>
773    </div>
774    
775    </div>
776    
777    
778    
779    
780    
781  <div id="references" class="section reference">  <div id="references" class="section reference">

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.7

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24