| 540 |  |  | 
| 541 | </div> | </div> | 
| 542 |  |  | 
| 543 |  |  | 
| 544 |  | <div class=section id=section-documenttype> | 
| 545 |  | <h3>Modifications to the <code id=DocumentType>DocumentType</code> | 
| 546 |  | Interface</h3> | 
| 547 |  |  | 
| 548 |  | <p>A <a href="#DocumentType"><code>DocumentType</code></a> interface | 
| 549 |  | <em class=rfc2119>MAY</em> contain zero or more | 
| 550 |  | <a href="#ProcessingInstruction"><code>ProcessingInstruction</code></a> | 
| 551 |  | nodes in the <code>NodeList</code> object contained in the | 
| 552 |  | <code>childNodes</code> attribute of the | 
| 553 |  | <a href="#DocumentType"><code>DocumentType</code></a> node.</p> | 
| 554 |  |  | 
| 555 |  | <p>If the <a href="#DocumentType"><code>DocumentType</code></a> node is created | 
| 556 |  | during the process to create a <abbr>DOM</abbr> from an <abbr>XML</abbr> | 
| 557 |  | document, the <code>NodeList</code> object in the <code>childNodes</code> | 
| 558 |  | object <em class=rfc2119>MUST</em> contains the | 
| 559 |  | <a href="#ProcessingInstruction"><code>ProcessingInstruction</code></a> | 
| 560 |  | nodes representing the processing instructions in the document type | 
| 561 |  | definition of the document processed <span class=ed>@@ ref</span> by | 
| 562 |  | the <abbr>XML</abbr> processor.  If the | 
| 563 |  | <a href="#DocumentType"><code>DocumentType</code></a> node is marked | 
| 564 |  | as read$B!>(Bonly, then all the child nodes <em class=rfc2119>MUST</em> | 
| 565 |  | also be marked as read$B!>(Bonly.</p> | 
| 566 |  |  | 
| 567 |  | <p>If a <a href="#DocumentType"><code>DocumentType</code></a> node is created | 
| 568 |  | from a document type declaration information item <span class=ed>@@ ref</span>, | 
| 569 |  | the <code>NodeList</code> object in the <code>childNodes</code> attribute | 
| 570 |  | of the node <em class=rfc2119>MUST</em> contain the | 
| 571 |  | <a href="#ProcessingInstruction"><code>ProcessingInstruction</code></a> nodes | 
| 572 |  | created from the processing instruction information items in the list in the | 
| 573 |  | [children] property of the document type declaration item in the same | 
| 574 |  | order.</p> | 
| 575 |  |  | 
| 576 |  | <p>If a <a href="#DocumentType"><code>DocumentType</code></a> node is mapped to | 
| 577 |  | a document type declaration information item, the list in the [children] | 
| 578 |  | property <em class=rfc2119>MUST</em> contain the processng instruction | 
| 579 |  | information items created from the | 
| 580 |  | <a href="#ProcessingInstruction"><code>ProcessingInstruction</code></a> nodes | 
| 581 |  | in the <code>NodeList</code> object in the <code>childNodes</code> attribute | 
| 582 |  | of the <a href="#DocumentType"><code>DocumentType</code></a> node.</p> | 
| 583 |  |  | 
| 584 |  | <p>The implementation of the | 
| 585 |  | <a href="#DocumentType"><code>DocumentType</code></a> interface | 
| 586 |  | <em class=rfc2119>MUST</em> be modified as following:</p> | 
| 587 |  | <pre class=idl><code>// Modifications to the DocumentType interface | 
| 588 |  | attribute DOMString <a href="#publicId">publicId</a>; | 
| 589 |  | attribute DOMString <a href="#systemId">systemId</a>; | 
| 590 |  |  | 
| 591 |  | attribute DOMString <a href="#internalSubset">internalSubset</a>; | 
| 592 |  | </code></pre> | 
| 593 |  |  | 
| 594 |  | <p>The <code id=publicId>publicId</code> attribute and the | 
| 595 |  | <code id=systemId>systemId</code> attribute of | 
| 596 |  | <a href="#DocumentType"><code>DocumentType</code></a>, | 
| 597 |  | <a href="#Entity"><code>Entity</code></a>, and | 
| 598 |  | <a href="#Notation"><code>Notation</code></a> interfaces are no longer | 
| 599 |  | read$B!>(Bonly.</p> | 
| 600 |  |  | 
| 601 |  | <p>On setting, the attribute <em class=rfc2119>MUST</em> raise a | 
| 602 |  | <code>NO_MODIFICATION_ALLOWED_ERR</code> <span class=ed>@@ ref</span> | 
| 603 |  | exception if the node is read$B!>(Bonly <span class=ed>@@ ref</span>. | 
| 604 |  | Otherwise, it <em class=rfc2119>MUST</em> set the specified value as the value | 
| 605 |  | associated to the attribute.  No normalization, relative reference resolution, | 
| 606 |  | or lexical validation is performed. <span class=ed>@@ If the new | 
| 607 |  | value is <code>null</code>, ...</span></p> | 
| 608 |  |  | 
| 609 |  | <div class="note memo"> | 
| 610 |  | <p>Setting an invalid identifier might make the node unserializable. | 
| 611 |  | Setting a public identifier while leaveing system identifier unspecified | 
| 612 |  | would also make the <a href="#DocumentType"><code>DocumentType</code></a> | 
| 613 |  | or <a href="#Entity"><code>Entity</code></a> node unserializable.</p> | 
| 614 |  | </div> | 
| 615 |  |  | 
| 616 |  | <div class=ed> | 
| 617 |  | <p>ISSUE: In HTML5, Firefox 1.5, and Opera 9, not specifying public or system identifier results in empty strings.</p> | 
| 618 |  | </div> | 
| 619 |  |  | 
| 620 |  | <p>The <code id=internalSubset>internalSubset</code> attribute of the | 
| 621 |  | <a href="#DocumentType"><code>DocumentType</code></a> interface is no longer | 
| 622 |  | read$B!>(Bonly.</p> | 
| 623 |  |  | 
| 624 |  | <p>On setting, the attribute <em class=rfc2119>MUST</em> raise a | 
| 625 |  | <code>NO_MODIFICATION_ALLOWED_ERR</code> <span class=ed>@@ ref</span> | 
| 626 |  | exception if the node is read$B!>(Bonly <span class=ed>@@ ref</span>. | 
| 627 |  | Otherwise, it <em class=rfc2119>MUST</em> set the specified value as the value | 
| 628 |  | associated to the attribute.  No normalization, or lexical validation is | 
| 629 |  | performed. <span class=ed>@@ If the new value is <code>null</code>, | 
| 630 |  | ...</span></p> | 
| 631 |  |  | 
| 632 |  | </div> | 
| 633 |  |  | 
| 634 | <div class=section id=section-documenttypedefinition> | <div class=section id=section-documenttypedefinition> | 
| 635 | <h3>The <code>DocumentTypeDefinition</code> Interface</h3> | <h3>The <code>DocumentTypeDefinition</code> Interface</h3> | 
| 636 |  |  | 
| 637 |  | <div class="note memo"> | 
| 638 |  | <p>This interface is a separated interface from the | 
| 639 |  | <a href="#DocumentType"><code>DocumentType</code></a>, not a set of extensions | 
| 640 |  | to the <a href="#DocumentType"><code>DocumentType</code></a>, | 
| 641 |  | for the historical reason.</p> | 
| 642 |  | </div> | 
| 643 |  |  | 
| 644 | <p>The | <p>The | 
| 645 | <a href="#DocumentTypeDefinition"><code>DocumentTypeDefinition</code></a> | <a href="#DocumentTypeDefinition"><code>DocumentTypeDefinition</code></a> | 
| 646 | interface <em class=rfc2119>MUST</em> be implemented as following:</p> | interface <em class=rfc2119>MUST</em> be implemented as following:</p> | 
| 791 | <div class=section id=section-elementtypedefinition> | <div class=section id=section-elementtypedefinition> | 
| 792 | <h3>The <code>ElementTypeDefinition</code> Interface</h3> | <h3>The <code>ElementTypeDefinition</code> Interface</h3> | 
| 793 |  |  | 
| 794 |  | <p>The nodes of type | 
| 795 |  | <a href="#ELEMENT_TYPE_DEFINITION_NODE"><code>ELEMENT_TYPE_DEFINITION_NODE</code></a> | 
| 796 |  | represents an element type definition.  Such a node implements the | 
| 797 |  | <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> | 
| 798 |  | interface, which extends the <a href="#Node"><code>Node</code></a> | 
| 799 |  | interface.</p> | 
| 800 |  |  | 
| 801 |  | <p>An element type definition represents a definition of the element type. | 
| 802 |  | It is corresponding to the element type declaration in <abbr>DTD</abbr>. | 
| 803 |  | However, an | 
| 804 |  | <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> node | 
| 805 |  | does not represent the element type definition in <abbr>DTD</abbr> itself. | 
| 806 |  | Even if there are more than one element type declarations for an element type | 
| 807 |  | in <abbr>DTD</abbr>, the result <abbr>DOM</abbr> will contain only an | 
| 808 |  | <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> | 
| 809 |  | node for that element type.  In addition, if there are attribute definition | 
| 810 |  | declarations for an element type, even when there is no element type | 
| 811 |  | declaration for that element type, the <abbr>DOM</abbr> will contain an | 
| 812 |  | <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> | 
| 813 |  | node for that element type.</p> | 
| 814 |  |  | 
| 815 | <p>The <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> | <p>The <a href="#ElementTypeDefinition"><code>ElementTypeDefinition</code></a> | 
| 816 | interface <em class=rfc2119>MUST</em> be implemented as following:</p> | interface <em class=rfc2119>MUST</em> be implemented as following:</p> | 
| 817 | <pre class=idl><code>interface <dfn id=ElementTypeDefinition><code>ElementTypeDefinition</code></dfn> : <a href="#Node">Node</a> { | <pre class=idl><code>interface <dfn id=ElementTypeDefinition><code>ElementTypeDefinition</code></dfn> : <a href="#Node">Node</a> { | 
| 829 | <div class=section id=section-attributedefinition> | <div class=section id=section-attributedefinition> | 
| 830 | <h3>The <code>AttributeDefinition</code> Interface</h3> | <h3>The <code>AttributeDefinition</code> Interface</h3> | 
| 831 |  |  | 
| 832 |  | <p>The nodes of type | 
| 833 |  | <a href="#ATTRIBUTE_DEFINITION_NODE"><code>ATTRIBUTE_DEFINITION_NODE</code></a> | 
| 834 |  | represents an attribute definition.  Such a node implements the | 
| 835 |  | <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> interface, | 
| 836 |  | which extends the <a href="#Node"><code>Node</code></a> interface.</p> | 
| 837 |  |  | 
| 838 |  | <p>An attribute definition represents a definition of the attribute | 
| 839 |  | associated to an element type.  It is corresponding to the attribute definition | 
| 840 |  | in the attribute list declaration in <abbr>DTD</abbr>.  However, an | 
| 841 |  | <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node does | 
| 842 |  | not represent the attribute definition in <abbr>DTD</abbr> itself.  Even if | 
| 843 |  | there are more than one attribute definitions for an attribute of an element | 
| 844 |  | type in <abbr>DTD</abbr>, the result <abbr>DOM</abbr> will contain only an | 
| 845 |  | <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> node for | 
| 846 |  | that attribute.</p> | 
| 847 |  |  | 
| 848 | <p>The <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> | <p>The <a href="#AttributeDefinition"><code>AttributeDefinition</code></a> | 
| 849 | interface <em class=rfc2119>MUST</em> be implemented as following:</p> | interface <em class=rfc2119>MUST</em> be implemented as following:</p> | 
| 850 | <pre class=idl><code>interface <dfn id=AttributeDefinition><code>AttributeDefinition</code></dfn> : <a href="#Node">Node</a> { | <pre class=idl><code>interface <dfn id=AttributeDefinition><code>AttributeDefinition</code></dfn> : <a href="#Node">Node</a> { | 
| 861 | const unsigned short <a href="#NOTATION_ATTR">NOTATION_ATTR</a> = 9; | const unsigned short <a href="#NOTATION_ATTR">NOTATION_ATTR</a> = 9; | 
| 862 | const unsigned short <a href="#ENUMERATION_ATTR">ENUMERATION_ATTR</a> = 10; | const unsigned short <a href="#ENUMERATION_ATTR">ENUMERATION_ATTR</a> = 10; | 
| 863 | const unsigned short <a href="#UNKNOWN_ATTR">UNKNOWN_ATTR</a> = 11; | const unsigned short <a href="#UNKNOWN_ATTR">UNKNOWN_ATTR</a> = 11; | 
| 864 |  |  | 
| 865 |  | <span class=comment>// <a href="#DefaultValueType">DefaultValueType</a></span> | 
| 866 |  | const unsigned short <a href="#UNKNOWN_DEFAULT">UNKNOWN_DEFAULT</a> = 0; | 
| 867 |  | const unsigned short <a href="#FIXED_DEFAULT">FIXED_DEFAULT</a> = 1; | 
| 868 |  | const unsigned short <a href="#REQUIRED_DEFAULT">REQUIRED_DEFAULT</a> = 2; | 
| 869 |  | const unsigned short <a href="#IMPLIED_DEFAULT">IMPLIED_DEFAULT</a> = 3; | 
| 870 |  | const unsigned short <a href="#EXPLICIT_DEFAULT">EXPLICIT_DEFAULT</a> = 4; | 
| 871 |  |  | 
| 872 | readonly attribute <a href="#ElementTypeDefinition">ElementTypeDefinition</a> <a href="#ownerElementTypeDefinition">ownerElementTypeDefinition</a>; | readonly attribute <a href="#ElementTypeDefinition">ElementTypeDefinition</a> <a href="#ownerElementTypeDefinition">ownerElementTypeDefinition</a>; | 
| 873 |  |  | 
| 1069 |  |  | 
| 1070 | </div> | </div> | 
| 1071 |  |  | 
|  | <div class=section id=section-documenttype> |  | 
|  | <h3>Modifications to the <code id=DocumentType>DocumentType</code> |  | 
|  | Interface</h3> |  | 
|  |  |  | 
|  | <p>A <a href="#DocumentType"><code>DocumentType</code></a> interface |  | 
|  | <em class=rfc2119>MAY</em> contain zero or more |  | 
|  | <a href="#ProcessingInstruction"><code>ProcessingInstruction</code></a> |  | 
|  | nodes in the <code>NodeList</code> object contained in the |  | 
|  | <code>childNodes</code> attribute of the |  | 
|  | <a href="#DocumentType"><code>DocumentType</code></a> node.</p> |  | 
|  |  |  | 
|  | <p>If the <a href="#DocumentType"><code>DocumentType</code></a> node is created |  | 
|  | during the process to create a <abbr>DOM</abbr> from an <abbr>XML</abbr> |  | 
|  | document, the <code>NodeList</code> object in the <code>childNodes</code> |  | 
|  | object <em class=rfc2119>MUST</em> contains the |  | 
|  | <a href="#ProcessingInstruction"><code>ProcessingInstruction</code></a> |  | 
|  | nodes representing the processing instructions in the document type |  | 
|  | definition of the document processed <span class=ed>@@ ref</span> by |  | 
|  | the <abbr>XML</abbr> processor.  If the |  | 
|  | <a href="#DocumentType"><code>DocumentType</code></a> node is marked |  | 
|  | as read$B!>(Bonly, then all the child nodes <em class=rfc2119>MUST</em> |  | 
|  | also be marked as read$B!>(Bonly.</p> |  | 
|  |  |  | 
|  | <p>If a <a href="#DocumentType"><code>DocumentType</code></a> node is created |  | 
|  | from a document type declaration information item <span class=ed>@@ ref</span>, |  | 
|  | the <code>NodeList</code> object in the <code>childNodes</code> attribute |  | 
|  | of the node <em class=rfc2119>MUST</em> contain the |  | 
|  | <a href="#ProcessingInstruction"><code>ProcessingInstruction</code></a> nodes |  | 
|  | created from the processing instruction information items in the list in the |  | 
|  | [children] property of the document type declaration item in the same |  | 
|  | order.</p> |  | 
|  |  |  | 
|  | <p>If a <a href="#DocumentType"><code>DocumentType</code></a> node is mapped to |  | 
|  | a document type declaration information item, the list in the [children] |  | 
|  | property <em class=rfc2119>MUST</em> contain the processng instruction |  | 
|  | information items created from the |  | 
|  | <a href="#ProcessingInstruction"><code>ProcessingInstruction</code></a> nodes |  | 
|  | in the <code>NodeList</code> object in the <code>childNodes</code> attribute |  | 
|  | of the <a href="#DocumentType"><code>DocumentType</code></a> node.</p> |  | 
|  |  |  | 
|  | <p>The implementation of the |  | 
|  | <a href="#DocumentType"><code>DocumentType</code></a> interface |  | 
|  | <em class=rfc2119>MUST</em> be modified as following:</p> |  | 
|  | <pre class=idl><code>// Modifications to the DocumentType interface |  | 
|  | attribute DOMString <a href="#publicId">publicId</a>; |  | 
|  | attribute DOMString <a href="#systemId">systemId</a>; |  | 
|  |  |  | 
|  | attribute DOMString <a href="#internalSubset">internalSubset</a>; |  | 
|  | </code></pre> |  | 
|  |  |  | 
|  | <p>The <code id=publicId>publicId</code> attribute and the |  | 
|  | <code id=systemId>systemId</code> attribute of |  | 
|  | <a href="#DocumentType"><code>DocumentType</code></a>, |  | 
|  | <a href="#Entity"><code>Entity</code></a>, and |  | 
|  | <a href="#Notation"><code>Notation</code></a> interfaces are no longer |  | 
|  | read$B!>(Bonly.</p> |  | 
|  |  |  | 
|  | <p>On setting, the attribute <em class=rfc2119>MUST</em> raise a |  | 
|  | <code>NO_MODIFICATION_ALLOWED_ERR</code> <span class=ed>@@ ref</span> |  | 
|  | exception if the node is read$B!>(Bonly <span class=ed>@@ ref</span>. |  | 
|  | Otherwise, it <em class=rfc2119>MUST</em> set the specified value as the value |  | 
|  | associated to the attribute.  No normalization, relative reference resolution, |  | 
|  | or lexical validation is performed. <span class=ed>@@ If the new |  | 
|  | value is <code>null</code>, ...</span></p> |  | 
|  |  |  | 
|  | <div class="note memo"> |  | 
|  | <p>Setting an invalid identifier might make the node unserializable. |  | 
|  | Setting a public identifier while leaveing system identifier unspecified |  | 
|  | would also make the <a href="#DocumentType"><code>DocumentType</code></a> |  | 
|  | or <a href="#Entity"><code>Entity</code></a> node unserializable.</p> |  | 
|  | </div> |  | 
|  |  |  | 
|  | <div class=ed> |  | 
|  | <p>ISSUE: In HTML5, Firefox 1.5, and Opera 9, not specifying public or system identifier results in empty strings.</p> |  | 
|  | </div> |  | 
|  |  |  | 
|  | <p>The <code id=internalSubset>internalSubset</code> attribute of the |  | 
|  | <a href="#DocumentType"><code>DocumentType</code></a> interface is no longer |  | 
|  | read$B!>(Bonly.</p> |  | 
|  |  |  | 
|  | <p>On setting, the attribute <em class=rfc2119>MUST</em> raise a |  | 
|  | <code>NO_MODIFICATION_ALLOWED_ERR</code> <span class=ed>@@ ref</span> |  | 
|  | exception if the node is read$B!>(Bonly <span class=ed>@@ ref</span>. |  | 
|  | Otherwise, it <em class=rfc2119>MUST</em> set the specified value as the value |  | 
|  | associated to the attribute.  No normalization, or lexical validation is |  | 
|  | performed. <span class=ed>@@ If the new value is <code>null</code>, |  | 
|  | ...</span></p> |  | 
|  |  |  | 
|  | </div> |  | 
|  |  |  | 
| 1072 | </div> | </div> | 
| 1073 |  |  | 
| 1074 |  |  |