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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.6 - (show annotations) (download) (as text)
Sun Dec 2 06:00:30 2007 UTC (16 years, 5 months ago) by wakaba
Branch: MAIN
Changes since 1.5: +57 -56 lines
File MIME type: text/html
createElementTypeDefinition and createAttributeDefinition

1 <!DOCTYPE html>
2 <html lang="en" class="formal-specification status-work-in-progress">
3 <head>
4 <title>DOM Document Type Definition Module</title>
5 <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">
8 </head>
9 <body class="has-abstract">
10
11 <div class="header">
12 <h1>DOM Document Type Definition Module</h1>
13 <h2>Working Draft <time datetime=2007-12-01>1 December 2007</time></h2>
14
15 <dl class="versions-uri">
16 <dt>This Version</dt>
17 <dd><code class="URI">&lt;<a href="http://suika.fam.cx/www/markup/xml/domdtdef/domdtdef-work"
18 >http://suika.fam.cx/www/markup/xml/domdtdef/domdtdef-work</a>&gt;</code></dd>
19 <dt>Latest Version</dt>
20 <dd><code class="URI">&lt;<a href="http://suika.fam.cx/www/markup/xml/domdtdef/domdtdef"
21 >http://suika.fam.cx/www/markup/xml/domdtdef/domdtdef</a>&gt;</code></dd>
22 <dt>Latest Working Draft</dt>
23 <dd><code class="URI">&lt;<a href="http://suika.fam.cx/www/markup/xml/domdtdef/domdtdef-work"
24 >http://suika.fam.cx/www/markup/xml/domdtdef/domdtdef-work</a>&gt;</code></dd>
25 <!-- <dt>Previous Version</dt> -->
26 <dt>Version History</dt>
27 <dd><code class=URI>&lt;<a href="http://suika.fam.cx/gate/cvs/markup/xml/domdtdef/domdtdef-work.en.html">http://suika.fam.cx/gate/cvs/markup/xml/domdtdef/domdtdef-work.en.html</a>&gt;</code></dd>
28 <dt id=author>Author</dt>
29 <dd><a href="http://suika.fam.cx/~wakaba/who?" rel="author"
30 lang=ja>Wakaba</a>
31 <code class="mail">&lt;<a href="mailto:w@suika.fam.cx" rel="author"
32 >w@suika.fam.cx</a>&gt;</code></dd>
33 </dl>
34
35 <p class="copyright" lang="en">&#xA9; <time>2007</time> <a
36 href="http://suika.fam.cx/~wakaba/who?" rel="author">Wakaba</a>.
37 Permission is granted to copy, distribute and/or modify this document
38 under the terms of the <a rel="license"
39 href="http://www.gnu.org/copyleft/fdl.html">GNU Free Documentation License</a>,
40 Version 1.2
41 or any later version published by the <a
42 href="http://www.fsf.org/">Free Software Foundation</a>;
43 with no Invariant Sections, no Front$B!>(BCover Texts, and no Back$B!>(BCover
44 Texts. A copy of the license is
45 available at <code class="URI">&lt;<a
46 href="http://www.gnu.org/copyleft/fdl.html"
47 rel="license">http://www.gnu.org/copyleft/fdl.html</a>&gt;</code>.</p>
48 </div>
49
50 <div id="abstract" class="section">
51 <h2>Abstract</h2>
52
53 <div class="ed issue">...</div>
54
55 </div>
56
57 <div id="status" class="section">
58 <h2>Status of This Document</h2>
59
60 <p class=section-info><em>This section describes the status of this document
61 at the time of its publication. Other documents
62 might supersede this document.</em></p>
63
64 <p>This document is a working draft, produced as part of the
65 <a href="http://suika.fam.cx/www/manakai-core/doc/web/">manakai</a>
66 project. It might be updated, replaced, or obsoleted by
67 other documents at any time. It is inappropriate to
68 cite this document as other than <q>work in progress</q>.</p>
69
70 <p>Comments on this document are welcome and
71 may be sent to the <a href="#author">author</a>.</p>
72
73 <p>Translations of thie document might be available.
74 The English version of the document is the only
75 normative version.</p>
76 </div>
77
78 <div id="introduction" class="section">
79 <h2>Introduction</h2>
80
81 <p class=section-info>This section is <em>non$B!>(Bnormative</em>.</p>
82
83 <div class="issue ed">
84 <p>This is a work-in-progress specification for DOM Document Type
85 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>
87 </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>
101
102 <div class="section" id="terminology">
103 <h2>Terminology</h2>
104
105 <p>The key words <q><em class="rfc2119">MUST</em></q>,
106 <q><em class="rfc2119">MUST NOT</em></q>,
107 <q><em class="rfc2119">SHOULD</em></q>,
108 <q><em class="rfc2119">SHOULD NOT</em></q>, and
109 <q><em class=rfc2119>MAY</em></q> in this
110 document are to be interpreted as described in
111 <a href="urn:ietf:rfc:2119"><abbr title="Request for Comments">RFC</abbr>
112 2119</a>
113 <cite class="bibref normative">[<a href="#ref-KEYWORDS">KEYWORDS</a>]</cite>.</p>
114
115 <!-- Strictly speaking the paragraph below is not part of terminology. -->
116 <p>All examples and notes in this specification are non$B!>(Bnormative,
117 as are all sections explicitly marked non$B!>(Bnormative. Everything
118 else in this specification is normative.</p>
119
120 <p><span class=ed>Algorithm is normative but non-normative</span>.
121 In addition, the order in which <a href="#errors">errors</a> are
122 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 <h2>The <code>DocumentXDoctype</code> Interface</h2>
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 <code>Entity</code> node with the
313 specified name, which represents a general entity, belonging to the
314 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 </dd>
318 <dt><dfn id=createNotation class=dom-method><code>createNotation</code></dfn>,
319 method</dt>
320 <dd>
321 <p>This method creates a <code>Notation</code> node with the
322 specified name, belonging to the document.</p>
323 <p>The <dfn id=createNotation-name class=dom-param><var>name</var></dfn>
324 parameter is the name of the notation.</p>
325 </dd>
326 </dl>
327
328 <pre class=ed>
329 [11] The [CODE(DOMm)@en[[[createGeneralEntity]]]]
330 method [['''MUST''']] create an [CODE(DOMi)@en[[[Entity]]]]
331 node with the following attribute values:
332 - [CODE(DOMa)@en[[[attributes]]]],
333 [CODE(DOMa)@en[[[parentNode]]]]: [CODE(DOM)@en[[[null]]]].
334 - [CODE(DOMa)@en[[[childNodes]]]]: An empty
335 [CODE(DOMi)@en[[[NodeList]]]].
336 - [CODE(DOMa)@en[[[manakaiDeclarationBaseURI]]]]:
337 No explicit value is set.
338 - [CODE(DOMa)@en[[[manakaiEntityBaseURI]]]]:
339 No explicit value is set.
340 - [CODE(DOMa)@en[[[manakaiEntityURI]]]]:
341 No explicit value is set.
342 - [CODE(DOMa)@en[[[manakaiHasReplacementTree]]]]:
343 [CODE(IDL)@en[[[false]]]].
344 - [CODE(DOMa)@en[[[manakaiReadOnly]]]]:
345 [CODE(IDL)@en[[[false]]]].
346 - [CODE(DOMa)@en[[[nodeName]]]]: [CODE(DOMp)@en[[[name]]]].
347 - [CODE(DOMa)@en[[[notationName]]]]: [CODE(DOM)@en[[[null]]]].
348 - [CODE(DOMa)@en[[[ownerDocument]]]]: The
349 [CODE(DOMi)@en[[[Document]]]] node on which the method
350 is invoked.
351 - [CODE(DOMa)@en[[[ownerDocumentTypeDefinition]]]]:
352 [CODE(IDL)@en[[[null]]]].
353 - [CODE(DOMa)@en[[[publicId]]]]: [CODE(DOM)@en[[[null]]]].
354 - [CODE(DOMa)@en[[[systemId]]]]: [CODE(DOM)@en[[[null]]]].
355
356 @@ Ensure all attributes are defined
357
358 @@ publicId and systemId should be empty string?
359
360 [13] The [CODE(DOMm)@en[[[createNotation]]]]
361 method [['''MUST''']] create a [CODE(DOMi)@en[[[Notation]]]]
362 node with the following attribute values:
363 - [CODE(DOMa)@en[[[attributes]]]],
364 [CODE(DOMa)@en[[[parentNode]]]]: [CODE(DOM)@en[[[null]]]].
365 - [CODE(DOMa)@en[[[childNodes]]]]: An empty
366 [CODE(DOMi)@en[[[NodeList]]]].
367 - [CODE(DOMa)@en[[[manakaiDeclarationBaseURI]]]]:
368 No explicit value is set.
369 - [CODE(DOMa)@en[[[manakaiReadOnly]]]]:
370 [CODE(IDL)@en[[[false]]]].
371 - [CODE(DOMa)@en[[[nodeName]]]]: [CODE(DOMp)@en[[[name]]]].
372 - [CODE(DOMa)@en[[[ownerDocument]]]]: The
373 [CODE(DOMi)@en[[[Document]]]] node on which the method
374 is invoked.
375 - [CODE(DOMa)@en[[[ownerDocumentTypeDefinition]]]]:
376 [CODE(IDL)@en[[[null]]]].
377 - [CODE(DOMa)@en[[[publicId]]]]: [CODE(DOM)@en[[[null]]]].
378 - [CODE(DOMa)@en[[[systemId]]]]: [CODE(DOM)@en[[[null]]]].
379
380 @@ Ensure all attributes are defined
381
382 [7]
383 These method [['''MUST''']] raise an
384 [CODE(DOMi)@en[[[INVALID_CHARACTER_ERR]]]]
385 [CODE(DOMi)@en[[[DOMException]]]]
386 if the [CODE(DOMp)@en[[[name]]]] is not a legal
387 name according to the XML version in use as
388 specified in the [CODE(DOMa)@en[[[xmlVersion]]]]
389 attribute of the [CODE(DOMi)@en[[[Document]]]] node.
390
391 ;; Non-XML case is intentionally left unspecified for now
392 since DOM3 does not define it.
393
394 ;; [CODE(DOMp)@en[[[name]]]] does not have to
395 be a namespace qualified name.
396
397 ;; Note also that it is not an error for the
398 [CODE(DOMp)@en[[[name]]]] parameter value
399 to match to the name of one of predefined general
400 parsed entities in XML or HTML.
401
402 ;; If the [CODE(DOMa)@en[[[strictErrorChecking]]]] attribute
403 is set to [CODE(IDL)@en[[[false]]]], then the implementation
404 is not required to raise this exception.
405
406 Otherwise, these method [['''MUST''']] return
407 the newly created node.
408 </pre>
409
410 </div>
411
412 <div class=section id=section-documenttypedefinition>
413 <h2>The <code>DocumentTypeDefinition</code> Interface</h2>
414
415 <pre class=idl><code>interface <dfn id=DocumentTypeDefinition><code>DocumentTypeDefinition</code></dfn> {
416
417 }</code></pre>
418
419 <pre class=ed>
420 [1] In an implementation that supports the
421 [CODE(URI)@en[[[http://suika.fam.cx/www/2006/feature/XDoctype]]]]
422 feature, a [CODE(DOMi)@en[[[DocumentType]]]] node
423 must implement the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]]
424 interface. See [[DOM XML Document Type Definition]>>3] for
425 details.
426
427
428 ** Children
429
430 [2] The [DFN@en[[CODE(DOMa)@en[[[elementTypes]]]] attribute]]
431 of the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]] interface
432 is a live [CODE(DOMi)@en[[[NamedNodeMap]]]] object that
433 contains all element types belongs to the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]]
434 node. The type of the attribute is [CODE(DOMi)@en[[[NamedNodeMap]]]].
435 The attribute is read-only.
436
437 What are contained in this collection depends on how
438 the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]] node was created. If the
439 node was created as the result of parsing of an XML document,
440 it [['''MUST''']] contain all element types whose element type and / or
441 attribute definition list declaration are encountered by and provided for the DOM
442 implementation from the XML processor. Note that the XML processor might not
443 provide a part of or entire such information depending on the configuration.
444 If more than one declarations for an element type or an attribute is available
445 at the time of the definition node construction, then declarations other than
446 the first ones [['''MUST''']] be discarded.
447
448 The attribute [['''MUST''']] return the [CODE(DOMi)@en[[[NamedNodeMap]]]]
449 object that contains all the [CODE(DOMi)@en[[[ElementTypeDefinition]]]] nodes
450 belong to the node. The returned [CODE(DOMi)@en[[[NamedNodeMap]]]] object
451 [['''MUST''']] be read-only if and only if the node is read-only.
452 Note that the [CODE(DOMi)@en[[[NamedNodeMap]]]] object is live
453 and therefore any change of read-only flag on the node is immediately
454 reflected by that of the object.
455
456 [3] The [DFN@en[[CODE(DOMa)@en[[[generalEntities]]]] attribute]]
457 of the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]] interface
458 is a live [CODE(DOMi)@en[[[NamedNodeMap]]]] object that contains all the
459 general entities belong to the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]] node.
460 The type of the attribute is [CODE(DOMi)@en[[[NamedNodeMap]]]].
461 The attribute is read-only.
462
463 All entities declared in the document type definition
464 contained in or referenced from the document entity
465 might not be exposed through this collection, depending
466 on the information provided by the XML processor for
467 the DOM implementation. In particular, it might not
468 contain any entity if entity references are expanded
469 at the parse time. An implementation [['''MUST NOT''']]
470 expose an [CODE(DOMi)@en[[[Entity]]]] node whose [CODE(DOMa)@en[[[nodeName]]]]
471 is equal to the name of one of five predefined general entities in
472 XML through the collection as the result of parsing of an XML
473 document that has no error. Duplicate entity declarations are also discarded.
474
475 The attribute [['''MUST''']] return the [CODE(DOMi)@en[[[NamedNodeMap]]]]
476 object that contains all the [CODE(DOMi)@en[[[Entity]]]] nodes
477 representing general entities belong to the node. The returned
478 [CODE(DOMi)@en[[[NamedNodeMap]]]] object [['''MUST''']] be read-only if and only if
479 the node is read-only. Note that the [CODE(DOMi)@en[[[NamedNodeMap]]]] object is live
480 and therefore any change of read-only flag on the node is immediately
481 reflected by that of the object.
482
483 The attribute [['''MUST''']] return the same value as the
484 [CODE(DOMa)@en[[[entites]]]] attribute of the
485 [CODE(DOMi)@en[[[DocumentType]]]] interface on the same node.
486
487 [4] The [DFN@en[[CODE(DOMa)@en[[[notations]]]] attribute]]
488 of the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]] interface
489 is a live [CODE(DOMi)@en[[[NamedNodeMap]]]] object that contains
490 all the notations belong to the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]]
491 node. The type of the attribute is [CODE(DOMi)@en[[[NamedNodeMap]]]].
492 The attribute is read-only.
493
494 If the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]] node is
495 created from an XML document, duplicate notation declarations, if any, in DTD
496 [['''MUST NOT''']] result in a node in the [CODE(DOMi)@en[[[NamedNodeMap]]]]
497 object and only the first declaration [['''MUST''']] be
498 made available as a [CODE(DOMi)@en[[[Notation]]]] node.
499
500 ;; This definition is based on one for the
501 [CODE(DOMa)@en[[[notations]]]] attribute of the
502 [CODE(DOMi)@en[[[DocumentType]]]] interface in DOM XML module.
503 Since duplication is violation to the Validity Constraint,
504 XML parsers might vary on how notations are notified to
505 the application. In particular, [CODE(InfoProp)@en[[[notations]]]]
506 property of the document information item in XML Information Set
507 is so defined that in case ''any'' notation is declared for
508 multiple times then the property has no value.
509
510 The attribute [['''MUST''']] return the [CODE(DOMi)@en[[[NamedNodeMap]]]]
511 object that contains all the [CODE(DOMi)@en[[[Notation]]]] nodes
512 representing notations belong to the node. The returned
513 [CODE(DOMi)@en[[[NamedNodeMap]]]] object [['''MUST''']] be read-only if and only if
514 the node is read-only. Note that the [CODE(DOMi)@en[[[NamedNodeMap]]]] object is live
515 and therefore any change of read-only flag on the node is immediately
516 reflected by that of the object.
517
518 A DOM implementation is not required to implement the
519 [CODE(DOMa)@en[[[notations]]]] attribute twice
520 for the [CODE(DOMi)@en[[[DocumentType]]]] and
521 the [CODE(DOMi)@en[[[DocumentTypeDefinition]]]] interfaces;
522 the latter is defined to contain the same value as the former.
523
524
525 ** Open Issues (informative)
526
527 [5] A future version of the interface might define the
528 [CODE(DOMa)@en[[[parameterEntities]]]] attribute and
529 getter/setter for parameter entities.
530 </pre>
531 </div>
532
533 <div class=section id=section-elementtypedefinition>
534 <h2>The <code>ElementTypeDefinition</code> Interface</h2>
535
536 <pre class=idl><code>interface <dfn id=ElementTypeDefinition><code>ElementTypeDefinition</code></dfn> {
537
538 }</code></pre>
539
540 <pre class=ed>** Modifications to [CODE(DOMi)@en[[[Node]]]] members
541
542 [3] The getter of the [CODE(DOMa)@en[[[attributes]]]] attribute
543 of an [CODE(DOMi)@en[[[ElementTypeDefinition]]]] object
544 [['''MUST''']] return [CODE(IDL)@en[[[null]]]].
545
546 [4] The getter of the [CODE(DOMa)@en[[[baseURI]]]] attribute
547 of an [CODE(DOMi)@en[[[ElementTypeDefinition]]]] object
548 [['''MUST''']] return the [CODE(DOMa)@en[[[baseURI]]]]
549 of the [CDOE(DOMa)@en[[[ownerDocument]]]] of the
550 [CODE(DOMi)@en[[[ElementTypeDefinition]]]] object.
551 Note that it might be [CODE(IDL)@en[[[null]]]].
552
553 [1] The getter of the [CODE(DOMa)@en[[[nodeName]]]] attribute
554 of an [CODE(DOMi)@en[[[ElementTypeDefinition]]]] object
555 [['''MUST''']] return the name of the element type.
556
557 [2] The getters of the [CODE(DOMa)@en[[[nodeValue]]]]
558 and [CODE(DOMa)@en[[[textContent]]]] attributes
559 of an [CODE(DOMi)@en[[[ElementTypeDefinition]]]]
560 object [['''MUST''']] return [CODE(IDL)@en[[[null]]]].
561
562 ;; Thus, the setter of these attributes do nothing.
563
564 The setter of the [CODE(DOMa)@en[[[textContent]]]]
565 attribute of an [CODE(DOMi)@en[[[ElementTypeDefinition]]]]
566 object [['''MUST NOT''']] throw a
567 [CODE(DOMc)@en[[[NO_MODIFICATION_ALLOWED_ERR]]]].
568
569 ** The [CODE(DOMi)@en[ElementTypeDefinition]] Interface
570
571 [5] The
572 [DFN@en[[CODE(DOMa)@en[[[ownerDocumentTypeDefinition]]]] attribute]]
573 of the [CODE(DOMi)@en[[[ElementTypeDefinition]]]]
574 interface is defined in [[manakai//DOM Extensions]>>50].</pre>
575 </div>
576
577 <div class=section id=section-attributedefinition>
578 <h2>The <code>AttributeDefinition</code> Interface</h2>
579
580 <pre class=idl><code>interface <dfn id=AttributeDefinition><code>AttributeDefinition</code></dfn> {
581
582 }</code></pre>
583
584 <pre class=ed>** Modifications to [CODE(DOMi)@en[[[Node]]]] members
585
586 [3] The getter of the [CODE(DOMa)@en[[[attributes]]]] attribute
587 of an [CODE(DOMi)@en[[[AttributeDefinition]]]] object
588 [['''MUST''']] return [CODE(IDL)@en[[[null]]]].
589
590 [9] The getter of the [CODE(DOMa)@en[[[baseURI]]]] attribute
591 of an [CODE(DOMi)@en[[[AttributeDefinition]]]] object
592 [['''MUST''']] return the [CODE(DOMa)@en[[[baseURI]]]]
593 of the [CDOE(DOMa)@en[[[ownerDocument]]]] of the
594 [CODE(DOMi)@en[[[AttributeDefinition]]]] object.
595 Note that it might be [CODE(IDL)@en[[[null]]]].
596
597 [1] The getter of the [CODE(DOMa)@en[[[nodeName]]]] attribute
598 of an [CODE(DOMi)@en[[[AttributeDefinition]]]] object
599 [['''MUST''']] return the name of the attribute.
600
601 [2] The getter of the [CODE(DOMa)@en[[[nodeValue]]]] attribute
602 of an [CODE(DOMi)@en[[[AttributeDefinition]]]] object
603 [['''MUST''']] return the normalized default value
604 of the attribute.
605
606 @@
607
608 [4] The getter of the [CODE(DOMa)@en[[[textContent]]]]
609 attribute of an [CODE(DOMi)@en[[[AttributeDefinition]]]]
610 object [['''MUST''']] behave as if it were an
611 [CODE(DOMi)@en[[[Attr]]]] object.
612
613 The setter of the [CODE(DOMa)@en[[[textContent]]]] attribute
614 of an [CODE(DOMi)@en[[[AttributeDefinition]]]] object
615 [['''MUST''']] behave as if the following algorithm
616 is performed:
617 = If the [CODE(DOMi)@en[[[AttributeDefinition]]]]
618 object is read-only, then throw an
619 [CODE(DOMc)@en[[[NO_MODIFICATION_ALLOWED_ERR]]]].
620 = Remove any child node the node has.
621 = If the new value is not empty and not [CODE(IDL)@en[[[null]]]],
622 then create a [CODE(DOMi)@en[[[Text]]]] node
623 whose [CODE(DOMa)@en[[[data]]]] is the new value
624 and append it to the [CODE(DOMi)@en[[[AttributeDefinition]]]].
625
626 ** Definition groups
627
628 [6] The
629 [DFN@en[definition group [CODE(DOM)@en[[[DeclaredValueType]]]]]]
630 contains integers indicating the type of
631 attribute value:
632 ,[CODE(DOMc)@en[[[NO_TYPE_ATTR]]]],[CODE(IDL)[[[0]]]],The attribute value type corresponding to [[no value]] in XML Information Set.
633 ,[CODE(DOMc)@en[[[CDATA_ATTR]]]],[CODE(IDL)[[[1]]]],The attribute value type is [CODE(XML)@en[[[CDATA]]]].
634 ,[CODE(DOMc)@en[[[ID_ATTR]]]],[CODE(IDL)[[[2]]]],The attribute value type is [CODE(XML)@en[[[ID]]]].
635 ,[CODE(DOMc)@en[[[IDREF_ATTR]]]],[CODE(IDL)[[[3]]]],The attribute value type is [CODE(XML)@en[[[IDREF]]]].
636 ,[CODE(DOMc)@en[[[IDREFS_ATTR]]]],[CODE(IDL)[[[4]]]],The attribute value type is [CODE(XML)@en[[[IDREFS]]]].
637 ,[CODE(DOMc)@en[[[ENTITY_ATTR]]]],[CODE(IDL)[[[5]]]],The attribute value type is [CODE(XML)@en[[[ENTITY]]]].
638 ,[CODE(DOMc)@en[[[ENTITIES_ATTR]]]],[CODE(IDL)[[[6]]]],The attribute value type is [CODE(XML)@en[[[ENTITIES]]]].
639 ,[CODE(DOMc)@en[[[NMTOKEN_ATTR]]]],[CODE(IDL)[[[7]]]],The attribute value type is [CODE(XML)@en[[[NMTOKEN]]]].
640 ,[CODE(DOMc)@en[[[NMTOKENS_ATTR]]]],[CODE(IDL)[[[8]]]],The attribute value type is [CODE(XML)@en[[[NMTOKENS]]]].
641 ,[CODE(DOMc)@en[[[NOTATION_ATTR]]]],[CODE(IDL)[[[9]]]],The attribute value type is [CODE(XML)@en[[[NOTATION]]]].
642 ,[CODE(DOMc)@en[[[ENUMERATION_ATTR]]]],[CODE(IDL)[[[10]]]],The attribute value is enumeration type.
643 ,[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."
644
645 The type of these constants are
646 [CODE(IDL)@en[[[unsigned]] [[short]]]].
647
648 If no attribute type information is provided,
649 or if the source of that information does not
650 distinguish [[no value]] and [[unknown]] as in
651 XML Information Set, then the
652 [CODE(DOMc)@en[[[NO_TYPE_ATTR]]]] value
653 [['''MUST''']] be used.
654
655 ;; A newly created [CODE(DOMi)@en[[[AttributeDefinition]]]]
656 object by [CODE(DOMm)@en[[[createAttributeDefinition]]]]
657 method has [CODE(DOMa)@en[[[declaredType]]]] attribute
658 set to [CODE(DOMc)@en[[[NO_TYPE_ATTR]]]].
659
660 If the source of the attribute type information
661 does not distinguish [[no value]] and / or [[unknown]]
662 and [CODE(XML)@en[[[CDATA]]]], then the
663 [CODE(DOMc)@en[[[CDATA_ATTR]]]] value [['''MUST''']]
664 be used.
665
666 [11]
667 In Perl binding, the objects implementing the
668 [CODE(DOMi)@en[[[Attr]]]] interface [['''MUST''']]
669 also implement the [CODE(DOM)@en[[[DeclaredValueType]]]]
670 constant group.
671
672 [7] The
673 [DFN@en[definition group [CODE(DOM)@en[[[DefaultValueType]]]]]]
674 contains integers indicating the type of
675 default attribute value:
676 ,[CODE(DOMc)@en[[[UNKNOWN_DEFAULT]]]],[CODE(IDL)[[[0]]]],The default value is unknown.
677 ,[CODE(DOMc)@en[[[FIXED_DEFAULT]]]],[CODE(IDL)[[[1]]]],The default value is provided and the attribute is [CODE(XML)@en[#[[FIXED]]]] to that value.
678 ,[CODE(DOMc)@en[[[REQUIRED_DEFAULT]]]],[CODE(IDL)[[[2]]]],An attribute specification is [CODE(XML)@en[#[[REQUIRED]]]] for the attribute.
679 ,[CODE(DOMc)@en[[[IMPLIED_DEFAULT]]]],[CODE(IDL)[[[3]]]],The default value is [CODE(XML)@en[#[[IMPLIED]]]].
680 ,[CODE(DOMc)@en[[[EXPLICIT_DEFAULT]]]],[CODE(IDL)[[[4]]]],The default value is provided but the attribute is not fixed to it.
681
682 The type of these constants are
683 [CODE(IDL)@en[[[unsigned]] [[short]]]].
684
685 If the source of the attribute default value type
686 does not distinguish the [CODE(XML)@en[#[[IMPLIED]]]]
687 default and unknown default, then the
688 [CODE(DOMc)@en[[[IMPLIED_DEFAULT]]]] value
689 [['''MUST''']] be used.
690
691 ;; A newly created [CODE(DOMi)@en[[[AttributeDefinition]]]]
692 object by [CODE(DOMm)@en[[[createAttributeDefinition]]]]
693 method has [CODE(DOMa)@en[[[declaredType]]]] attribute
694 set to [CODE(DOMc)@en[[[NO_TYPE_ATTR]]]].
695
696 ** Tree-relationship Attributes
697
698 [10]
699 The
700 [DFN@en[[CODE(DOMa)@en[[[ownerElementTypeDefinition]]]] attribute]]
701 of the [CODE(DOMi)@en[[[AttributeDefinition]]]] interface
702 is read-only and of type
703 [CODE(DOMi)@en[[[ElementTypeDefinition]]]].
704 It is the [CODE(DOMi)@en[[[ElementTypeDefinition]]]] node
705 which the [CODE(DOMi)@en[[[AttributeDefinition]]]] node
706 belong to.
707
708 If the [CODE(DOMi)@en[[[AttributeDefinition]]]] node
709 is included in the [CODE(DOMa)@en[[[attributeDefinitions]]]]
710 list of an [CODE(DOMi)@en[[[ElementTypeDefinition]]]] node,
711 then the attribute [['''MUST''']] return the
712 [CODE(DOMi)@en[[[ElementTypeDefinition]]]] node.
713 Otherwise, it [['''MUST''']] return [CODE(DOM)@en[[[null]]]].
714
715 ;; This attribute is analogue to the
716 [CODE(DOMa)@en[[[ownerDocumentTypeDefinition]]]] attribute
717 for [CODE(DOMi)@en[[[ElementTypeDefinition]]]],
718 [CODE(DOMi)@en[[[Entity]]]], and [CODE(DOMi)@en[[[Notation]]]]
719 nodes, or the [CODE(DOMa)@en[[[ownerElement]]]]
720 attribute for [CODE(DOMi)@en[[[Attr]]]] nodes.
721
722 ** Attributes
723
724 [5]
725 The [DFN@en[[CODE(DOMa)@en[[[declaredType]]]] attribute]]
726 of an [CODE(DOMi)@en[[[AttributeDefinition]]]] object
727 represents the type of the attribute value.
728
729 This attribute is read-write.
730 The type of the attribute is
731 [CODE(IDL)@en[[[unsigned]] [[short]]]]. It is expected
732 that this attribute has a value from the definition group
733 [CODE(DOM)@en[[[DeclaredValueType]]]].
734
735 The getter [['''MUST''']] return a value associated
736 to this attribute.
737
738 The setter [['''MUST''']]
739 throw a [CODE(DOMc)@en[[[NO_MODIFICATION_ALLOWED_ERR]]]]
740 [CODE(DOMi)@en[[[DOMException]]]] if the
741 [CODE(DOMi)@en[[[AttributeDefinition]]]] object is read-only.
742 Otherwise, the setter [['''MUST''']] set the specified
743 value as the value associated to this attribute.
744
745 If a parser create an [CODE(DOMi)@en[[[AttributeDefinition]]]]
746 object, then it [['''MUST''']] set a value
747 from the [CODE(DOM)@en[[[DeclaredValueType]]]]
748 definition group.
749
750 [8]
751 The [DFN@en[[CODE(DOMa)@en[[[defaultType]]]] attribute]]
752 of an [CODE(DOMi)@en[[[AttributeDefinition]]]] object
753 represents the type of the attribute default value.
754
755 This attribute is read-write.
756 The type of the attribute is
757 [CODE(IDL)@en[[[unsigned]] [[short]]]]. It is expected
758 that this attribute has a value from the definition group
759 [CODE(DOM)@en[[[DefaultValueType]]]].
760
761 The getter [['''MUST''']] return a value associated
762 to this attribute.
763
764 The setter [['''MUST''']]
765 throw a [CODE(DOMc)@en[[[NO_MODIFICATION_ALLOWED_ERR]]]]
766 [CODE(DOMi)@en[[[DOMException]]]] if the
767 [CODE(DOMi)@en[[[AttributeDefinition]]]] object is read-only.
768 Otherwise, the setter [['''MUST''']] set the specified
769 value as the value associated to this attribute.
770
771 If a parser create an [CODE(DOMi)@en[[[AttributeDefinition]]]]
772 object, then it [['''MUST''']] set a value
773 from the [CODE(DOM)@en[[[DefaultValueType]]]]
774 definition group.</pre>
775 </div>
776
777 </div>
778
779
780
781
782
783 <div id="references" class="section reference">
784 <h2>References</h2>
785
786 <div id="normative-references" class="section normative reference">
787 <h3>Normative References</h3>
788
789 <dl>
790 <dt id=ref-DOM3CORE>DOM3CORE</dt>
791 <dd class=ed>@@ W3C DOM Level 3 Core</dd>
792 <dt id=ref-DOMDTDEF>DOMDTDEF</dt>
793 <dd class=ed>@@ manakai's extension to DOM for document type definitions</dd>
794 <dt id="ref-KEYWORDS">KEYWORDS</dt>
795 <dd><cite><a href="urn:ietf:rfc:2119">Key words for use in
796 <abbr>RFCs</abbr> to Indicate Requirement Levels</a></cite>,
797 <abbr title="Internet Engineering Task Force">IETF</abbr>
798 <a href="urn:ietf:bcp:14"><abbr title="Best Current Practice">BCP</abbr>
799 14</a>, <abbr title="Request for Comments">RFC</abbr> 2119,
800 <time datetime=1997-03>March 1997</time>.
801 <em>This</em> version of the specification is referenced.</dd>
802 <dt id=ref-INFOSET>INFOSET</dt>
803 <dd class=ed>@@</dd>
804 <dt id=ref-XML10">XML10</dt>
805 <dd><cite><a href="http://www.w3.org/TR/2006/REC-xml-20060816">Extensible
806 Markup Language (<abbr>XML</abbr>) 1.0 (Fourth Edition)</a></cite>,
807 <abbr>W3C</abbr> Recommendation, <time datetime=2006-08-16>16 August
808 2006</time>, edited in place <time datetime=2006-09-29>29 September
809 2006</time>. Tje latest version of the specification is available at
810 <code class=uri>&lt;<a href="http://www.w3.org/TR/xml">http://www.w3.org/TR/xml</a>&gt;</code>.
811 <em>This</em> version of the specification is referenced.</dd>
812 <dt id=ref-XML11>XML11</dt>
813 <dd class=ed>@@</dd>
814 </dl>
815 </div>
816
817 <div id="informative-references" class="section informative reference">
818 <h3>Non$B!>(Bnormative References</h3>
819
820 <dl class=ed>
821 <dt id=ref-CSS>CSS</dt>
822 <dd><cite><a href="http://www.w3.org/TR/2007/CR-CSS21-20070719">Cascading
823 Style Sheets Level 2 Revision 1 (<abbr>CSS</abbr> 2.1)
824 Specification</a></cite>,
825 <abbr title="World Wide Web Consortium">W3C</abbr> Candidate
826 Recommendation, <time datetime=2007-07-19>19 July 2007</time>.
827 Work in progress. The latest version of the specification is
828 available at
829 <code class=URI>&lt;<a href="http://www.w3.org/TR/CSS21">http://www.w3.org/TR/CSS21</a>></code>.</dd>
830 <dt id=ref-CSSOM>CSSOM</dt>
831 <dd><cite><a href="http://dev.w3.org/cvsweb/~checkout~/csswg/cssom/Overview.html?rev=1.55&amp;content-type=text/html;%20charset=utf-8">Cascading
832 Style Sheets Object Model (<abbr>CSSOM</abbr>)</a></cite>,
833 <abbr title="World Wide Web Consortium">W3C</abbr> Editor's Draft,
834 <time datetime=2007-06-18>18 June 2007</time>. Work in progress.
835 The latest Editor's Draft of the specification is available at
836 <code class=URI>&lt;<a href="http://dev.w3.org/csswg/cssom/Overview.html">http://dev.w3.org/csswg/cssom/Overview.html</a>></code>.</dd>
837 <dt id=ref-HTML5>HTML5</dt>
838 <dd><cite><a href="http://whatwg.org/html5"><abbr>HTML</abbr> 5</a></cite>,
839 <abbr title="Web Hypertext Application Technology Working Group">WHATWG</abbr>
840 Working Draft. Work in progress.</dd>
841 <dt id=ref-SAPI>SAPI</dt>
842 <dd><cite><a href="http://dev.w3.org/cvsweb/~checkout~/2006/webapi/selectors-api/Overview.html?rev=1.28&amp;content-type=text/html;%20charset=utf-8">Selectors <abbr>API</abbr></a></cite>,
843 <abbr title="World Wide Web Consortium">W3C</abbr> Editor's Draft,
844 <time datetime=2007-08-29>29 August 2007</time>. Work in progress.
845 The latest Editor's Draft of the specification is available at
846 <code class=URI>&lt;<a href="http://dev.w3.org/2006/webapi/selectors-api/Overview.html">http://dev.w3.org/2006/webapi/selectors-api/Overview.html</a>></code>.
847 The latest published version of the specification is available at
848 <code class=URI>&lt;<a href="http://www.w3.org/TR/selectors-api/">http://www.w3.org/TR/selectors-api/</a>></code>.</dd>
849 <dt id=XBL2>XBL2</dt>
850 <dd><cite><a href="http://www.mozilla.org/projects/xbl/xbl2.html"><abbr>XBL</abbr>
851 2.0</a></cite>, Mozilla.org, <time datetime=2007-03-15>15 Mar 2007</time>.
852 Work in progress. The latest
853 <abbr title="World Wide Web Consortium">W3C</abbr>$B!>(Bpublished
854 version of the specification is available at
855 <code class=URI>&lt;<a href="http://www.w3.org/TR/xbl/">http://www.w3.org/TR/xbl/</a>></code>.</dd>
856 <dt id=ref-XML5>XML5</dt>
857 <dd class=ed>@@</dd>
858 </dl>
859 </div>
860
861 </div>
862
863 </body>
864 </html>

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24